3458 lines
146 KiB
Plaintext
3458 lines
146 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b2cd2177",
|
||
"metadata": {},
|
||
"source": [
|
||
"Players dataset creation\n",
|
||
"\n",
|
||
"The Fantacalcio players list is manually downloaded from https://www.fantacalcio.it/quotazioni-fantacalcio\n",
|
||
"\n",
|
||
"Here, the players database is generated, by merging the Fantacalcio list to stats downloaded from http://fbref.com"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "7c65df92",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5ab35d0c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Load fbref data for outfield players and goalkeepers.\n",
|
||
"\n",
|
||
"Generate fbref player list, adding player surname (with special characters replaced to normal ones)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "b2d7073e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"rcsv = pd.read_csv('fbref_data/outfield_players.csv') \n",
|
||
"outfield_players = pd.DataFrame(rcsv)\n",
|
||
"\n",
|
||
"rcsv = pd.read_csv('fbref_data/keepers_players.csv') \n",
|
||
"keeper_players = pd.DataFrame(rcsv)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "667970f6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>player</th>\n",
|
||
" <th>team</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Francesco Acerbi</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Yacine Adli</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Michel Aebischer</td>\n",
|
||
" <td>Bologna</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Jean-Daniel Akpa-Akpro</td>\n",
|
||
" <td>Monza</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Luis Alberto</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>482</th>\n",
|
||
" <td>Alessandro Sorrentino</td>\n",
|
||
" <td>Monza</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>483</th>\n",
|
||
" <td>Marco Sportiello</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>484</th>\n",
|
||
" <td>Wojciech Szczęsny</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>485</th>\n",
|
||
" <td>Pietro Terracciano</td>\n",
|
||
" <td>Fiorentina</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>486</th>\n",
|
||
" <td>Stefano Turati</td>\n",
|
||
" <td>Frosinone</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>487 rows × 2 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" player team\n",
|
||
"0 Francesco Acerbi Inter\n",
|
||
"1 Yacine Adli Milan\n",
|
||
"2 Michel Aebischer Bologna\n",
|
||
"3 Jean-Daniel Akpa-Akpro Monza\n",
|
||
"4 Luis Alberto Lazio\n",
|
||
".. ... ...\n",
|
||
"482 Alessandro Sorrentino Monza\n",
|
||
"483 Marco Sportiello Milan\n",
|
||
"484 Wojciech Szczęsny Juventus\n",
|
||
"485 Pietro Terracciano Fiorentina\n",
|
||
"486 Stefano Turati Frosinone\n",
|
||
"\n",
|
||
"[487 rows x 2 columns]"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"players = pd.concat( [ outfield_players[['player', 'team']], keeper_players[['player', 'team']] ], axis = 0, ignore_index = True)\n",
|
||
"\n",
|
||
"keepers_ID = len(outfield_players)\n",
|
||
"\n",
|
||
"players"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "e1e64596",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import unicodedata\n",
|
||
"\n",
|
||
"def normalize_name(input_str):\n",
|
||
" nfkd_form = unicodedata.normalize('NFKD', input_str)\n",
|
||
" only_ascii = nfkd_form.encode('ASCII', 'ignore')\n",
|
||
" return only_ascii.decode('utf-8')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "3078d6f3",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"players['surname'] = players['player']\n",
|
||
"players['initial'] = players['player']\n",
|
||
"\n",
|
||
"for i in range(players.shape[0]):\n",
|
||
" players['surname'][i] = players['surname'][i].split(' ')[-1]\n",
|
||
" players['surname'][i] = normalize_name(players['surname'][i]).replace('\\'', '')\n",
|
||
" \n",
|
||
" \n",
|
||
" players['initial'][i] = players['player'][i][0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "ffd6091c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" player surname\n",
|
||
"0 Francesco Acerbi Acerbi\n",
|
||
"1 Yacine Adli Adli\n",
|
||
"2 Michel Aebischer Aebischer\n",
|
||
"3 Jean-Daniel Akpa-Akpro Akpa-Akpro\n",
|
||
"4 Luis Alberto Alberto\n",
|
||
"5 Pontus Almqvist Almqvist\n",
|
||
"6 Lorenzo Amatucci Amatucci\n",
|
||
"7 Bruno Amione Amione\n",
|
||
"8 Felipe Anderson Anderson\n",
|
||
"9 Houssem Aouar Aouar\n",
|
||
"10 Marko Arnautović Arnautovic\n",
|
||
"11 Kristjan Asllani Asllani\n",
|
||
"12 Tommaso Augello Augello\n",
|
||
"13 Yann Aurel Bisseck Bisseck\n",
|
||
"14 Sardar Azmoun Azmoun\n",
|
||
"15 Paulo Azzi Azzi\n",
|
||
"16 Oussama El Azzouzi Azzouzi\n",
|
||
"17 Milan Badelj Badelj\n",
|
||
"18 Jaime Báez Baez\n",
|
||
"19 Nedim Bajrami Bajrami\n",
|
||
"20 Mitchel Bakker Bakker\n",
|
||
"21 Tommaso Baldanzi Baldanzi\n",
|
||
"22 Lameck Banda Banda\n",
|
||
"23 Mattia Bani Bani\n",
|
||
"24 Antonín Barák Barak\n",
|
||
"25 Nicolò Barella Barella\n",
|
||
"26 Enzo Barrenechea Barrenechea\n",
|
||
"27 Davide Bartesaghi Bartesaghi\n",
|
||
"28 Federico Baschirotto Baschirotto\n",
|
||
"29 Alessandro Bastoni Bastoni\n",
|
||
"30 Simone Bastoni Bastoni\n",
|
||
"31 Raoul Bellanova Bellanova\n",
|
||
"32 Andrea Belotti Belotti\n",
|
||
"33 Lucas Beltrán Beltran\n",
|
||
"34 Domenico Berardi Berardi\n",
|
||
"35 Bartosz Bereszyński Bereszynski\n",
|
||
"36 Etrit Berisha Berisha\n",
|
||
"37 Victor Bernth Kristiansen Kristiansen\n",
|
||
"38 Beto Beto\n",
|
||
"39 Sam Beukema Beukema\n",
|
||
"40 Jaka Bijol Bijol\n",
|
||
"41 Cristiano Biraghi Biraghi\n",
|
||
"42 Davide Biraschi Biraschi\n",
|
||
"43 Samuele Birindelli Birindelli\n",
|
||
"44 Alexis Blin Blin\n",
|
||
"45 Emil Bohinen Bohinen\n",
|
||
"46 Daniel Boloca Boloca\n",
|
||
"47 Giacomo Bonaventura Bonaventura\n",
|
||
"48 Federico Bonazzoli Bonazzoli\n",
|
||
"49 Warren Bondo Bondo\n",
|
||
"50 Gennaro Borrelli Borrelli\n",
|
||
"51 Erik Botheim Botheim\n",
|
||
"52 Mehdi Bourabia Bourabia\n",
|
||
"53 Edoardo Bove Bove\n",
|
||
"54 Domagoj Bradarić Bradaric\n",
|
||
"55 Josip Brekalo Brekalo\n",
|
||
"56 Gleison Bremer Bremer\n",
|
||
"57 Marco Brescianini Brescianini\n",
|
||
"58 Alessandro Buongiorno Buongiorno\n",
|
||
"59 Rareș-Cătălin Burnete Burnete\n",
|
||
"60 Juan Cabal Cabal\n",
|
||
"61 Jovane Cabral Cabral\n",
|
||
"62 Liberato Cacace Cacace\n",
|
||
"63 Jens Cajuste Cajuste\n",
|
||
"64 Davide Calabria Calabria\n",
|
||
"65 Riccardo Calafiori Calafiori\n",
|
||
"66 Luca Caldirola Caldirola\n",
|
||
"67 Hakan Çalhanoğlu Calhanoglu\n",
|
||
"68 Nicolò Cambiaghi Cambiaghi\n",
|
||
"69 Andrea Cambiaso Cambiaso\n",
|
||
"70 Matteo Cancellieri Cancellieri\n",
|
||
"71 Antonio Candreva Candreva\n",
|
||
"72 Luigi Canotto Canotto\n",
|
||
"73 Gianluca Caprari Caprari\n",
|
||
"74 Elia Caprile Caprile\n",
|
||
"75 Francesco Caputo Caputo\n",
|
||
"76 Andrea Carboni Carboni\n",
|
||
"77 Valentin Carboni Carboni\n",
|
||
"78 Carlos Carlos\n",
|
||
"79 Marco Carnesecchi Carnesecchi\n",
|
||
"80 Nicolò Casale Casale\n",
|
||
"81 Giuseppe Caso Caso\n",
|
||
"82 Valentín Castellanos Castellanos\n",
|
||
"83 Samu Castillejo Castillejo\n",
|
||
"84 Danilo Cataldi Cataldi\n",
|
||
"85 Emil Ceide Ceide\n",
|
||
"86 Zeki Çelik Celik\n",
|
||
"87 Michele Cerofolini Cerofolini\n",
|
||
"88 Walid Cheddira Cheddira\n",
|
||
"89 Federico Chiesa Chiesa\n",
|
||
"90 Oliver Christensen Christensen\n",
|
||
"91 Samuel Chukwueze Chukwueze\n",
|
||
"92 Patrick Ciurria Ciurria\n",
|
||
"93 Lorenzo Colombo Colombo\n",
|
||
"94 Andrea Colpani Colpani\n",
|
||
"95 Andrea Consigli Consigli\n",
|
||
"96 Diego Coppola Coppola\n",
|
||
"97 Tommaso Corazza Corazza\n",
|
||
"98 Lassana Coulibaly Coulibaly\n",
|
||
"99 Mamadou Coulibaly Coulibaly\n",
|
||
"100 Alessio Cragno Cragno\n",
|
||
"101 Bryan Cristante Cristante\n",
|
||
"102 Juan Cuadrado Cuadrado\n",
|
||
"103 Marvin Cuni Cuni\n",
|
||
"104 Danilo D'Ambrosio DAmbrosio\n",
|
||
"105 Flavius Daniliuc Daniliuc\n",
|
||
"106 Danilo Danilo\n",
|
||
"107 Matteo Darmian Darmian\n",
|
||
"108 Paweł Dawidowicz Dawidowicz\n",
|
||
"109 Charles De Ketelaere Ketelaere\n",
|
||
"110 Lorenzo De Silvestri Silvestri\n",
|
||
"111 Koni De Winter Winter\n",
|
||
"112 Grégoire Defrel Defrel\n",
|
||
"113 Alessandro Deiola Deiola\n",
|
||
"114 Mattia Destro Destro\n",
|
||
"115 Federico Di Francesco Francesco\n",
|
||
"116 Michele Di Gregorio Gregorio\n",
|
||
"117 Giovanni Di Lorenzo Lorenzo\n",
|
||
"118 Alessandro Di Pardo Pardo\n",
|
||
"119 Boulaye Dia Dia\n",
|
||
"120 Federico Dimarco Dimarco\n",
|
||
"121 Berat Djimsiti Djimsiti\n",
|
||
"122 Dodô Dodo\n",
|
||
"123 Josh Doig Doig\n",
|
||
"124 Nicolás Domínguez Dominguez\n",
|
||
"125 Patrick Dorgu Dorgu\n",
|
||
"126 Alberto Dossena Dossena\n",
|
||
"127 Radu Drăgușin Dragusin\n",
|
||
"128 Ondrej Duda Duda\n",
|
||
"129 Denzel Dumfries Dumfries\n",
|
||
"130 Alfred Duncan Duncan\n",
|
||
"131 Paulo Dybala Dybala\n",
|
||
"132 Festy Ebosele Ebosele\n",
|
||
"133 Enzo Ebosse Ebosse\n",
|
||
"134 Tyronne Ebuehi Ebuehi\n",
|
||
"135 Éderson Ederson\n",
|
||
"136 Emmanuel Ekong Ekong\n",
|
||
"137 Caleb Ekuban Ekuban\n",
|
||
"138 Elif Elmas Elmas\n",
|
||
"139 Martin Erlic Erlic\n",
|
||
"140 Giovanni Fabbian Fabbian\n",
|
||
"141 Nicolò Fagioli Fagioli\n",
|
||
"142 Wladimiro Falcone Falcone\n",
|
||
"143 Davide Faraoni Faraoni\n",
|
||
"144 Federico Fazio Fazio\n",
|
||
"145 Jacopo Fazzini Fazzini\n",
|
||
"146 Lewis Ferguson Ferguson\n",
|
||
"147 João Ferreira Ferreira\n",
|
||
"148 Alessandro Florenzi Florenzi\n",
|
||
"149 Michael Folorunsho Folorunsho\n",
|
||
"150 Davide Frattesi Frattesi\n",
|
||
"151 Morten Frendrup Frendrup\n",
|
||
"152 Remo Freuler Freuler\n",
|
||
"153 Roberto Gagliardini Gagliardini\n",
|
||
"154 Antonino Gallo Gallo\n",
|
||
"155 Luca Garritano Garritano\n",
|
||
"156 Federico Gatti Gatti\n",
|
||
"157 Francesco Gelli Gelli\n",
|
||
"158 Valentin Gendrey Gendrey\n",
|
||
"159 Gvidas Gineitis Gineitis\n",
|
||
"160 Olivier Giroud Giroud\n",
|
||
"161 Edoardo Goldaniga Goldaniga\n",
|
||
"162 Joan Gonzàlez Gonzalez\n",
|
||
"163 Nicolás González Gonzalez\n",
|
||
"164 Alberto Grassi Grassi\n",
|
||
"165 Mattéo Guendouzi Guendouzi\n",
|
||
"166 Axel Guessand Guessand\n",
|
||
"167 Albert Guðmundsson Gumundsson\n",
|
||
"168 Emmanuel Gyasi Gyasi\n",
|
||
"169 Norbert Gyömbér Gyomber\n",
|
||
"170 Nicolas Haas Haas\n",
|
||
"171 Abdou Harroui Harroui\n",
|
||
"172 Hans Hateboer Hateboer\n",
|
||
"173 Pantelis Hatzidiakos Hatzidiakos\n",
|
||
"174 Silvan Hefti Hefti\n",
|
||
"175 Liam Henderson Henderson\n",
|
||
"176 Matheus Henrique Henrique\n",
|
||
"177 Thomas Henry Henry\n",
|
||
"178 Theo Hernández Hernandez\n",
|
||
"179 Isak Hien Hien\n",
|
||
"180 Emil Holm Holm\n",
|
||
"181 Martin Hongla Hongla\n",
|
||
"182 Sydney van Hooijdonk Hooijdonk\n",
|
||
"183 Elseid Hysaj Hysaj\n",
|
||
"184 Jonathan Ikone Ikone\n",
|
||
"185 Chukwubuikem Ikwuemesi Ikwuemesi\n",
|
||
"186 Ivan Ilić Ilic\n",
|
||
"187 Samuel Iling-Junior Iling-Junior\n",
|
||
"188 Ciro Immobile Immobile\n",
|
||
"189 Gino Infantino Infantino\n",
|
||
"190 Gustav Isaksen Isaksen\n",
|
||
"191 Ardian Ismajli Ismajli\n",
|
||
"192 Armando Izzo Izzo\n",
|
||
"193 Filip Jagiełło Jagieo\n",
|
||
"194 Jakub Jankto Jankto\n",
|
||
"195 Juan Jesus Jesus\n",
|
||
"196 Luka Jović Jovic\n",
|
||
"197 Mohamed Kaba Kaba\n",
|
||
"198 Christian Kabasele Kabasele\n",
|
||
"199 Pierre Kalulu Kalulu\n",
|
||
"200 Daichi Kamada Kamada\n",
|
||
"201 Hassane Kamara Kamara\n",
|
||
"202 Yann Karamoh Karamoh\n",
|
||
"203 Jesper Karlsson Karlsson\n",
|
||
"204 Rick Karsdorp Karsdorp\n",
|
||
"205 Grigoris Kastanos Kastanos\n",
|
||
"206 Michael Kayode Kayode\n",
|
||
"207 Moise Kean Kean\n",
|
||
"208 Simon Kjær Kjr\n",
|
||
"209 Davy Klaassen Klaassen\n",
|
||
"210 Sead Kolašinac Kolasinac\n",
|
||
"211 Teun Koopmeiners Koopmeiners\n",
|
||
"212 Filip Kostić Kostic\n",
|
||
"213 Christian Kouamé Kouame\n",
|
||
"214 Viktor Kovalenko Kovalenko\n",
|
||
"215 Thomas Kristensen Kristensen\n",
|
||
"216 Nikola Krstović Krstovic\n",
|
||
"217 Rade Krunić Krunic\n",
|
||
"218 Berkan Kutlu Kutlu\n",
|
||
"219 Khvicha Kvaratskhelia Kvaratskhelia\n",
|
||
"220 Giorgi Kvernadze Kvernadze\n",
|
||
"221 Giorgos Kyriakopoulos Kyriakopoulos\n",
|
||
"222 Armand Lauriente Lauriente\n",
|
||
"223 Valentino Lazaro Lazaro\n",
|
||
"224 Darko Lazović Lazovic\n",
|
||
"225 Manuel Lazzari Lazzari\n",
|
||
"226 Rafael Leão Leao\n",
|
||
"227 Jesper Lindstrøm Lindstrm\n",
|
||
"228 Karol Linetty Linetty\n",
|
||
"229 Pol Lirola Lirola\n",
|
||
"230 Diego Llorente Llorente\n",
|
||
"231 Stanislav Lobotka Lobotka\n",
|
||
"232 Manuel Locatelli Locatelli\n",
|
||
"233 Ruben Loftus-Cheek Loftus-Cheek\n",
|
||
"234 Ademola Lookman Lookman\n",
|
||
"235 Maxime Lopez Lopez\n",
|
||
"236 Maxime Lopez Lopez\n",
|
||
"237 Matteo Lovato Lovato\n",
|
||
"238 Sandi Lovrić Lovric\n",
|
||
"239 Lorenzo Lucca Lucca\n",
|
||
"240 Jhon Lucumí Lucumi\n",
|
||
"241 José Luis Palomino Palomino\n",
|
||
"242 Romelu Lukaku Lukaku\n",
|
||
"243 Sebastiano Luperto Luperto\n",
|
||
"244 Charalambos Lykogiannis Lykogiannis\n",
|
||
"245 Giulio Maggiore Maggiore\n",
|
||
"246 Giangiacomo Magnani Magnani\n",
|
||
"247 Mike Maignan Maignan\n",
|
||
"248 Antoine Makoumbou Makoumbou\n",
|
||
"249 Youssef Maleh Maleh\n",
|
||
"250 Ruslan Malinovskyi Malinovskyi\n",
|
||
"251 Gianluca Mancini Mancini\n",
|
||
"252 Rolando Mandragora Mandragora\n",
|
||
"253 Riccardo Marchizza Marchizza\n",
|
||
"254 Gian Marco Ferrari Ferrari\n",
|
||
"255 Pablo Marí Mari\n",
|
||
"256 Mirko Marić Maric\n",
|
||
"257 Răzvan Marin Marin\n",
|
||
"258 Agustín Martegani Martegani\n",
|
||
"259 Aarón Martín Martin\n",
|
||
"260 Josep Martinez Martinez\n",
|
||
"261 Lautaro Martínez Martinez\n",
|
||
"262 Lucas Martínez Quarta Quarta\n",
|
||
"263 Adam Marušić Marusic\n",
|
||
"264 Alan Matturro Matturro\n",
|
||
"265 Luca Mazzitelli Mazzitelli\n",
|
||
"266 Pasquale Mazzocchi Mazzocchi\n",
|
||
"267 Jordi Mboula Mboula\n",
|
||
"268 Weston McKennie McKennie\n",
|
||
"269 Arthur Melo Melo\n",
|
||
"270 Alex Meret Meret\n",
|
||
"271 Junior Messias Messias\n",
|
||
"272 Nikola Milenković Milenkovic\n",
|
||
"273 Arkadiusz Milik Milik\n",
|
||
"274 Vanja Milinković-Savić Milinkovic-Savic\n",
|
||
"275 Aleksei Miranchuk Miranchuk\n",
|
||
"276 Kevin Miranda Miranda\n",
|
||
"277 Fabio Miretti Miretti\n",
|
||
"278 Filippo Missori Missori\n",
|
||
"279 Henrikh Mkhitaryan Mkhitaryan\n",
|
||
"280 Ilario Monterisi Monterisi\n",
|
||
"281 Lorenzo Montipò Montipo\n",
|
||
"282 Nikola Moro Moro\n",
|
||
"283 Dany Mota Mota\n",
|
||
"284 Samuele Mulattieri Mulattieri\n",
|
||
"285 Luis Muriel Muriel\n",
|
||
"286 Yunus Musah Musah\n",
|
||
"287 Juan Musso Musso\n",
|
||
"288 Obite N'Dicka NDicka\n",
|
||
"289 Nahitan Nández Nandez\n",
|
||
"290 Natan Natan\n",
|
||
"291 Michel Ndary Adopo Adopo\n",
|
||
"292 Dan Ndoye Ndoye\n",
|
||
"293 Cyril Ngonge Ngonge\n",
|
||
"294 Rasmus Nissen Nissen\n",
|
||
"295 M'Bala Nzola Nzola\n",
|
||
"296 Adam Obert Obert\n",
|
||
"297 Guillermo Ochoa Ochoa\n",
|
||
"298 Noah Okafor Okafor\n",
|
||
"299 Caleb Okoli Okoli\n",
|
||
"300 Mathías Olivera Olivera\n",
|
||
"301 Gaetano Oristanio Oristanio\n",
|
||
"302 Riccardo Orsolini Orsolini\n",
|
||
"303 Victor Osimhen Osimhen\n",
|
||
"304 Remi Oudin Oudin\n",
|
||
"305 Anthony Oyono Oyono\n",
|
||
"306 Simone Pafundi Pafundi\n",
|
||
"307 Riccardo Pagano Pagano\n",
|
||
"308 Leandro Paredes Paredes\n",
|
||
"309 Fabiano Parisi Parisi\n",
|
||
"310 Mario Pašalić Pasalic\n",
|
||
"311 Patric Patric\n",
|
||
"312 Rui Patrício Patricio\n",
|
||
"313 Benjamin Pavard Pavard\n",
|
||
"314 Leonardo Pavoletti Pavoletti\n",
|
||
"315 Martín Payero Payero\n",
|
||
"316 Marcus Pedersen Pedersen\n",
|
||
"317 Pedro Pedro\n",
|
||
"318 Pietro Pellegri Pellegri\n",
|
||
"319 Lorenzo Pellegrini Pellegrini\n",
|
||
"320 Luca Pellegrini Pellegrini\n",
|
||
"321 Pepín Pepin\n",
|
||
"322 Pedro Pereira Pereira\n",
|
||
"323 Roberto Pereyra Pereyra\n",
|
||
"324 Nehuén Pérez Perez\n",
|
||
"325 Mattia Perin Perin\n",
|
||
"326 Samuele Perisan Perisan\n",
|
||
"327 Matteo Pessina Pessina\n",
|
||
"328 Andrea Petagna Petagna\n",
|
||
"329 Giuseppe Pezzella Pezzella\n",
|
||
"330 Roberto Piccoli Piccoli\n",
|
||
"331 Roberto Piccoli Piccoli\n",
|
||
"332 Andrea Pinamonti Pinamonti\n",
|
||
"333 Lorenzo Pirola Pirola\n",
|
||
"334 Tommaso Pobega Pobega\n",
|
||
"335 Paul Pogba Pogba\n",
|
||
"336 Matteo Politano Politano\n",
|
||
"337 Marin Pongračić Pongracic\n",
|
||
"338 Stefan Posch Posch\n",
|
||
"339 Matteo Prati Prati\n",
|
||
"340 Ivan Provedel Provedel\n",
|
||
"341 Christian Pulisic Pulisic\n",
|
||
"342 George Pușcaș Puscas\n",
|
||
"343 Domingos Quina Quina\n",
|
||
"344 Adrien Rabiot Rabiot\n",
|
||
"345 Uroš Račić Racic\n",
|
||
"346 Nemanja Radonjić Radonjic\n",
|
||
"347 Boris Radunović Radunovic\n",
|
||
"348 Hamza Rafia Rafia\n",
|
||
"349 Ylber Ramadani Ramadani\n",
|
||
"350 Luca Ranieri Ranieri\n",
|
||
"351 Filippo Ranocchia Ranocchia\n",
|
||
"352 Giacomo Raspadori Raspadori\n",
|
||
"353 Tijjani Reijnders Reijnders\n",
|
||
"354 Mateo Retegui Retegui\n",
|
||
"355 Samuele Ricci Ricci\n",
|
||
"356 Ricardo Rodríguez Rodriguez\n",
|
||
"357 Alessio Romagnoli Romagnoli\n",
|
||
"358 Simone Romagnoli Romagnoli\n",
|
||
"359 Luka Romero Romero\n",
|
||
"360 Marten de Roon Roon\n",
|
||
"361 Nicolò Rovella Rovella\n",
|
||
"362 Amir Rrahmani Rrahmani\n",
|
||
"363 Ruan Ruan\n",
|
||
"364 Daniele Rugani Rugani\n",
|
||
"365 Matteo Ruggeri Ruggeri\n",
|
||
"366 Mário Rui Rui\n",
|
||
"367 Stefano Sabelli Sabelli\n",
|
||
"368 Alexis Saelemaekers Saelemaekers\n",
|
||
"369 Lazar Samardzic Samardzic\n",
|
||
"370 Junior Sambia Sambia\n",
|
||
"371 Antonio Sanabria Sanabria\n",
|
||
"372 Renato Sanches Sanches\n",
|
||
"373 Alexis Sánchez Sanchez\n",
|
||
"374 Alex Sandro Sandro\n",
|
||
"375 Nicola Sansone Sansone\n",
|
||
"376 Riccardo Saponara Saponara\n",
|
||
"377 Saba Sazonov Sazonov\n",
|
||
"378 Giorgio Scalvini Scalvini\n",
|
||
"379 Gianluca Scamacca Scamacca\n",
|
||
"380 Perr Schuurs Schuurs\n",
|
||
"381 Demba Seck Seck\n",
|
||
"382 Vivaldo Semedo Semedo\n",
|
||
"383 Stefano Sensi Sensi\n",
|
||
"384 Suat Serdar Serdar\n",
|
||
"385 Stephan El Shaarawy Shaarawy\n",
|
||
"386 Eldor Shomurodov Shomurodov\n",
|
||
"387 Steven Shpendi Shpendi\n",
|
||
"388 Marco Silvestri Silvestri\n",
|
||
"389 Giovanni Simeone Simeone\n",
|
||
"390 Leo Skiri Østigård stigard\n",
|
||
"391 Łukasz Skorupski Skorupski\n",
|
||
"392 Chris Smalling Smalling\n",
|
||
"393 Ola Solbakken Solbakken\n",
|
||
"394 Yann Sommer Sommer\n",
|
||
"395 Brandon Soppy Soppy\n",
|
||
"396 Alessandro Sorrentino Sorrentino\n",
|
||
"397 Riccardo Sottil Sottil\n",
|
||
"398 Matìas Soulé Soule\n",
|
||
"399 Leonardo Spinazzola Spinazzola\n",
|
||
"400 Marco Sportiello Sportiello\n",
|
||
"401 Gabriel Strefezza Strefezza\n",
|
||
"402 Kevin Strootman Strootman\n",
|
||
"403 Isaac Success Success\n",
|
||
"404 Ibrahim Sulemana Sulemana\n",
|
||
"405 Tomáš Suslov Suslov\n",
|
||
"406 Wojciech Szczęsny Szczesny\n",
|
||
"407 Przemysław Szymiński Szyminski\n",
|
||
"408 Adrien Tameze Tameze\n",
|
||
"409 Loum Tchaouna Tchaouna\n",
|
||
"410 Filippo Terracciano Terracciano\n",
|
||
"411 Pietro Terracciano Terracciano\n",
|
||
"412 Florian Thauvin Thauvin\n",
|
||
"413 Malick Thiaw Thiaw\n",
|
||
"414 Morten Thorsby Thorsby\n",
|
||
"415 Kristian Thorstvedt Thorstvedt\n",
|
||
"416 Marcus Thuram Thuram\n",
|
||
"417 Jeremy Toljan Toljan\n",
|
||
"418 Rafael Tolói Toloi\n",
|
||
"419 Fikayo Tomori Tomori\n",
|
||
"420 Ahmed Touba Touba\n",
|
||
"421 Stefano Turati Turati\n",
|
||
"422 Kacper Urbanski Urbanski\n",
|
||
"423 Johan Vásquez Vasquez\n",
|
||
"424 Matías Vecino Vecino\n",
|
||
"425 Lorenzo Venuti Venuti\n",
|
||
"426 Simone Verdi Verdi\n",
|
||
"427 Samuele Vignato Vignato\n",
|
||
"428 Matías Viña Vina\n",
|
||
"429 Nicolas Viola Viola\n",
|
||
"430 Mattia Viti Viti\n",
|
||
"431 Dušan Vlahović Vlahovic\n",
|
||
"432 Nikola Vlašić Vlasic\n",
|
||
"433 Mërgim Vojvoda Vojvoda\n",
|
||
"434 Cristian Volpato Volpato\n",
|
||
"435 Stefan de Vrij Vrij\n",
|
||
"436 Walace Walace\n",
|
||
"437 Sebastian Walukiewicz Walukiewicz\n",
|
||
"438 Timothy Weah Weah\n",
|
||
"439 Mateusz Wieteska Wieteska\n",
|
||
"440 Kenan Yıldız Yldz\n",
|
||
"441 Mattia Zaccagni Zaccagni\n",
|
||
"442 Nicola Zalewski Zalewski\n",
|
||
"443 Andre-Frank Zambo Anguissa Anguissa\n",
|
||
"444 Duván Zapata Zapata\n",
|
||
"445 Duván Zapata Zapata\n",
|
||
"446 Gabriele Zappa Zappa\n",
|
||
"447 Davide Zappacosta Zappacosta\n",
|
||
"448 Oier Zarraga Zarraga\n",
|
||
"449 Jordan Zemura Zemura\n",
|
||
"450 Alessio Zerbin Zerbin\n",
|
||
"451 Piotr Zieliński Zielinski\n",
|
||
"452 David Zima Zima\n",
|
||
"453 Joshua Zirkzee Zirkzee\n",
|
||
"454 Zito Zito\n",
|
||
"455 Nadir Zortea Zortea\n",
|
||
"456 Milan Đurić uric\n",
|
||
"457 Mateusz Łęgowski egowski\n",
|
||
"458 Etrit Berisha Berisha\n",
|
||
"459 Elia Caprile Caprile\n",
|
||
"460 Marco Carnesecchi Carnesecchi\n",
|
||
"461 Michele Cerofolini Cerofolini\n",
|
||
"462 Oliver Christensen Christensen\n",
|
||
"463 Andrea Consigli Consigli\n",
|
||
"464 Alessio Cragno Cragno\n",
|
||
"465 Michele Di Gregorio Gregorio\n",
|
||
"466 Wladimiro Falcone Falcone\n",
|
||
"467 Mike Maignan Maignan\n",
|
||
"468 Josep Martinez Martinez\n",
|
||
"469 Alex Meret Meret\n",
|
||
"470 Vanja Milinković-Savić Milinkovic-Savic\n",
|
||
"471 Lorenzo Montipò Montipo\n",
|
||
"472 Juan Musso Musso\n",
|
||
"473 Guillermo Ochoa Ochoa\n",
|
||
"474 Rui Patrício Patricio\n",
|
||
"475 Mattia Perin Perin\n",
|
||
"476 Samuele Perisan Perisan\n",
|
||
"477 Ivan Provedel Provedel\n",
|
||
"478 Boris Radunović Radunovic\n",
|
||
"479 Marco Silvestri Silvestri\n",
|
||
"480 Łukasz Skorupski Skorupski\n",
|
||
"481 Yann Sommer Sommer\n",
|
||
"482 Alessandro Sorrentino Sorrentino\n",
|
||
"483 Marco Sportiello Sportiello\n",
|
||
"484 Wojciech Szczęsny Szczesny\n",
|
||
"485 Pietro Terracciano Terracciano\n",
|
||
"486 Stefano Turati Turati\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(players[['player', 'surname']].to_string())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9ab06a5c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Replace the surname for some specific players, according to config/name_fix.txt file.\n",
|
||
"\n",
|
||
"This is done for players for which the decoded fbref surname doesn't correspond to Fantacalcio list."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "3e759b1b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Ostigard\n",
|
||
"Augusto\n",
|
||
"Kjaer\n",
|
||
"Djuric\n",
|
||
"Gudmundsson\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>FROM</th>\n",
|
||
" <th>TO</th>\n",
|
||
" <th>TEAM</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>stigard</td>\n",
|
||
" <td>Ostigard</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Min-jae</td>\n",
|
||
" <td>Kim</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Hjlund</td>\n",
|
||
" <td>Hojlund</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Gytkjr</td>\n",
|
||
" <td>Gytkjaer</td>\n",
|
||
" <td>Monza</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Carlos</td>\n",
|
||
" <td>Augusto</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>Mhle</td>\n",
|
||
" <td>Maehle</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>Kjr</td>\n",
|
||
" <td>Kjaer</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>uricic</td>\n",
|
||
" <td>Djuricic</td>\n",
|
||
" <td>Sampdoria</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>uric</td>\n",
|
||
" <td>Djuric</td>\n",
|
||
" <td>Hellas Verona</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>Arthur</td>\n",
|
||
" <td>Cabral</td>\n",
|
||
" <td>Fiorentina</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10</th>\n",
|
||
" <td>Martinez</td>\n",
|
||
" <td>Alvarez</td>\n",
|
||
" <td>Sassuolo</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>11</th>\n",
|
||
" <td>Gumundsson</td>\n",
|
||
" <td>Gudmundsson</td>\n",
|
||
" <td>Genoa</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12</th>\n",
|
||
" <td>Kristensen</td>\n",
|
||
" <td>Nissen</td>\n",
|
||
" <td>Roma</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" FROM TO TEAM\n",
|
||
"0 stigard Ostigard Napoli\n",
|
||
"1 Min-jae Kim Napoli\n",
|
||
"2 Hjlund Hojlund Atalanta\n",
|
||
"3 Gytkjr Gytkjaer Monza\n",
|
||
"4 Carlos Augusto Inter\n",
|
||
"5 Mhle Maehle Atalanta\n",
|
||
"6 Kjr Kjaer Milan\n",
|
||
"7 uricic Djuricic Sampdoria\n",
|
||
"8 uric Djuric Hellas Verona\n",
|
||
"9 Arthur Cabral Fiorentina\n",
|
||
"10 Martinez Alvarez Sassuolo\n",
|
||
"11 Gumundsson Gudmundsson Genoa\n",
|
||
"12 Kristensen Nissen Roma"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"rcsv = pd.read_csv('config/name_fix.txt') \n",
|
||
"name_fix = pd.DataFrame(rcsv)\n",
|
||
"\n",
|
||
"for i in range(name_fix.shape[0]):\n",
|
||
" for j in range(players.shape[0]):\n",
|
||
" if(players['surname'][j].lower() == name_fix['FROM'][i].lower() and players['team'][j].lower() == name_fix['TEAM'][i].lower()):\n",
|
||
" players['surname'][j] = name_fix['TO'][i]\n",
|
||
" print(name_fix['TO'][i])\n",
|
||
"\n",
|
||
"name_fix\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3c686d9f",
|
||
"metadata": {},
|
||
"source": [
|
||
"Load players from Fantacalcio list."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "f96eaaa1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>r</th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>team</th>\n",
|
||
" <th>surname</th>\n",
|
||
" <th>initial</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2428</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>453</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>572</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2814</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4312</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>534</th>\n",
|
||
" <td>6395</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Shpendi S.</td>\n",
|
||
" <td>Empoli</td>\n",
|
||
" <td>Shpendi</td>\n",
|
||
" <td>S</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>535</th>\n",
|
||
" <td>6418</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>536</th>\n",
|
||
" <td>6419</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>537</th>\n",
|
||
" <td>6427</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td>Salernitana</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>538</th>\n",
|
||
" <td>6434</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td></td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>539 rows × 6 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id r name team surname initial\n",
|
||
"0 2428 P Sommer Inter Sommer \n",
|
||
"1 453 P Szczesny Juventus Szczesny \n",
|
||
"2 572 P Meret Napoli Meret \n",
|
||
"3 2814 P Provedel Lazio Provedel \n",
|
||
"4 4312 P Maignan Milan Maignan \n",
|
||
".. ... .. ... ... ... ...\n",
|
||
"534 6395 A Shpendi S. Empoli Shpendi S\n",
|
||
"535 6418 A Burnete Lecce Burnete \n",
|
||
"536 6419 A Corfitzen Lecce Corfitzen \n",
|
||
"537 6427 A Stewart Salernitana Stewart \n",
|
||
"538 6434 A Yildiz Juventus Yildiz \n",
|
||
"\n",
|
||
"[539 rows x 6 columns]"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"fc_data = pd.read_excel('fantacalcio/Quotazioni_Fantacalcio.xlsx', 'Tutti', header = 1)\n",
|
||
"\n",
|
||
"fc_players = fc_data [['Id', 'R', 'Nome', 'Squadra']]\n",
|
||
"\n",
|
||
"fc_players = fc_players.rename(columns = {'Id' : 'id', 'R': 'r', 'Nome' : 'name', 'Squadra' : 'team'})\n",
|
||
"\n",
|
||
"fc_players['surname'] = fc_players['name']\n",
|
||
"fc_players['initial'] = fc_players['name']\n",
|
||
"\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" spl = normalize_name( fc_players['name'][i].replace('\\'', '') ).split(' ')\n",
|
||
" if('.' in spl[-1]):\n",
|
||
" fc_players.loc[i, 'surname'] = spl[-2]\n",
|
||
" fc_players.loc[i, 'initial'] = spl[-1][0]\n",
|
||
" else:\n",
|
||
" fc_players.loc[i, 'surname'] = spl[-1]\n",
|
||
" fc_players.loc[i, 'initial'] = ''\n",
|
||
" \n",
|
||
"fc_players\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d944c720",
|
||
"metadata": {},
|
||
"source": [
|
||
"Associate players from Fantacalcio list to ID for FBref data."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "9c50e4b5",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"fc_players['fb_ID'] = fc_players['id']\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" fc_players.loc[i, 'fb_ID'] = -1\n",
|
||
" \n",
|
||
" for j in range(players.shape[0]):\n",
|
||
" if(fc_players['team'][i].lower() in players['team'][j].lower()):\n",
|
||
" if(fc_players['surname'][i].lower() == players['surname'][j].lower()): \n",
|
||
" # if(fc_players['initial'][i] == '' or fc_players['initial'][i].lower() == players['initial'][j].lower()):\n",
|
||
" if((fc_players['r'][i] == 'P') == (j >= keepers_ID)): # check wether they're a goalkeeper for both FBREF and Fantacalcio\n",
|
||
" fc_players.loc[i, 'fb_ID'] = j\n",
|
||
" \n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4e60fd2e",
|
||
"metadata": {},
|
||
"source": [
|
||
"Print players for which the association failed.\n",
|
||
"\n",
|
||
"Most of them are players who didn't play a single Serie A game this season with their team. If that is the case, and there is data from their previous team, that is taken here.\n",
|
||
"\n",
|
||
"Others are ones for which the FBRef surname doesn't correspond to Fantacalcio one.\n",
|
||
"\n",
|
||
"\n",
|
||
"For example, Cabral is Arthur for FBref.\n",
|
||
"\n",
|
||
"Correction is made in the name_fix code above."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "18f6c5f2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Mirante not found\n",
|
||
"Sepe not found\n",
|
||
"Leali not found\n",
|
||
"Lamanna not found\n",
|
||
"Sommariva not found\n",
|
||
"Pegolo not found\n",
|
||
"Perilli not found\n",
|
||
"Padelli not found\n",
|
||
"Scuffet not found\n",
|
||
"Gollini not found\n",
|
||
"Audero not found\n",
|
||
"Di Gennaro not found\n",
|
||
"Pinsoglio not found\n",
|
||
"Aresti not found\n",
|
||
"Fiorillo not found\n",
|
||
"Rossi F. not found\n",
|
||
"Costil not found\n",
|
||
"Ravaglia F. not found\n",
|
||
"Frattali not found\n",
|
||
"Contini not found\n",
|
||
"Brancolini not found\n",
|
||
"Berardi A. not found\n",
|
||
"Gemello not found\n",
|
||
"Boer not found\n",
|
||
"Bagnolini not found\n",
|
||
"Svilar not found\n",
|
||
"Martinelli T. not found\n",
|
||
"Popa not found\n",
|
||
"Stubljar not found\n",
|
||
"Gori not found\n",
|
||
"Borbei not found\n",
|
||
"Okoye not found\n",
|
||
"Mandas not found\n",
|
||
"Kristensen not found\n",
|
||
"Mina not found\n",
|
||
"Masina not found\n",
|
||
"Djidji not found\n",
|
||
"Tressoldi not found\n",
|
||
"Ehizibue not found\n",
|
||
"Vogliacco not found\n",
|
||
"Gunter not found\n",
|
||
"Soumaoro not found\n",
|
||
"Zanoli not found\n",
|
||
"De Sciglio not found\n",
|
||
"Bonifazi not found\n",
|
||
"Kumbulla not found\n",
|
||
"Haps not found\n",
|
||
"Cittadini not found\n",
|
||
"Dermaku not found\n",
|
||
"Tonelli not found\n",
|
||
"Capradossi not found\n",
|
||
"Bettella not found\n",
|
||
"Amey not found\n",
|
||
"Gila not found\n",
|
||
"Bronn not found\n",
|
||
"Guarino not found\n",
|
||
"Smajlovic not found\n",
|
||
"N'guessan not found\n",
|
||
"Mateus Lusuardi not found\n",
|
||
"Kalaj not found\n",
|
||
"Pierozzi not found\n",
|
||
"Huijsen not found\n",
|
||
"Bonfanti not found\n",
|
||
"Pellegrino not found\n",
|
||
"Comuzzo not found\n",
|
||
"Lindstrom not found\n",
|
||
"Bennacer not found\n",
|
||
"Castrovilli not found\n",
|
||
"Reinier not found\n",
|
||
"Cajuste not found\n",
|
||
"Mancosu not found\n",
|
||
"Machin not found\n",
|
||
"Iling Junior not found\n",
|
||
"Maldini not found\n",
|
||
"Tchatchoua not found\n",
|
||
"Basic not found\n",
|
||
"Gaetano not found\n",
|
||
"Jagiello not found\n",
|
||
"Obiang not found\n",
|
||
"Akpa Akpro not found\n",
|
||
"Hrustic not found\n",
|
||
"Camara E. not found\n",
|
||
"Lulic K. not found\n",
|
||
"Rog not found\n",
|
||
"Nicolussi Caviglia not found\n",
|
||
"Demme not found\n",
|
||
"Faticanti not found\n",
|
||
"Belardinelli not found\n",
|
||
"Lipani not found\n",
|
||
"Joselito not found\n",
|
||
"Legowski not found\n",
|
||
"Ibrahimovic A. not found\n",
|
||
"Toure' E. not found\n",
|
||
"Lapadula not found\n",
|
||
"Abraham not found\n",
|
||
"Deulofeu not found\n",
|
||
"Luvumbo not found\n",
|
||
"Brenner not found\n",
|
||
"Davis K. not found\n",
|
||
"Jovane not found\n",
|
||
"Alvarez A. not found\n",
|
||
"Cruz not found\n",
|
||
"Ake' M. not found\n",
|
||
"Braaf not found\n",
|
||
"Kallon not found\n",
|
||
"Kaio Jorge not found\n",
|
||
"Vivaldo not found\n",
|
||
"Bidaoui not found\n",
|
||
"Corfitzen not found\n",
|
||
"Stewart not found\n",
|
||
"Yildiz not found\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"exceptions = ['pellegrini', 'bastoni', 'kristensen'] # exceptions for such players that have the same surname as others (Berardi A., Luca Pellegrini)\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" if(fc_players['fb_ID'][i] == -1):\n",
|
||
" found = False\n",
|
||
" for j in range(players.shape[0]):\n",
|
||
" if(fc_players['surname'][i].lower() == players['surname'][j].lower()):\n",
|
||
" if(not(players['surname'][j].lower() in exceptions)):\n",
|
||
" if((fc_players['r'][i] == 'P') == (j >= keepers_ID)):\n",
|
||
" fc_players.loc[i, 'fb_ID']= j\n",
|
||
" found = True\n",
|
||
" if(found):\n",
|
||
" print(fc_players['name'][i] + ' from previous team stats')\n",
|
||
" else:\n",
|
||
" print(fc_players['name'][i] + ' not found')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"id": "3b4a36af",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>r</th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>team</th>\n",
|
||
" <th>surname</th>\n",
|
||
" <th>initial</th>\n",
|
||
" <th>fb_ID</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2428</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td></td>\n",
|
||
" <td>481</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>453</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td></td>\n",
|
||
" <td>484</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>572</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td></td>\n",
|
||
" <td>469</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2814</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td></td>\n",
|
||
" <td>477</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4312</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td></td>\n",
|
||
" <td>467</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>534</th>\n",
|
||
" <td>6395</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Shpendi S.</td>\n",
|
||
" <td>Empoli</td>\n",
|
||
" <td>Shpendi</td>\n",
|
||
" <td>S</td>\n",
|
||
" <td>387</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>535</th>\n",
|
||
" <td>6418</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td></td>\n",
|
||
" <td>59</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>536</th>\n",
|
||
" <td>6419</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>537</th>\n",
|
||
" <td>6427</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td>Salernitana</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>538</th>\n",
|
||
" <td>6434</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>539 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id r name team surname initial fb_ID\n",
|
||
"0 2428 P Sommer Inter Sommer 481\n",
|
||
"1 453 P Szczesny Juventus Szczesny 484\n",
|
||
"2 572 P Meret Napoli Meret 469\n",
|
||
"3 2814 P Provedel Lazio Provedel 477\n",
|
||
"4 4312 P Maignan Milan Maignan 467\n",
|
||
".. ... .. ... ... ... ... ...\n",
|
||
"534 6395 A Shpendi S. Empoli Shpendi S 387\n",
|
||
"535 6418 A Burnete Lecce Burnete 59\n",
|
||
"536 6419 A Corfitzen Lecce Corfitzen -1\n",
|
||
"537 6427 A Stewart Salernitana Stewart -1\n",
|
||
"538 6434 A Yildiz Juventus Yildiz -1\n",
|
||
"\n",
|
||
"[539 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"fc_players"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f06afbb6",
|
||
"metadata": {},
|
||
"source": [
|
||
"Populate players dataset with stats from FBref, for outfield players and goalkeepers"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "1d73a312",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\2053436513.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy] = 0\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"#Data for Outfield players\n",
|
||
"columns_to_copy = outfield_players.columns[4:]\n",
|
||
"\n",
|
||
"fc_players[columns_to_copy] = 0\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" if(fc_players['fb_ID'][i] != -1 and fc_players['r'][i] != 'P'):\n",
|
||
" for j in range(columns_to_copy.shape[0]):\n",
|
||
" #fc_players[columns_to_copy[j]][i] = outfield_players[columns_to_copy[j]][fc_players['fb_ID'][i]]\n",
|
||
" fc_players.loc[i, columns_to_copy[j]] = outfield_players.loc[fc_players['fb_ID'][i], columns_to_copy[j]]\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"id": "7acb93e3",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['age', 'birth_year', 'gk_games', 'gk_games_starts', 'gk_minutes',\n",
|
||
" 'gk_goals_against', 'gk_goals_against_per90',\n",
|
||
" 'gk_shots_on_target_against', 'gk_saves', 'gk_save_pct', 'gk_wins',\n",
|
||
" 'gk_ties', 'gk_losses', 'gk_clean_sheets', 'gk_clean_sheets_pct',\n",
|
||
" 'gk_pens_att', 'gk_pens_allowed', 'gk_pens_saved', 'gk_pens_missed',\n",
|
||
" 'minutes_90s', 'gk_free_kick_goals_against',\n",
|
||
" 'gk_corner_kick_goals_against', 'gk_own_goals_against', 'gk_psxg',\n",
|
||
" 'gk_psnpxg_per_shot_on_target_against', 'gk_psxg_net',\n",
|
||
" 'gk_psxg_net_per90', 'gk_passes_completed_launched',\n",
|
||
" 'gk_passes_launched', 'gk_passes_pct_launched', 'gk_passes',\n",
|
||
" 'gk_passes_throws', 'gk_pct_passes_launched', 'gk_passes_length_avg',\n",
|
||
" 'gk_goal_kicks', 'gk_pct_goal_kicks_launched',\n",
|
||
" 'gk_goal_kick_length_avg', 'gk_crosses', 'gk_crosses_stopped',\n",
|
||
" 'gk_crosses_stopped_pct', 'gk_def_actions_outside_pen_area',\n",
|
||
" 'gk_def_actions_outside_pen_area_per90', 'gk_avg_distance_def_actions'],\n",
|
||
" dtype='object')"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"keeper_players.columns[4:]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"id": "eb9127a9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_16756\\127446819.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
|
||
" fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"#Data for Keepers\n",
|
||
"columns_to_copy = keeper_players.columns[4:]\n",
|
||
"\n",
|
||
"fc_players[columns_to_copy[2:]] = 0 # add columns but do not override age and birth_year\n",
|
||
"\n",
|
||
"delta_k = outfield_players.shape[0]\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" if(fc_players['fb_ID'][i] != -1 and fc_players['r'][i] == 'P'):\n",
|
||
" for j in range(columns_to_copy.shape[0]):\n",
|
||
" #fc_players[columns_to_copy[j]][i] = keeper_players[columns_to_copy[j]][fc_players['fb_ID'][i] - delta_k]\n",
|
||
" fc_players.loc[i, columns_to_copy[j]] = keeper_players.loc[fc_players['fb_ID'][i] - delta_k, columns_to_copy[j]]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"id": "da977789",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>r</th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>team</th>\n",
|
||
" <th>surname</th>\n",
|
||
" <th>initial</th>\n",
|
||
" <th>fb_ID</th>\n",
|
||
" <th>age</th>\n",
|
||
" <th>birth_year</th>\n",
|
||
" <th>games</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>gk_passes_length_avg</th>\n",
|
||
" <th>gk_goal_kicks</th>\n",
|
||
" <th>gk_pct_goal_kicks_launched</th>\n",
|
||
" <th>gk_goal_kick_length_avg</th>\n",
|
||
" <th>gk_crosses</th>\n",
|
||
" <th>gk_crosses_stopped</th>\n",
|
||
" <th>gk_crosses_stopped_pct</th>\n",
|
||
" <th>gk_def_actions_outside_pen_area</th>\n",
|
||
" <th>gk_def_actions_outside_pen_area_per90</th>\n",
|
||
" <th>gk_avg_distance_def_actions</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2428</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td></td>\n",
|
||
" <td>481</td>\n",
|
||
" <td>34-287</td>\n",
|
||
" <td>1988</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>29.7</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>20.5</td>\n",
|
||
" <td>27.3</td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>0.33</td>\n",
|
||
" <td>9.6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>453</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td></td>\n",
|
||
" <td>484</td>\n",
|
||
" <td>33-165</td>\n",
|
||
" <td>1990</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>33.2</td>\n",
|
||
" <td>16</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>45.8</td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.7</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.25</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>572</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td></td>\n",
|
||
" <td>469</td>\n",
|
||
" <td>26-192</td>\n",
|
||
" <td>1997</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>24.1</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>20.5</td>\n",
|
||
" <td>53</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.9</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>1.33</td>\n",
|
||
" <td>17.2</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2814</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td></td>\n",
|
||
" <td>477</td>\n",
|
||
" <td>29-197</td>\n",
|
||
" <td>1994</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>28.8</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>27.6</td>\n",
|
||
" <td>32.3</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>4.8</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1.17</td>\n",
|
||
" <td>16.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4312</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td></td>\n",
|
||
" <td>467</td>\n",
|
||
" <td>28-089</td>\n",
|
||
" <td>1995</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>29.2</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>60.9</td>\n",
|
||
" <td>47.0</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>23.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>0.75</td>\n",
|
||
" <td>9.8</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>534</th>\n",
|
||
" <td>6395</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Shpendi S.</td>\n",
|
||
" <td>Empoli</td>\n",
|
||
" <td>Shpendi</td>\n",
|
||
" <td>S</td>\n",
|
||
" <td>387</td>\n",
|
||
" <td>20-134</td>\n",
|
||
" <td>2003</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>535</th>\n",
|
||
" <td>6418</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td></td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>19-242</td>\n",
|
||
" <td>2004</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>536</th>\n",
|
||
" <td>6419</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>537</th>\n",
|
||
" <td>6427</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td>Salernitana</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>538</th>\n",
|
||
" <td>6434</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>539 rows × 158 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id r name team surname initial fb_ID age \\\n",
|
||
"0 2428 P Sommer Inter Sommer 481 34-287 \n",
|
||
"1 453 P Szczesny Juventus Szczesny 484 33-165 \n",
|
||
"2 572 P Meret Napoli Meret 469 26-192 \n",
|
||
"3 2814 P Provedel Lazio Provedel 477 29-197 \n",
|
||
"4 4312 P Maignan Milan Maignan 467 28-089 \n",
|
||
".. ... .. ... ... ... ... ... ... \n",
|
||
"534 6395 A Shpendi S. Empoli Shpendi S 387 20-134 \n",
|
||
"535 6418 A Burnete Lecce Burnete 59 19-242 \n",
|
||
"536 6419 A Corfitzen Lecce Corfitzen -1 0 \n",
|
||
"537 6427 A Stewart Salernitana Stewart -1 0 \n",
|
||
"538 6434 A Yildiz Juventus Yildiz -1 0 \n",
|
||
"\n",
|
||
" birth_year games ... gk_passes_length_avg gk_goal_kicks \\\n",
|
||
"0 1988 0 ... 29.7 39 \n",
|
||
"1 1990 0 ... 33.2 16 \n",
|
||
"2 1997 0 ... 24.1 21 \n",
|
||
"3 1994 0 ... 28.8 29 \n",
|
||
"4 1995 0 ... 29.2 23 \n",
|
||
".. ... ... ... ... ... \n",
|
||
"534 2003 5 ... 0.0 0 \n",
|
||
"535 2004 1 ... 0.0 0 \n",
|
||
"536 0 0 ... 0.0 0 \n",
|
||
"537 0 0 ... 0.0 0 \n",
|
||
"538 0 0 ... 0.0 0 \n",
|
||
"\n",
|
||
" gk_pct_goal_kicks_launched gk_goal_kick_length_avg gk_crosses \\\n",
|
||
"0 20.5 27.3 59 \n",
|
||
"1 50.0 45.8 59 \n",
|
||
"2 0.0 20.5 53 \n",
|
||
"3 27.6 32.3 63 \n",
|
||
"4 60.9 47.0 52 \n",
|
||
".. ... ... ... \n",
|
||
"534 0.0 0.0 0 \n",
|
||
"535 0.0 0.0 0 \n",
|
||
"536 0.0 0.0 0 \n",
|
||
"537 0.0 0.0 0 \n",
|
||
"538 0.0 0.0 0 \n",
|
||
"\n",
|
||
" gk_crosses_stopped gk_crosses_stopped_pct \\\n",
|
||
"0 5 8.5 \n",
|
||
"1 1 1.7 \n",
|
||
"2 1 1.9 \n",
|
||
"3 3 4.8 \n",
|
||
"4 12 23.1 \n",
|
||
".. ... ... \n",
|
||
"534 0 0.0 \n",
|
||
"535 0 0.0 \n",
|
||
"536 0 0.0 \n",
|
||
"537 0 0.0 \n",
|
||
"538 0 0.0 \n",
|
||
"\n",
|
||
" gk_def_actions_outside_pen_area gk_def_actions_outside_pen_area_per90 \\\n",
|
||
"0 2 0.33 \n",
|
||
"1 1 0.25 \n",
|
||
"2 8 1.33 \n",
|
||
"3 7 1.17 \n",
|
||
"4 3 0.75 \n",
|
||
".. ... ... \n",
|
||
"534 0 0.00 \n",
|
||
"535 0 0.00 \n",
|
||
"536 0 0.00 \n",
|
||
"537 0 0.00 \n",
|
||
"538 0 0.00 \n",
|
||
"\n",
|
||
" gk_avg_distance_def_actions \n",
|
||
"0 9.6 \n",
|
||
"1 8.5 \n",
|
||
"2 17.2 \n",
|
||
"3 16.0 \n",
|
||
"4 9.8 \n",
|
||
".. ... \n",
|
||
"534 0.0 \n",
|
||
"535 0.0 \n",
|
||
"536 0.0 \n",
|
||
"537 0.0 \n",
|
||
"538 0.0 \n",
|
||
"\n",
|
||
"[539 rows x 158 columns]"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"fc_players"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "81a17f84",
|
||
"metadata": {},
|
||
"source": [
|
||
"Load votes database, to add data to players database (mean vote and its standard deviation)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"id": "6a0e43cd",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"\n",
|
||
"votes = pd.read_excel('mid_outputs/players_votes.xlsx', index_col = 0)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6c1b733a",
|
||
"metadata": {},
|
||
"source": [
|
||
"Compute the average Serie A Goal Keeper mean vote and vote std"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"id": "61fac91a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"vote_avg 6.096667\n",
|
||
"vote_std 0.387547\n",
|
||
"dtype: float64\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>vote_avg</th>\n",
|
||
" <th>vote_std</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.372678</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>1.138804</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.235702</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>6.416667</td>\n",
|
||
" <td>0.448764</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.471405</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>6.250000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.288675</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>6.500000</td>\n",
|
||
" <td>0.547723</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>9</th>\n",
|
||
" <td>6.416667</td>\n",
|
||
" <td>0.448764</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10</th>\n",
|
||
" <td>5.666667</td>\n",
|
||
" <td>0.372678</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>11</th>\n",
|
||
" <td>6.250000</td>\n",
|
||
" <td>0.750000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>12</th>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>13</th>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.799305</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>14</th>\n",
|
||
" <td>6.416667</td>\n",
|
||
" <td>0.343592</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>15</th>\n",
|
||
" <td>5.916667</td>\n",
|
||
" <td>0.186339</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>16</th>\n",
|
||
" <td>6.250000</td>\n",
|
||
" <td>0.559017</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>17</th>\n",
|
||
" <td>6.500000</td>\n",
|
||
" <td>0.707107</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>18</th>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.353553</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>19</th>\n",
|
||
" <td>6.250000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>20</th>\n",
|
||
" <td>6.250000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>21</th>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>22</th>\n",
|
||
" <td>6.125000</td>\n",
|
||
" <td>0.414578</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>23</th>\n",
|
||
" <td>5.750000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>24</th>\n",
|
||
" <td>6.250000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" vote_avg vote_std\n",
|
||
"0 5.833333 0.372678\n",
|
||
"1 5.875000 1.138804\n",
|
||
"2 5.833333 0.235702\n",
|
||
"3 6.416667 0.448764\n",
|
||
"4 6.000000 0.000000\n",
|
||
"5 5.833333 0.471405\n",
|
||
"6 6.250000 0.250000\n",
|
||
"7 6.000000 0.288675\n",
|
||
"8 6.500000 0.547723\n",
|
||
"9 6.416667 0.448764\n",
|
||
"10 5.666667 0.372678\n",
|
||
"11 6.250000 0.750000\n",
|
||
"12 6.000000 0.000000\n",
|
||
"13 5.833333 0.799305\n",
|
||
"14 6.416667 0.343592\n",
|
||
"15 5.916667 0.186339\n",
|
||
"16 6.250000 0.559017\n",
|
||
"17 6.500000 0.707107\n",
|
||
"18 6.000000 0.353553\n",
|
||
"19 6.250000 0.250000\n",
|
||
"20 6.250000 0.250000\n",
|
||
"21 6.000000 0.000000\n",
|
||
"22 6.125000 0.414578\n",
|
||
"23 5.750000 0.250000\n",
|
||
"24 6.250000 0.250000"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"min_votes = 3 # TO BE UPDATED WHEN SERIE A HAS MORE CALENDAR WEEKS PLAYED\n",
|
||
"\n",
|
||
"perf_df_P = pd.DataFrame(columns = ['vote_avg', 'vote_std'])\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]): \n",
|
||
" if(fc_players.loc[i]['r'] == 'P'):\n",
|
||
" v = np.array([])\n",
|
||
" for j in range(votes.shape[0]):\n",
|
||
" if(fc_players['name'][i] == votes['player'][j]):\n",
|
||
" v = np.append(v, votes['vote'][j])\n",
|
||
"\n",
|
||
" if(v.shape[0] >= min_votes - 1):\n",
|
||
" row_df = pd.DataFrame(data = [[np.mean(v), np.std(v)]], columns = perf_df_P.columns)\n",
|
||
" perf_df_P = pd.concat([perf_df_P, row_df], ignore_index = True)\n",
|
||
"\n",
|
||
"\n",
|
||
"print(perf_df_P.mean())\n",
|
||
"\n",
|
||
"perf_df_P\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "dbb344e2",
|
||
"metadata": {},
|
||
"source": [
|
||
"Add to players data their mean vote (and its standard deviation).\n",
|
||
"\n",
|
||
"For players who don't have a minimum amount of games, more data to reach this value is computed, according to the average Serie A player vote (and std). For goalkeepers, this values are different.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"id": "c9312080",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>vote_avg</th>\n",
|
||
" <th>vote_std</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.372678</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>1.138804</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.235702</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>6.416667</td>\n",
|
||
" <td>0.448764</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>534</th>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>0.216506</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>535</th>\n",
|
||
" <td>6.211157</td>\n",
|
||
" <td>0.443859</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>536</th>\n",
|
||
" <td>5.482051</td>\n",
|
||
" <td>0.490718</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>537</th>\n",
|
||
" <td>6.039974</td>\n",
|
||
" <td>0.448371</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>538</th>\n",
|
||
" <td>5.601015</td>\n",
|
||
" <td>0.337620</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>539 rows × 2 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" vote_avg vote_std\n",
|
||
"0 5.833333 0.372678\n",
|
||
"1 5.875000 1.138804\n",
|
||
"2 5.833333 0.235702\n",
|
||
"3 6.416667 0.448764\n",
|
||
"4 6.000000 0.000000\n",
|
||
".. ... ...\n",
|
||
"534 5.875000 0.216506\n",
|
||
"535 6.211157 0.443859\n",
|
||
"536 5.482051 0.490718\n",
|
||
"537 6.039974 0.448371\n",
|
||
"538 5.601015 0.337620\n",
|
||
"\n",
|
||
"[539 rows x 2 columns]"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"min_votes = 3 # TO BE UPDATED WHEN SERIE A HAS MORE CALENDAR WEEKS PLAYED\n",
|
||
"\n",
|
||
"#outfield players\n",
|
||
"mean_def = 6\n",
|
||
"std_def = 0.58\n",
|
||
"\n",
|
||
"#goalkeepers\n",
|
||
"mean_def_P = 6.22\n",
|
||
"std_def_P = 0.43\n",
|
||
"\n",
|
||
"\n",
|
||
"perf_df = pd.DataFrame(columns = ['vote_avg', 'vote_std'])\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" v = np.array([])\n",
|
||
" for j in range(votes.shape[0]):\n",
|
||
" if(fc_players['name'][i] == votes['player'][j]):\n",
|
||
" v = np.append(v, votes['vote'][j])\n",
|
||
" \n",
|
||
" mean_def_i = mean_def\n",
|
||
" std_def_i = std_def\n",
|
||
" \n",
|
||
" if(fc_players['r'][i] == 'P'):\n",
|
||
" mean_def_i = mean_def_P\n",
|
||
" std_def_i = std_def_P\n",
|
||
" \n",
|
||
" if(v.shape[0] < min_votes):\n",
|
||
" for k in range(min_votes - v.shape[0]):\n",
|
||
" v = np.append( v, np.random.normal(mean_def_i, std_def_i) )\n",
|
||
" \n",
|
||
" row_df = pd.DataFrame(data = [[np.mean(v), np.std(v)]], columns = perf_df.columns)\n",
|
||
" perf_df = pd.concat([perf_df, row_df], ignore_index = True)\n",
|
||
" \n",
|
||
"perf_df\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"id": "b2570ce5",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>r</th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>team</th>\n",
|
||
" <th>surname</th>\n",
|
||
" <th>initial</th>\n",
|
||
" <th>fb_ID</th>\n",
|
||
" <th>age</th>\n",
|
||
" <th>birth_year</th>\n",
|
||
" <th>games</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>gk_pct_goal_kicks_launched</th>\n",
|
||
" <th>gk_goal_kick_length_avg</th>\n",
|
||
" <th>gk_crosses</th>\n",
|
||
" <th>gk_crosses_stopped</th>\n",
|
||
" <th>gk_crosses_stopped_pct</th>\n",
|
||
" <th>gk_def_actions_outside_pen_area</th>\n",
|
||
" <th>gk_def_actions_outside_pen_area_per90</th>\n",
|
||
" <th>gk_avg_distance_def_actions</th>\n",
|
||
" <th>vote_avg</th>\n",
|
||
" <th>vote_std</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2428</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td></td>\n",
|
||
" <td>481</td>\n",
|
||
" <td>34-287</td>\n",
|
||
" <td>1988</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>20.5</td>\n",
|
||
" <td>27.3</td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>0.33</td>\n",
|
||
" <td>9.6</td>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.372678</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>453</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td></td>\n",
|
||
" <td>484</td>\n",
|
||
" <td>33-165</td>\n",
|
||
" <td>1990</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>45.8</td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.7</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.25</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>1.138804</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>572</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td></td>\n",
|
||
" <td>469</td>\n",
|
||
" <td>26-192</td>\n",
|
||
" <td>1997</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>20.5</td>\n",
|
||
" <td>53</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1.9</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>1.33</td>\n",
|
||
" <td>17.2</td>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.235702</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2814</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td></td>\n",
|
||
" <td>477</td>\n",
|
||
" <td>29-197</td>\n",
|
||
" <td>1994</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>27.6</td>\n",
|
||
" <td>32.3</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>4.8</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1.17</td>\n",
|
||
" <td>16.0</td>\n",
|
||
" <td>6.416667</td>\n",
|
||
" <td>0.448764</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4312</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td></td>\n",
|
||
" <td>467</td>\n",
|
||
" <td>28-089</td>\n",
|
||
" <td>1995</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>60.9</td>\n",
|
||
" <td>47.0</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>23.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>0.75</td>\n",
|
||
" <td>9.8</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>534</th>\n",
|
||
" <td>6395</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Shpendi S.</td>\n",
|
||
" <td>Empoli</td>\n",
|
||
" <td>Shpendi</td>\n",
|
||
" <td>S</td>\n",
|
||
" <td>387</td>\n",
|
||
" <td>20-134</td>\n",
|
||
" <td>2003</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>0.216506</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>535</th>\n",
|
||
" <td>6418</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td></td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>19-242</td>\n",
|
||
" <td>2004</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.211157</td>\n",
|
||
" <td>0.443859</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>536</th>\n",
|
||
" <td>6419</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.482051</td>\n",
|
||
" <td>0.490718</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>537</th>\n",
|
||
" <td>6427</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td>Salernitana</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.039974</td>\n",
|
||
" <td>0.448371</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>538</th>\n",
|
||
" <td>6434</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.601015</td>\n",
|
||
" <td>0.337620</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>539 rows × 160 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id r name team surname initial fb_ID age \\\n",
|
||
"0 2428 P Sommer Inter Sommer 481 34-287 \n",
|
||
"1 453 P Szczesny Juventus Szczesny 484 33-165 \n",
|
||
"2 572 P Meret Napoli Meret 469 26-192 \n",
|
||
"3 2814 P Provedel Lazio Provedel 477 29-197 \n",
|
||
"4 4312 P Maignan Milan Maignan 467 28-089 \n",
|
||
".. ... .. ... ... ... ... ... ... \n",
|
||
"534 6395 A Shpendi S. Empoli Shpendi S 387 20-134 \n",
|
||
"535 6418 A Burnete Lecce Burnete 59 19-242 \n",
|
||
"536 6419 A Corfitzen Lecce Corfitzen -1 0 \n",
|
||
"537 6427 A Stewart Salernitana Stewart -1 0 \n",
|
||
"538 6434 A Yildiz Juventus Yildiz -1 0 \n",
|
||
"\n",
|
||
" birth_year games ... gk_pct_goal_kicks_launched \\\n",
|
||
"0 1988 0 ... 20.5 \n",
|
||
"1 1990 0 ... 50.0 \n",
|
||
"2 1997 0 ... 0.0 \n",
|
||
"3 1994 0 ... 27.6 \n",
|
||
"4 1995 0 ... 60.9 \n",
|
||
".. ... ... ... ... \n",
|
||
"534 2003 5 ... 0.0 \n",
|
||
"535 2004 1 ... 0.0 \n",
|
||
"536 0 0 ... 0.0 \n",
|
||
"537 0 0 ... 0.0 \n",
|
||
"538 0 0 ... 0.0 \n",
|
||
"\n",
|
||
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
|
||
"0 27.3 59 5 \n",
|
||
"1 45.8 59 1 \n",
|
||
"2 20.5 53 1 \n",
|
||
"3 32.3 63 3 \n",
|
||
"4 47.0 52 12 \n",
|
||
".. ... ... ... \n",
|
||
"534 0.0 0 0 \n",
|
||
"535 0.0 0 0 \n",
|
||
"536 0.0 0 0 \n",
|
||
"537 0.0 0 0 \n",
|
||
"538 0.0 0 0 \n",
|
||
"\n",
|
||
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
|
||
"0 8.5 2 \n",
|
||
"1 1.7 1 \n",
|
||
"2 1.9 8 \n",
|
||
"3 4.8 7 \n",
|
||
"4 23.1 3 \n",
|
||
".. ... ... \n",
|
||
"534 0.0 0 \n",
|
||
"535 0.0 0 \n",
|
||
"536 0.0 0 \n",
|
||
"537 0.0 0 \n",
|
||
"538 0.0 0 \n",
|
||
"\n",
|
||
" gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \\\n",
|
||
"0 0.33 9.6 \n",
|
||
"1 0.25 8.5 \n",
|
||
"2 1.33 17.2 \n",
|
||
"3 1.17 16.0 \n",
|
||
"4 0.75 9.8 \n",
|
||
".. ... ... \n",
|
||
"534 0.00 0.0 \n",
|
||
"535 0.00 0.0 \n",
|
||
"536 0.00 0.0 \n",
|
||
"537 0.00 0.0 \n",
|
||
"538 0.00 0.0 \n",
|
||
"\n",
|
||
" vote_avg vote_std \n",
|
||
"0 5.833333 0.372678 \n",
|
||
"1 5.875000 1.138804 \n",
|
||
"2 5.833333 0.235702 \n",
|
||
"3 6.416667 0.448764 \n",
|
||
"4 6.000000 0.000000 \n",
|
||
".. ... ... \n",
|
||
"534 5.875000 0.216506 \n",
|
||
"535 6.211157 0.443859 \n",
|
||
"536 5.482051 0.490718 \n",
|
||
"537 6.039974 0.448371 \n",
|
||
"538 5.601015 0.337620 \n",
|
||
"\n",
|
||
"[539 rows x 160 columns]"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"fc_players = pd.concat([fc_players, perf_df], axis = 1)\n",
|
||
"\n",
|
||
"fc_players"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"id": "f7620abe",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'gk_games'"
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"GK_GAMES_COLUMN = 118\n",
|
||
"\n",
|
||
"fc_players.columns[GK_GAMES_COLUMN]\n",
|
||
"\n",
|
||
"# check it if is 'gk_games'"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c550c370",
|
||
"metadata": {},
|
||
"source": [
|
||
"For goalkeepers who didn't play a miminum amount of games, data is weightly averaged with one of the main goalkeeper of their same team."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"id": "700b7a7d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Carnesecchi, 0.6666666666666667\n",
|
||
"Caprile, 0.33333333333333337\n",
|
||
"Cragno, 0.6666666666666667\n",
|
||
"Perin, 0.6666666666666667\n",
|
||
"Christensen O., 0.6666666666666667\n",
|
||
"Sportiello, 0.6666666666666667\n",
|
||
"Mirante, 0.0\n",
|
||
"Sepe, 0.0\n",
|
||
"Leali, 0.0\n",
|
||
"Lamanna, 0.0\n",
|
||
"Sommariva, 0.0\n",
|
||
"Pegolo, 0.0\n",
|
||
"Perilli, 0.0\n",
|
||
"Padelli, 0.0\n",
|
||
"Scuffet, 0.0\n",
|
||
"Gollini, 0.0\n",
|
||
"Perisan, 0.33333333333333337\n",
|
||
"Audero, 0.0\n",
|
||
"Di Gennaro, 0.0\n",
|
||
"Pinsoglio, 0.0\n",
|
||
"Aresti, 0.0\n",
|
||
"Fiorillo, 0.0\n",
|
||
"Cerofolini, 0.33333333333333337\n",
|
||
"Rossi F., 0.0\n",
|
||
"Costil, 0.0\n",
|
||
"Ravaglia F., 0.0\n",
|
||
"Frattali, 0.0\n",
|
||
"Contini, 0.0\n",
|
||
"Brancolini, 0.0\n",
|
||
"Berardi A., 0.0\n",
|
||
"Gemello, 0.0\n",
|
||
"Boer, 0.0\n",
|
||
"Bagnolini, 0.0\n",
|
||
"Svilar, 0.0\n",
|
||
"Sorrentino A., 0.33333333333333337\n",
|
||
"Martinelli T., 0.0\n",
|
||
"Popa, 0.0\n",
|
||
"Stubljar, 0.0\n",
|
||
"Gori, 0.0\n",
|
||
"Borbei, 0.0\n",
|
||
"Okoye, 0.0\n",
|
||
"Mandas, 0.0\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"min_gk_games = 3 # TO BE UPDATED WHEN SERIE A HAS MORE CALENDAR WEEKS PLAYED\n",
|
||
"\n",
|
||
"fc_players_newgk = fc_players.copy()\n",
|
||
"\n",
|
||
"columns_to_avg = fc_players.columns[GK_GAMES_COLUMN:] # from gk_games to end\n",
|
||
"\n",
|
||
"for i in range(fc_players.shape[0]):\n",
|
||
" if(fc_players['r'][i] == 'P'):\n",
|
||
" if(fc_players['gk_games'][i] < min_gk_games):\n",
|
||
" for j in range(fc_players.shape[0]):\n",
|
||
" if(fc_players['team'][i] == fc_players['team'][j] and fc_players['gk_games'][j] >= min_gk_games):\n",
|
||
" break\n",
|
||
" \n",
|
||
" weight = 1 - (min_gk_games - fc_players['gk_games'][i]) / min_gk_games\n",
|
||
" \n",
|
||
" fc_players_newgk.at[i, columns_to_avg] = fc_players.loc[i][columns_to_avg] * weight + (1 - weight) * fc_players.loc[j][columns_to_avg]\n",
|
||
" \n",
|
||
" print(fc_players['name'][i] + ', ' + str(weight))\n",
|
||
" \n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"id": "2d9eee99",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>id</th>\n",
|
||
" <th>r</th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>team</th>\n",
|
||
" <th>surname</th>\n",
|
||
" <th>initial</th>\n",
|
||
" <th>fb_ID</th>\n",
|
||
" <th>age</th>\n",
|
||
" <th>birth_year</th>\n",
|
||
" <th>games</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>gk_pct_goal_kicks_launched</th>\n",
|
||
" <th>gk_goal_kick_length_avg</th>\n",
|
||
" <th>gk_crosses</th>\n",
|
||
" <th>gk_crosses_stopped</th>\n",
|
||
" <th>gk_crosses_stopped_pct</th>\n",
|
||
" <th>gk_def_actions_outside_pen_area</th>\n",
|
||
" <th>gk_def_actions_outside_pen_area_per90</th>\n",
|
||
" <th>gk_avg_distance_def_actions</th>\n",
|
||
" <th>vote_avg</th>\n",
|
||
" <th>vote_std</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2428</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>Sommer</td>\n",
|
||
" <td></td>\n",
|
||
" <td>481</td>\n",
|
||
" <td>34-287</td>\n",
|
||
" <td>1988</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>20.5</td>\n",
|
||
" <td>27.3</td>\n",
|
||
" <td>59.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>0.33</td>\n",
|
||
" <td>9.6</td>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.372678</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>453</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td></td>\n",
|
||
" <td>484</td>\n",
|
||
" <td>33-165</td>\n",
|
||
" <td>1990</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>45.8</td>\n",
|
||
" <td>59.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.7</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.25</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>1.138804</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>572</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>Meret</td>\n",
|
||
" <td></td>\n",
|
||
" <td>469</td>\n",
|
||
" <td>26-192</td>\n",
|
||
" <td>1997</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>20.5</td>\n",
|
||
" <td>53.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.9</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>1.33</td>\n",
|
||
" <td>17.2</td>\n",
|
||
" <td>5.833333</td>\n",
|
||
" <td>0.235702</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2814</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>Provedel</td>\n",
|
||
" <td></td>\n",
|
||
" <td>477</td>\n",
|
||
" <td>29-197</td>\n",
|
||
" <td>1994</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>27.6</td>\n",
|
||
" <td>32.3</td>\n",
|
||
" <td>63.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>4.8</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>1.17</td>\n",
|
||
" <td>16.0</td>\n",
|
||
" <td>6.416667</td>\n",
|
||
" <td>0.448764</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>4312</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>Maignan</td>\n",
|
||
" <td></td>\n",
|
||
" <td>467</td>\n",
|
||
" <td>28-089</td>\n",
|
||
" <td>1995</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>60.9</td>\n",
|
||
" <td>47.0</td>\n",
|
||
" <td>52.0</td>\n",
|
||
" <td>12.0</td>\n",
|
||
" <td>23.1</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>0.75</td>\n",
|
||
" <td>9.8</td>\n",
|
||
" <td>6.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>534</th>\n",
|
||
" <td>6395</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Shpendi S.</td>\n",
|
||
" <td>Empoli</td>\n",
|
||
" <td>Shpendi</td>\n",
|
||
" <td>S</td>\n",
|
||
" <td>387</td>\n",
|
||
" <td>20-134</td>\n",
|
||
" <td>2003</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.875000</td>\n",
|
||
" <td>0.216506</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>535</th>\n",
|
||
" <td>6418</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Burnete</td>\n",
|
||
" <td></td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>19-242</td>\n",
|
||
" <td>2004</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.211157</td>\n",
|
||
" <td>0.443859</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>536</th>\n",
|
||
" <td>6419</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td>Lecce</td>\n",
|
||
" <td>Corfitzen</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.482051</td>\n",
|
||
" <td>0.490718</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>537</th>\n",
|
||
" <td>6427</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td>Salernitana</td>\n",
|
||
" <td>Stewart</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.039974</td>\n",
|
||
" <td>0.448371</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>538</th>\n",
|
||
" <td>6434</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Yildiz</td>\n",
|
||
" <td></td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>5.601015</td>\n",
|
||
" <td>0.337620</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>539 rows × 160 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id r name team surname initial fb_ID age \\\n",
|
||
"0 2428 P Sommer Inter Sommer 481 34-287 \n",
|
||
"1 453 P Szczesny Juventus Szczesny 484 33-165 \n",
|
||
"2 572 P Meret Napoli Meret 469 26-192 \n",
|
||
"3 2814 P Provedel Lazio Provedel 477 29-197 \n",
|
||
"4 4312 P Maignan Milan Maignan 467 28-089 \n",
|
||
".. ... .. ... ... ... ... ... ... \n",
|
||
"534 6395 A Shpendi S. Empoli Shpendi S 387 20-134 \n",
|
||
"535 6418 A Burnete Lecce Burnete 59 19-242 \n",
|
||
"536 6419 A Corfitzen Lecce Corfitzen -1 0 \n",
|
||
"537 6427 A Stewart Salernitana Stewart -1 0 \n",
|
||
"538 6434 A Yildiz Juventus Yildiz -1 0 \n",
|
||
"\n",
|
||
" birth_year games ... gk_pct_goal_kicks_launched \\\n",
|
||
"0 1988 0 ... 20.5 \n",
|
||
"1 1990 0 ... 50.0 \n",
|
||
"2 1997 0 ... 0.0 \n",
|
||
"3 1994 0 ... 27.6 \n",
|
||
"4 1995 0 ... 60.9 \n",
|
||
".. ... ... ... ... \n",
|
||
"534 2003 5 ... 0.0 \n",
|
||
"535 2004 1 ... 0.0 \n",
|
||
"536 0 0 ... 0.0 \n",
|
||
"537 0 0 ... 0.0 \n",
|
||
"538 0 0 ... 0.0 \n",
|
||
"\n",
|
||
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
|
||
"0 27.3 59.0 5.0 \n",
|
||
"1 45.8 59.0 1.0 \n",
|
||
"2 20.5 53.0 1.0 \n",
|
||
"3 32.3 63.0 3.0 \n",
|
||
"4 47.0 52.0 12.0 \n",
|
||
".. ... ... ... \n",
|
||
"534 0.0 0.0 0.0 \n",
|
||
"535 0.0 0.0 0.0 \n",
|
||
"536 0.0 0.0 0.0 \n",
|
||
"537 0.0 0.0 0.0 \n",
|
||
"538 0.0 0.0 0.0 \n",
|
||
"\n",
|
||
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
|
||
"0 8.5 2.0 \n",
|
||
"1 1.7 1.0 \n",
|
||
"2 1.9 8.0 \n",
|
||
"3 4.8 7.0 \n",
|
||
"4 23.1 3.0 \n",
|
||
".. ... ... \n",
|
||
"534 0.0 0.0 \n",
|
||
"535 0.0 0.0 \n",
|
||
"536 0.0 0.0 \n",
|
||
"537 0.0 0.0 \n",
|
||
"538 0.0 0.0 \n",
|
||
"\n",
|
||
" gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \\\n",
|
||
"0 0.33 9.6 \n",
|
||
"1 0.25 8.5 \n",
|
||
"2 1.33 17.2 \n",
|
||
"3 1.17 16.0 \n",
|
||
"4 0.75 9.8 \n",
|
||
".. ... ... \n",
|
||
"534 0.00 0.0 \n",
|
||
"535 0.00 0.0 \n",
|
||
"536 0.00 0.0 \n",
|
||
"537 0.00 0.0 \n",
|
||
"538 0.00 0.0 \n",
|
||
"\n",
|
||
" vote_avg vote_std \n",
|
||
"0 5.833333 0.372678 \n",
|
||
"1 5.875000 1.138804 \n",
|
||
"2 5.833333 0.235702 \n",
|
||
"3 6.416667 0.448764 \n",
|
||
"4 6.000000 0.000000 \n",
|
||
".. ... ... \n",
|
||
"534 5.875000 0.216506 \n",
|
||
"535 6.211157 0.443859 \n",
|
||
"536 5.482051 0.490718 \n",
|
||
"537 6.039974 0.448371 \n",
|
||
"538 5.601015 0.337620 \n",
|
||
"\n",
|
||
"[539 rows x 160 columns]"
|
||
]
|
||
},
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"fc_players = fc_players_newgk\n",
|
||
"\n",
|
||
"fc_players"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2b13240e",
|
||
"metadata": {},
|
||
"source": [
|
||
"Save to file."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"id": "8336c025",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"fc_players.to_excel('mid_outputs/players_stats.xlsx')"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.13"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|