Files
fantabeto/.ipynb_checkpoints/3b_players_dataset_creation_oldseasons-checkpoint.ipynb
T
Giuseppe Musicco 8f7df5dd7f Minor update (matchday 21)
- updated code for new FBRef stats;
- updated players list;
- players who changed team handled slightly better
2023-02-04 13:10:39 +01:00

4532 lines
194 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "94545a88",
"metadata": {},
"source": [
"players__dataset_creation code for past seasons\n",
"\n",
"Select the season in season variable, and repeat the code if needed"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "b72a3c5e",
"metadata": {},
"outputs": [],
"source": [
"season = '2021'"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "7c65df92",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "b2d7073e",
"metadata": {},
"outputs": [],
"source": [
"rcsv = pd.read_csv('fbref_data/season' + season + '/outfield_players.csv') \n",
"outfield_players = pd.DataFrame(rcsv)\n",
"\n",
"rcsv = pd.read_csv('fbref_data/season' + season + '/keepers_players.csv') \n",
"keeper_players = pd.DataFrame(rcsv)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"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>Gennaro Acampora</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Francesco Acerbi</td>\n",
" <td>Lazio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Andrea Adorante</td>\n",
" <td>Parma</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Lucien Agoume</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Kevin Agudelo</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>665</th>\n",
" <td>Ciprian Tătărușanu</td>\n",
" <td>Milan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>666</th>\n",
" <td>Pietro Terracciano</td>\n",
" <td>Fiorentina</td>\n",
" </tr>\n",
" <tr>\n",
" <th>667</th>\n",
" <td>Samir Ujkani</td>\n",
" <td>Torino</td>\n",
" </tr>\n",
" <tr>\n",
" <th>668</th>\n",
" <td>Guglielmo Vicario</td>\n",
" <td>Cagliari</td>\n",
" </tr>\n",
" <tr>\n",
" <th>669</th>\n",
" <td>Jeroen Zoet</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>670 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" player team\n",
"0 Gennaro Acampora Spezia\n",
"1 Francesco Acerbi Lazio\n",
"2 Andrea Adorante Parma\n",
"3 Lucien Agoume Spezia\n",
"4 Kevin Agudelo Spezia\n",
".. ... ...\n",
"665 Ciprian Tătărușanu Milan\n",
"666 Pietro Terracciano Fiorentina\n",
"667 Samir Ujkani Torino\n",
"668 Guglielmo Vicario Cagliari\n",
"669 Jeroen Zoet Spezia\n",
"\n",
"[670 rows x 2 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"players = pd.concat( [ outfield_players[['player', 'team']], keeper_players[['player', 'team']] ], axis = 0, ignore_index = True)\n",
"\n",
"players"
]
},
{
"cell_type": "code",
"execution_count": 27,
"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": 28,
"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": 29,
"id": "ffd6091c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" player surname\n",
"0 Gennaro Acampora Acampora\n",
"1 Francesco Acerbi Acerbi\n",
"2 Andrea Adorante Adorante\n",
"3 Lucien Agoume Agoume\n",
"4 Kevin Agudelo Agudelo\n",
"5 Jean-Daniel Akpa-Akpro Akpa-Akpro\n",
"6 Luis Alberto Alberto\n",
"7 Bruno Alves Alves\n",
"8 Wisdom Amey Amey\n",
"9 Sofyan Amrabat Amrabat\n",
"10 Djavan Anderson Anderson\n",
"11 Nícolas Andrade Andrade\n",
"12 Davide Angelo Ghislandi Ghislandi\n",
"13 Philip Ankhrah Ankhrah\n",
"14 Cristian Ansaldi Ansaldi\n",
"15 Valentin Antov Antov\n",
"16 Nicolò Armini Armini\n",
"17 Tolgay Arslan Arslan\n",
"18 Kwadwo Asamoah Asamoah\n",
"19 Kristoffer Askildsen Askildsen\n",
"20 Emil Audero Audero\n",
"21 Tommaso Augello Augello\n",
"22 Kaan Ayhan Ayhan\n",
"23 Milan Badelj Badelj\n",
"24 Tiemoué Bakayoko Bakayoko\n",
"25 Keita Baldé Balde\n",
"26 Botond Balogh Balogh\n",
"27 Mattia Bani Bani\n",
"28 Mattia Bani Bani\n",
"29 Antonín Barák Barak\n",
"30 Federico Barba Barba\n",
"31 Nicolò Barella Barella\n",
"32 Antonio Barreca Barreca\n",
"33 Musa Barrow Barrow\n",
"34 Paolo Bartolomei Bartolomei\n",
"35 Daniele Baselli Baselli\n",
"36 Alessandro Bastoni Bastoni\n",
"37 Simone Bastoni Bastoni\n",
"38 Bastos Bastos\n",
"39 Rodrigo Becão Becao\n",
"40 Valon Behrami Behrami\n",
"41 Andrea Belotti Belotti\n",
"42 Ahmad Benali Benali\n",
"43 Ismaël Bennacer Bennacer\n",
"44 Rodrigo Bentancur Bentancur\n",
"45 Alessandro Berardi Berardi\n",
"46 Domenico Berardi Berardi\n",
"47 Álex Berenguer Berenguer\n",
"48 Bartosz Bereszyński Bereszynski\n",
"49 Federico Bernardeschi Bernardeschi\n",
"50 Marco Bertini Bertini\n",
"51 Daniel Bessa Bessa\n",
"52 Cristiano Biraghi Biraghi\n",
"53 Davide Biraschi Biraschi\n",
"54 Jeremie Boga Boga\n",
"55 Giacomo Bonaventura Bonaventura\n",
"56 Federico Bonazzoli Bonazzoli\n",
"57 Federico Bonazzoli Bonazzoli\n",
"58 Kevin Bonifazi Bonifazi\n",
"59 Leonardo Bonucci Bonucci\n",
"60 Mehdi Bourabia Bourabia\n",
"61 Edoardo Bove Bove\n",
"62 Jayden Braaf Braaf\n",
"63 Gleison Bremer Bremer\n",
"64 Marcelo Brozović Brozovic\n",
"65 Gastón Brugman Brugman\n",
"66 Juan Brunetta Brunetta\n",
"67 Gianluigi Buffon Buffon\n",
"68 Alessandro Buongiorno Buongiorno\n",
"69 Maxime Busi Busi\n",
"70 Martín Cáceres Caceres\n",
"71 Felipe Caicedo Caicedo\n",
"72 Arturo Calabresi Calabresi\n",
"73 Arturo Calabresi Calabresi\n",
"74 Davide Calabria Calabria\n",
"75 Riccardo Calafiori Calafiori\n",
"76 Mattia Caldara Caldara\n",
"77 Luca Caldirola Caldirola\n",
"78 Hakan Çalhanoğlu Calhanoglu\n",
"79 Fabrizio Caligara Caligara\n",
"80 José Callejón Callejon\n",
"81 Drissa Camara Camara\n",
"82 Antonio Candreva Candreva\n",
"83 Elio Capradossi Capradossi\n",
"84 Gianluca Caprari Caprari\n",
"85 Francesco Caputo Caputo\n",
"86 Andrea Carboni Carboni\n",
"87 Giuseppe Caso Caso\n",
"88 Francesco Cassata Cassata\n",
"89 Samu Castillejo Castillejo\n",
"90 Gaetano Castrovilli Castrovilli\n",
"91 Danilo Cataldi Cataldi\n",
"92 Federico Ceccherini Ceccherini\n",
"93 Federico Ceccherini Ceccherini\n",
"94 Luca Ceppitelli Ceppitelli\n",
"95 Alberto Cerri Cerri\n",
"96 Julian Chabot Chabot\n",
"97 Giorgio Chiellini Chiellini\n",
"98 Federico Chiesa Chiesa\n",
"99 Federico Chiesa Chiesa\n",
"100 Vlad Chiricheș Chiriches\n",
"101 Luca Cigarini Cigarini\n",
"102 Antonio Cioffi Cioffi\n",
"103 Ebrima Colley Colley\n",
"104 Omar Colley Colley\n",
"105 Simone Colombi Colombi\n",
"106 Lorenzo Colombo Colombo\n",
"107 Andrea Consigli Consigli\n",
"108 Andrea Conti Conti\n",
"109 Andrea Conti Conti\n",
"110 Alex Cordaz Cordaz\n",
"111 Andreas Cornelius Cornelius\n",
"112 Joaquín Correa Correa\n",
"113 Félix Correia Correia\n",
"114 Douglas Costa Costa\n",
"115 Angelo da Costa Júnior Junior\n",
"116 Mamadou Coulibaly Coulibaly\n",
"117 Alessio Cragno Cragno\n",
"118 Gian Crespi Crespi\n",
"119 Domenico Criscito Criscito\n",
"120 Bryan Cristante Cristante\n",
"121 Giovanni Crociata Crociata\n",
"122 Juan Cuadrado Cuadrado\n",
"123 Giuseppe Cuomo Cuomo\n",
"124 Patrick Cutrone Cutrone\n",
"125 Wylan Cyprien Cyprien\n",
"126 Lennart-Marten Czyborra Czyborra\n",
"127 Danilo D'Ambrosio DAmbrosio\n",
"128 Bryan Dabo Dabo\n",
"129 Diogo Dalot Dalot\n",
"130 Mikkel Damsgaard Damsgaard\n",
"131 Danilo Danilo\n",
"132 Andrea Danzi Danzi\n",
"133 Ebrima Darboe Darboe\n",
"134 Matteo Darmian Darmian\n",
"135 Matteo Darmian Darmian\n",
"136 Paweł Dawidowicz Dawidowicz\n",
"137 Sebastien De Maio Maio\n",
"138 Rodrigo De Paul Paul\n",
"139 Mattia De Sciglio Sciglio\n",
"140 Lorenzo De Silvestri Silvestri\n",
"141 Grégoire Defrel Defrel\n",
"142 Alessandro Deiola Deiola\n",
"143 Alessandro Deiola Deiola\n",
"144 Lorenzo Del Pinto Pinto\n",
"145 Cristian Dell'Orco DellOrco\n",
"146 Merih Demiral Demiral\n",
"147 Diego Demme Demme\n",
"148 Stefano Denswil Denswil\n",
"149 Fabio Depaoli Depaoli\n",
"150 Fabio Depaoli Depaoli\n",
"151 Fabio Depaoli Depaoli\n",
"152 Kastriot Dermaku Dermaku\n",
"153 Kiril Despodov Despodov\n",
"154 Mattia Destro Destro\n",
"155 Gerard Deulofeu Deulofeu\n",
"156 Jacopo Dezi Dezi\n",
"157 Samuel Di Carmine Carmine\n",
"158 Samuel Di Carmine Carmine\n",
"159 Giovanni Di Lorenzo Lorenzo\n",
"160 Alessandro Di Pardo Pardo\n",
"161 Giuseppe Di Serio Serio\n",
"162 Amad Diallo Diallo\n",
"163 Amadou Diambo Diambo\n",
"164 Amadou Diawara Diawara\n",
"165 Brahim Díaz Diaz\n",
"166 Daan Dierckx Dierckx\n",
"167 Mitchell Dijks Dijks\n",
"168 Federico Dimarco Dimarco\n",
"169 Koffi Djidji Djidji\n",
"170 Berat Djimsiti Djimsiti\n",
"171 Nicolás Domínguez Dominguez\n",
"172 Gianluigi Donnarumma Donnarumma\n",
"173 Bartłomiej Drągowski Dragowski\n",
"174 Denis Drăguș Dragus\n",
"175 Radu Drăgușin Dragusin\n",
"176 Léo Duarte Duarte\n",
"177 Alfred Duncan Duncan\n",
"178 Alfred Duncan Duncan\n",
"179 Paulo Dybala Dybala\n",
"180 Edin Džeko Dzeko\n",
"181 Steeve-Mike Ebongue Ebongue\n",
"182 Simone Edera Edera\n",
"183 Albin Ekdal Ekdal\n",
"184 Elif Elmas Elmas\n",
"185 Alan Empereur Empereur\n",
"186 Christian Eriksen Eriksen\n",
"187 Martin Erlic Erlic\n",
"188 Gonzalo Escalante Escalante\n",
"189 Nahuel Estévez Estevez\n",
"190 Valentin Eysseric Eysseric\n",
"191 Nicolò Fagioli Fagioli\n",
"192 Iago Falque Falque\n",
"193 Andri Fannar Baldursson Baldursson\n",
"194 Paolo Faragò Farago\n",
"195 Paolo Faragò Farago\n",
"196 Davide Faraoni Faraoni\n",
"197 Mohamed Fares Fares\n",
"198 Diego Farias Farias\n",
"199 Andrea Favilli Favilli\n",
"200 Federico Fazio Fazio\n",
"201 Luiz Felipe Felipe\n",
"202 Alex Ferrari Ferrari\n",
"203 Salvador Ferrer Ferrer\n",
"204 Marco Festa Festa\n",
"205 Fernando Forestieri Forestieri\n",
"206 Daam Foulon Foulon\n",
"207 Gianluca Frabotta Frabotta\n",
"208 Remo Freuler Freuler\n",
"209 Daniel Fuzato Fuzato\n",
"210 Matteo Gabbia Gabbia\n",
"211 Manolo Gabbiadini Gabbiadini\n",
"212 Roberto Gagliardini Gagliardini\n",
"213 Riccardo Gagliolo Gagliolo\n",
"214 Adolfo Gaich Gaich\n",
"215 Andrey Galabinov Galabinov\n",
"216 Manuel Gasparini Gasparini\n",
"217 Gervinho Gervinho\n",
"218 Paolo Ghiglione Ghiglione\n",
"219 Faouzi Ghoulam Ghoulam\n",
"220 Kamil Glik Glik\n",
"221 Diego Godín Godin\n",
"222 Amer Gojak Gojak\n",
"223 Edoardo Goldaniga Goldaniga\n",
"224 Vladimir Golemić Golemic\n",
"225 Pierluigi Gollini Gollini\n",
"226 Tomislav Gomelt Gomelt\n",
"227 Papu Gómez Gomez\n",
"228 Robin Gosens Gosens\n",
"229 Alberto Grassi Grassi\n",
"230 Koray Günter Gunter\n",
"231 Manu Gyabuaa Gyabuaa\n",
"232 Emmanuel Gyasi Gyasi\n",
"233 Achraf Hakimi Hakimi\n",
"234 Samir Handanović Handanovic\n",
"235 Lukáš Haraslín Haraslin\n",
"236 Hans Hateboer Hateboer\n",
"237 Eduardo Henrique Henrique\n",
"238 Theo Hernández Hernandez\n",
"239 Hernani Hernani\n",
"240 Përparim Hetemaj Hetemaj\n",
"241 Aaron Hickey Hickey\n",
"242 Wesley Hoedt Hoedt\n",
"243 Elseid Hysaj Hysaj\n",
"244 Simone Iacoponi Iacoponi\n",
"245 Roger Ibanez Ibanez\n",
"246 Zlatan Ibrahimović Ibrahimovic\n",
"247 Igor Igor\n",
"248 Ivan Ilić Ilic\n",
"249 Josip Iličić Ilicic\n",
"250 Ciro Immobile Immobile\n",
"251 Riccardo Improta Improta\n",
"252 Roberto Inglese Inglese\n",
"253 Lorenzo Insigne Insigne\n",
"254 Roberto Insigne Insigne\n",
"255 Artur Ioniță Ionita\n",
"256 Ardian Ismajli Ismajli\n",
"257 Armando Izzo Izzo\n",
"258 Mato Jajalo Jajalo\n",
"259 Jakub Jankto Jankto\n",
"260 Juan Jesus Jesus\n",
"261 Hamed Junior Traorè Traore\n",
"262 Musa Juwara Juwara\n",
"263 Nikola Kalinić Kalinic\n",
"264 Yayah Kallon Kallon\n",
"265 Pierre Kalulu Kalulu\n",
"266 Yann Karamoh Karamoh\n",
"267 Isaac Karamoko Karamoko\n",
"268 Augustus Kargbo Kargbo\n",
"269 Rick Karsdorp Karsdorp\n",
"270 Franck Kessié Kessie\n",
"271 Omar Khailoti Khailoti\n",
"272 Simon Kjær Kjr\n",
"273 Ragnar Klavan Klavan\n",
"274 Justin Kluivert Kluivert\n",
"275 Aleksandr Kokorin Kokorin\n",
"276 Aleksandar Kolarov Kolarov\n",
"277 Márk Kosznovszky Kosznovszky\n",
"278 Christian Kouamé Kouame\n",
"279 Kalidou Koulibaly Koulibaly\n",
"280 Viktor Kovalenko Kovalenko\n",
"281 Rade Krunić Krunic\n",
"282 Juraj Kucka Kucka\n",
"283 Dejan Kulusevski Kulusevski\n",
"284 Marash Kumbulla Kumbulla\n",
"285 Jasmin Kurtić Kurtic\n",
"286 Giorgos Kyriakopoulos Kyriakopoulos\n",
"287 Antonino La Gumina Gumina\n",
"288 Sam Lammers Lammers\n",
"289 Gianluca Lapadula Lapadula\n",
"290 Danilo Larangeira Larangeira\n",
"291 Kevin Lasagna Lasagna\n",
"292 Kevin Lasagna Lasagna\n",
"293 Vincent Laurini Laurini\n",
"294 Darko Lazović Lazovic\n",
"295 Manuel Lazzari Lazzari\n",
"296 Rafael Leão Leao\n",
"297 Lucas Leiva Leiva\n",
"298 Lukas Lerager Lerager\n",
"299 Mehdi Léris Leris\n",
"300 Karlo Letica Letica\n",
"301 Gaetano Letizia Letizia\n",
"302 Matthijs de Ligt Ligt\n",
"303 Karol Linetty Linetty\n",
"304 Pol Lirola Lirola\n",
"305 Fernando Llorente Llorente\n",
"306 Fernando Llorente Llorente\n",
"307 Stanislav Lobotka Lobotka\n",
"308 Manuel Locatelli Locatelli\n",
"309 Maxime Lopez Lopez\n",
"310 Pau López Lopez\n",
"311 Matteo Lovato Lovato\n",
"312 Hirving Lozano Lozano\n",
"313 José Luis Palomino Palomino\n",
"314 Romelu Lukaku Lukaku\n",
"315 Saša Lukić Lukic\n",
"316 Senad Lulić Lulic\n",
"317 Sebastiano Luperto Luperto\n",
"318 Lyanco Lyanco\n",
"319 Charalambos Lykogiannis Lykogiannis\n",
"320 Lisandro Magallán Magallan\n",
"321 Christian Maggio Maggio\n",
"322 Giulio Maggiore Maggiore\n",
"323 Francesco Magnanelli Magnanelli\n",
"324 Giangiacomo Magnani Magnani\n",
"325 Jean-Victor Makengo Makengo\n",
"326 Nikola Maksimović Maksimovic\n",
"327 Kévin Malcuit Malcuit\n",
"328 Kévin Malcuit Malcuit\n",
"329 Daniel Maldini Maldini\n",
"330 Ruslan Malinovskyi Malinovskyi\n",
"331 Dennis Man Man\n",
"332 Gianluca Mancini Mancini\n",
"333 Rolando Mandragora Mandragora\n",
"334 Rolando Mandragora Mandragora\n",
"335 Mario Mandžukić Mandzukic\n",
"336 Niccolò Manfredini Manfredini\n",
"337 Kostas Manolas Manolas\n",
"338 Juan Manuel Ramos Ramos\n",
"339 Federico Marchetti Marchetti\n",
"340 Riccardo Marchizza Marchizza\n",
"341 Gian Marco Ferrari Ferrari\n",
"342 Răzvan Marin Marin\n",
"343 Marlon Marlon\n",
"344 Luca Marrone Marrone\n",
"345 Lautaro Martínez Martinez\n",
"346 Lucas Martínez Quarta Quarta\n",
"347 Adam Marušić Marusic\n",
"348 Andrea Masiello Masiello\n",
"349 Giuseppe Mastinu Mastinu\n",
"350 Ryder Matos Matos\n",
"351 Federico Mattiello Mattiello\n",
"352 Borja Mayoral Mayoral\n",
"353 Antonio Mazzotta Mazzotta\n",
"354 Ibrahima Mbaye Mbaye\n",
"355 Weston McKennie McKennie\n",
"356 Gary Medel Medel\n",
"357 Soualiho Meïté Meite\n",
"358 Soualiho Meïté Meite\n",
"359 Filippo Melegoni Melegoni\n",
"360 Arthur Melo Melo\n",
"361 Alex Meret Meret\n",
"362 Yıldırım Mert Çetin Cetin\n",
"363 Dries Mertens Mertens\n",
"364 Junior Messias Messias\n",
"365 Petar Mićin Micin\n",
"366 Valentin Mihaila Mihaila\n",
"367 Nikola Milenković Milenkovic\n",
"368 Sergej Milinković-Savić Milinkovic-Savic\n",
"369 Vanja Milinković-Savić Milinkovic-Savic\n",
"370 Vincenzo Millico Millico\n",
"371 Aleksei Miranchuk Miranchuk\n",
"372 Antonio Mirante Mirante\n",
"373 Henrikh Mkhitaryan Mkhitaryan\n",
"374 Johan Mojica Mojica\n",
"375 Nahuel Molina Molina\n",
"376 Salvatore Molina Molina\n",
"377 Gabriele Moncini Moncini\n",
"378 Cristóbal Montiel Montiel\n",
"379 Lorenzo Montipò Montipo\n",
"380 Luca Mora Mora\n",
"381 Álvaro Morata Morata\n",
"382 Raúl Moro Moro\n",
"383 Mert Müldür Muldur\n",
"384 Luis Muriel Muriel\n",
"385 Vedat Muriqi Muriqi\n",
"386 Nicola Murru Murru\n",
"387 Mateo Musacchio Musacchio\n",
"388 Mateo Musacchio Musacchio\n",
"389 Juan Musso Musso\n",
"390 Joakim Mæhle Mhle\n",
"391 Radja Nainggolan Nainggolan\n",
"392 Radja Nainggolan Nainggolan\n",
"393 Nahitan Nández Nandez\n",
"394 Ilija Nestorovski Nestorovski\n",
"395 Nicolas Nkoulou Nkoulou\n",
"396 Bram Nuytinck Nuytinck\n",
"397 Simeon Nwankwo Nwankwo\n",
"398 M'Bala Nzola Nzola\n",
"399 Pedro Obiang Obiang\n",
"400 Brian Oddei Oddei\n",
"401 Stefano Okaka Okaka\n",
"402 Christian Oliva Oliva\n",
"403 Maximiliano Olivera Olivera\n",
"404 Jérôme Onguéné Onguene\n",
"405 Riccardo Orsolini Orsolini\n",
"406 Victor Osimhen Osimhen\n",
"407 Yordan Osorio Osorio\n",
"408 David Ospina Ospina\n",
"409 Adam Ounas Ounas\n",
"410 Adam Ounas Ounas\n",
"411 Thomas Ouwejan Ouwejan\n",
"412 Daniele Padelli Padelli\n",
"413 Mattia Pagliuca Pagliuca\n",
"414 Rodrigo Palacio Palacio\n",
"415 Alberto Paleari Paleari\n",
"416 Antonio Palumbo Palumbo\n",
"417 Martin Palumbo Palumbo\n",
"418 Goran Pandev Pandev\n",
"419 Ivor Pandur Pandur\n",
"420 Vittorio Parigini Parigini\n",
"421 Marco Parolo Parolo\n",
"422 Mario Pašalić Pasalic\n",
"423 Christian Pastina Pastina\n",
"424 Javier Pastore Pastore\n",
"425 Patric Patric\n",
"426 Leonardo Pavoletti Pavoletti\n",
"427 Nehuén Paz Paz\n",
"428 Pedro Pedro\n",
"429 João Pedro Pedro\n",
"430 Gianluca Pegolo Pegolo\n",
"431 Graziano Pellè Pelle\n",
"432 Lorenzo Pellegrini Pellegrini\n",
"433 Luca Pellegrini Pellegrini\n",
"434 Federico Peluso Peluso\n",
"435 Andreas Pereira Pereira\n",
"436 Pedro Pereira Pereira\n",
"437 Gastón Pereiro Pereiro\n",
"438 Bruno Peres Peres\n",
"439 Roberto Pereyra Pereyra\n",
"440 Carles Pérez Perez\n",
"441 Mattia Perin Perin\n",
"442 Ivan Perišić Perisic\n",
"443 Matteo Pessina Pessina\n",
"444 Andrea Petagna Petagna\n",
"445 Jacopo Petriccione Petriccione\n",
"446 Jens Petter Hauge Hauge\n",
"447 Germán Pezzella Pezzella\n",
"448 Giuseppe Pezzella Pezzella\n",
"449 Cristiano Piccini Piccini\n",
"450 Roberto Piccoli Piccoli\n",
"451 Andrea Pinamonti Pinamonti\n",
"452 Carlo Pinsoglio Pinsoglio\n",
"453 Fabio Pisacane Pisacane\n",
"454 Marko Pjaca Pjaca\n",
"455 Tommaso Pobega Pobega\n",
"456 Andrea Poli Poli\n",
"457 Matteo Politano Politano\n",
"458 Manolo Portanova Portanova\n",
"459 Manolo Portanova Portanova\n",
"460 Ivan Provedel Provedel\n",
"461 Erick Pulgar Pulgar\n",
"462 Ignacio Pussetto Pussetto\n",
"463 Fabio Quagliarella Quagliarella\n",
"464 Simone Rabbi Rabbi\n",
"465 Adrien Rabiot Rabiot\n",
"466 Ivan Radovanović Radovanovic\n",
"467 Ionuț Radu Radu\n",
"468 Ștefan Radu Radu\n",
"469 Rafael Rafael\n",
"470 Antonio Raimondo Raimondo\n",
"471 Gastón Ramírez Ramirez\n",
"472 Aaron Ramsey Ramsey\n",
"473 Andrea Ranocchia Ranocchia\n",
"474 Giacomo Raspadori Raspadori\n",
"475 Federico Ravaglia Ravaglia\n",
"476 Ante Rebić Rebic\n",
"477 Arkadiusz Reca Reca\n",
"478 Vasco Regini Regini\n",
"479 Pepe Reina Reina\n",
"480 Bryan Reynolds Reynolds\n",
"481 Franck Ribéry Ribery\n",
"482 Federico Ricci Ricci\n",
"483 Giacomo Ricci Ricci\n",
"484 Matteo Ricci Ricci\n",
"485 Tomás Rincón Rincon\n",
"486 Andrea Rispoli Rispoli\n",
"487 Emmanuel Rivière Riviere\n",
"488 Ricardo Rodríguez Rodriguez\n",
"489 Marko Rog Rog\n",
"490 Rogério Rogerio\n",
"491 Luis Rojas Rojas\n",
"492 Alessio Romagnoli Romagnoli\n",
"493 Cristian Romero Romero\n",
"494 Cristiano Ronaldo Ronaldo\n",
"495 Marten de Roon Roon\n",
"496 Nicolò Rovella Rovella\n",
"497 Amir Rrahmani Rrahmani\n",
"498 Kevin Rüegg Ruegg\n",
"499 Daniele Rugani Rugani\n",
"500 Matteo Ruggeri Ruggeri\n",
"501 Mário Rui Rui\n",
"502 Fabián Ruiz Peña Pena\n",
"503 Alexis Saelemaekers Saelemaekers\n",
"504 Jacopo Sala Sala\n",
"505 Eddie Salcedo Salcedo\n",
"506 Antonio Sanabria Sanabria\n",
"507 Alexis Sánchez Sanchez\n",
"508 Alex Sandro Sandro\n",
"509 Siriki Sanogo Sanogo\n",
"510 Nicola Sansone Sansone\n",
"511 Federico Santander Santander\n",
"512 Davide Santon Santon\n",
"513 Samir Santos Santos\n",
"514 Riccardo Saponara Saponara\n",
"515 Riccardo Saponara Saponara\n",
"516 Marco Sau Sau\n",
"517 Gianluca Scamacca Scamacca\n",
"518 Nicolás Schiappacasse Schiappacasse\n",
"519 Pasquale Schiattarella Schiattarella\n",
"520 Jerdy Schouten Schouten\n",
"521 Matteo Scozzarella Scozzarella\n",
"522 Simone Scuffet Scuffet\n",
"523 Jacopo Segre Segre\n",
"524 Léo Sena Sena\n",
"525 Stefano Sensi Sensi\n",
"526 Luigi Sepe Sepe\n",
"527 Stephan El Shaarawy Shaarawy\n",
"528 Eldor Shomurodov Shomurodov\n",
"529 Luca Siligardi Siligardi\n",
"530 Luca Siligardi Siligardi\n",
"531 Adrien Silva Silva\n",
"532 Marco Silvestri Silvestri\n",
"533 Giovanni Simeone Simeone\n",
"534 Wilfried Singo Singo\n",
"535 Salvatore Sirigu Sirigu\n",
"536 Łukasz Skorupski Skorupski\n",
"537 Andreas Skov Olsen Olsen\n",
"538 Milan Škriniar Skriniar\n",
"539 Chris Smalling Smalling\n",
"540 Simon Sohm Sohm\n",
"541 Roberto Soriano Soriano\n",
"542 Riccardo Sottil Sottil\n",
"543 Adama Soumaoro Soumaoro\n",
"544 Leonardo Spinazzola Spinazzola\n",
"545 Marco Sportiello Sportiello\n",
"546 Mattia Sprocati Sprocati\n",
"547 Thomas Strakosha Strakosha\n",
"548 Kevin Strootman Strootman\n",
"549 Jens Stryger Larsen Larsen\n",
"550 Stefano Sturaro Sturaro\n",
"551 Stefano Sturaro Sturaro\n",
"552 Bosko Sutalo Sutalo\n",
"553 Mattias Svanberg Svanberg\n",
"554 Wojciech Szczęsny Szczesny\n",
"555 Adrien Tameze Tameze\n",
"556 Ciprian Tătărușanu Tatarusanu\n",
"557 Andrés Tello Tello\n",
"558 Hidde ter Avest Avest\n",
"559 Pietro Terracciano Terracciano\n",
"560 Claudio Terzi Terzi\n",
"561 Morten Thorsby Thorsby\n",
"562 Jeremy Toljan Toljan\n",
"563 Rafael Tolói Toloi\n",
"564 Takehiro Tomiyasu Tomiyasu\n",
"565 Fikayo Tomori Tomori\n",
"566 Sandro Tonali Tonali\n",
"567 Lorenzo Tonelli Tonelli\n",
"568 Ernesto Torregrossa Torregrossa\n",
"569 Mattéo Tramoni Tramoni\n",
"570 Chaka Traorè Traore\n",
"571 Alessandro Tripaldelli Tripaldelli\n",
"572 Alessandro Tuia Tuia\n",
"573 Ľubomír Tupta Tupta\n",
"574 Iyenoma Udogie Udogie\n",
"575 Samir Ujkani Ujkani\n",
"576 Kacper Urbanski Urbanski\n",
"577 Lautaro Valenti Valenti\n",
"578 Borja Valero Valero\n",
"579 Denis Vavro Vavro\n",
"580 Matías Vecino Vecino\n",
"581 Miguel Veloso Veloso\n",
"582 Lorenzo Venuti Venuti\n",
"583 Daniele Verde Verde\n",
"584 Simone Verdi Verdi\n",
"585 Jordan Veretout Veretout\n",
"586 Edoardo Vergani Vergani\n",
"587 Valerio Verre Verre\n",
"588 Guglielmo Vicario Vicario\n",
"589 Arturo Vidal Vidal\n",
"590 Ronaldo Vieira Vieira\n",
"591 Luca Vignali Vignali\n",
"592 Emanuel Vignato Vignato\n",
"593 Gonzalo Villar Villar\n",
"594 Nicolas Viola Viola\n",
"595 Dušan Vlahović Vlahovic\n",
"596 Mërgim Vojvoda Vojvoda\n",
"597 Stefan de Vrij Vrij\n",
"598 Giacomo Vrioni Vrioni\n",
"599 Miloš Vulić Vulic\n",
"600 Walace Walace\n",
"601 Sebastian Walukiewicz Walukiewicz\n",
"602 Maya Yoshida Yoshida\n",
"603 Ashley Young Young\n",
"604 Mattia Zaccagni Zaccagni\n",
"605 Vasilios Zagaritis Zagaritis\n",
"606 Miha Zajc Zajc\n",
"607 Nicola Zalewski Zalewski\n",
"608 Niccolò Zanellato Zanellato\n",
"609 Cristián Zapata Zapata\n",
"610 Duván Zapata Zapata\n",
"611 Gabriele Zappa Zappa\n",
"612 Davide Zappacosta Zappacosta\n",
"613 Simone Zaza Zaza\n",
"614 Marvin Zeegelaar Zeegelaar\n",
"615 Piotr Zieliński Zielinski\n",
"616 Joshua Zirkzee Zirkzee\n",
"617 Jeroen Zoet Zoet\n",
"618 Filip Đuričić uricic\n",
"619 Nícolas Andrade Andrade\n",
"620 Emil Audero Audero\n",
"621 Alessandro Berardi Berardi\n",
"622 Gianluigi Buffon Buffon\n",
"623 Simone Colombi Colombi\n",
"624 Andrea Consigli Consigli\n",
"625 Alex Cordaz Cordaz\n",
"626 Angelo da Costa Júnior Junior\n",
"627 Alessio Cragno Cragno\n",
"628 Gian Crespi Crespi\n",
"629 Gianluigi Donnarumma Donnarumma\n",
"630 Bartłomiej Drągowski Dragowski\n",
"631 Marco Festa Festa\n",
"632 Daniel Fuzato Fuzato\n",
"633 Manuel Gasparini Gasparini\n",
"634 Pierluigi Gollini Gollini\n",
"635 Samir Handanović Handanovic\n",
"636 Karlo Letica Letica\n",
"637 Pau López Lopez\n",
"638 Niccolò Manfredini Manfredini\n",
"639 Federico Marchetti Marchetti\n",
"640 Alex Meret Meret\n",
"641 Vanja Milinković-Savić Milinkovic-Savic\n",
"642 Antonio Mirante Mirante\n",
"643 Lorenzo Montipò Montipo\n",
"644 Juan Musso Musso\n",
"645 David Ospina Ospina\n",
"646 Daniele Padelli Padelli\n",
"647 Alberto Paleari Paleari\n",
"648 Ivor Pandur Pandur\n",
"649 Gianluca Pegolo Pegolo\n",
"650 Mattia Perin Perin\n",
"651 Carlo Pinsoglio Pinsoglio\n",
"652 Ivan Provedel Provedel\n",
"653 Ionuț Radu Radu\n",
"654 Rafael Rafael\n",
"655 Federico Ravaglia Ravaglia\n",
"656 Pepe Reina Reina\n",
"657 Simone Scuffet Scuffet\n",
"658 Luigi Sepe Sepe\n",
"659 Marco Silvestri Silvestri\n",
"660 Salvatore Sirigu Sirigu\n",
"661 Łukasz Skorupski Skorupski\n",
"662 Marco Sportiello Sportiello\n",
"663 Thomas Strakosha Strakosha\n",
"664 Wojciech Szczęsny Szczesny\n",
"665 Ciprian Tătărușanu Tatarusanu\n",
"666 Pietro Terracciano Terracciano\n",
"667 Samir Ujkani Ujkani\n",
"668 Guglielmo Vicario Vicario\n",
"669 Jeroen Zoet Zoet\n"
]
}
],
"source": [
"print(players[['player', 'surname']].to_string())"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "3e759b1b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Maehle\n",
"Kjaer\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>Monza</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",
" </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 Monza\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"
]
},
"execution_count": 30,
"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"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "f96eaaa1",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\2214747983.py:14: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players['surname'][i] = spl[-2]\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\2214747983.py:15: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players['initial'][i] = spl[-1][0]\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\2214747983.py:17: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players['surname'][i] = spl[-1]\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\2214747983.py:18: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players['initial'][i] = ''\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>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>350</td>\n",
" <td>P</td>\n",
" <td>Donnarumma G.</td>\n",
" <td>Milan</td>\n",
" <td>Donnarumma</td>\n",
" <td>G</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>250</td>\n",
" <td>P</td>\n",
" <td>Handanovic</td>\n",
" <td>Inter</td>\n",
" <td>Handanovic</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>610</td>\n",
" <td>P</td>\n",
" <td>Gollini</td>\n",
" <td>Atalanta</td>\n",
" <td>Gollini</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>761</td>\n",
" <td>P</td>\n",
" <td>Audero</td>\n",
" <td>Sampdoria</td>\n",
" <td>Audero</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>559</th>\n",
" <td>5361</td>\n",
" <td>A</td>\n",
" <td>Rabbi</td>\n",
" <td>Bologna</td>\n",
" <td>Rabbi</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>560</th>\n",
" <td>5378</td>\n",
" <td>A</td>\n",
" <td>Oddei</td>\n",
" <td>Sassuolo</td>\n",
" <td>Oddei</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>561</th>\n",
" <td>5414</td>\n",
" <td>A</td>\n",
" <td>Karamoko Is.</td>\n",
" <td>Sassuolo</td>\n",
" <td>Karamoko</td>\n",
" <td>I</td>\n",
" </tr>\n",
" <tr>\n",
" <th>562</th>\n",
" <td>5419</td>\n",
" <td>A</td>\n",
" <td>Correia</td>\n",
" <td>Juventus</td>\n",
" <td>Correia</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>563</th>\n",
" <td>5436</td>\n",
" <td>A</td>\n",
" <td>Raimondo</td>\n",
" <td>Bologna</td>\n",
" <td>Raimondo</td>\n",
" <td></td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>564 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" id r name team surname initial\n",
"0 350 P Donnarumma G. Milan Donnarumma G\n",
"1 453 P Szczesny Juventus Szczesny \n",
"2 250 P Handanovic Inter Handanovic \n",
"3 610 P Gollini Atalanta Gollini \n",
"4 761 P Audero Sampdoria Audero \n",
".. ... .. ... ... ... ...\n",
"559 5361 A Rabbi Bologna Rabbi \n",
"560 5378 A Oddei Sassuolo Oddei \n",
"561 5414 A Karamoko Is. Sassuolo Karamoko I\n",
"562 5419 A Correia Juventus Correia \n",
"563 5436 A Raimondo Bologna Raimondo \n",
"\n",
"[564 rows x 6 columns]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fc_data = pd.read_excel('fantacalcio/season' + season + '/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['surname'][i] = spl[-2]\n",
" fc_players['initial'][i] = spl[-1][0]\n",
" else:\n",
" fc_players['surname'][i] = spl[-1]\n",
" fc_players['initial'][i] = ''\n",
" \n",
"fc_players\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9c50e4b5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\1456862974.py:4: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players['fb_ID'][i] = -1\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\1456862974.py:10: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players['fb_ID'][i] = j\n"
]
}
],
"source": [
"fc_players['fb_ID'] = fc_players['id']\n",
"\n",
"for i in range(fc_players.shape[0]):\n",
" fc_players['fb_ID'][i] = -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",
" fc_players['fb_ID'][i] = j\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5a3e2771",
"metadata": {},
"outputs": [],
"source": [
"for i in range(fc_players.shape[0]):\n",
" if(fc_players['fb_ID'][i] == -1):\n",
" print(fc_players['name'][i])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3b4a36af",
"metadata": {},
"outputs": [],
"source": [
"fc_players"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1d73a312",
"metadata": {},
"outputs": [],
"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",
" "
]
},
{
"cell_type": "code",
"execution_count": 14,
"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": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keeper_players.columns[4:]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "eb9127a9",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.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_9056\\3175819694.py:12: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" fc_players[columns_to_copy[j]][i] = keeper_players[columns_to_copy[j]][fc_players['fb_ID'][i] - delta_k]\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",
" if(fc_players['fb_ID'][i] - delta_k >= 0):\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]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "8f2ee8b9",
"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>nationality</th>\n",
" <th>position</th>\n",
" <th>team</th>\n",
" <th>age</th>\n",
" <th>birth_year</th>\n",
" <th>gk_games</th>\n",
" <th>gk_games_starts</th>\n",
" <th>gk_minutes</th>\n",
" <th>gk_goals_against</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>Emil Audero</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Sampdoria</td>\n",
" <td>24</td>\n",
" <td>1997</td>\n",
" <td>29.0</td>\n",
" <td>29.0</td>\n",
" <td>2560.0</td>\n",
" <td>48.0</td>\n",
" <td>...</td>\n",
" <td>36.3</td>\n",
" <td>212.0</td>\n",
" <td>67.9</td>\n",
" <td>47.6</td>\n",
" <td>418.0</td>\n",
" <td>22.0</td>\n",
" <td>5.3</td>\n",
" <td>25.0</td>\n",
" <td>0.88</td>\n",
" <td>13.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Nicola Bagnolini</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Bologna</td>\n",
" <td>17</td>\n",
" <td>2004</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>61.0</td>\n",
" <td>1.0</td>\n",
" <td>100.0</td>\n",
" <td>60.0</td>\n",
" <td>3.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",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Francesco Bardi</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Bologna</td>\n",
" <td>29</td>\n",
" <td>1992</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>177.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>33.0</td>\n",
" <td>13.0</td>\n",
" <td>38.5</td>\n",
" <td>32.1</td>\n",
" <td>24.0</td>\n",
" <td>2.0</td>\n",
" <td>8.3</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>5.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Vid Belec</td>\n",
" <td>si SVN</td>\n",
" <td>GK</td>\n",
" <td>Salernitana</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>23.0</td>\n",
" <td>21.0</td>\n",
" <td>1938.0</td>\n",
" <td>49.0</td>\n",
" <td>...</td>\n",
" <td>39.5</td>\n",
" <td>182.0</td>\n",
" <td>73.1</td>\n",
" <td>49.9</td>\n",
" <td>329.0</td>\n",
" <td>12.0</td>\n",
" <td>3.6</td>\n",
" <td>14.0</td>\n",
" <td>0.65</td>\n",
" <td>12.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Alessandro Berardi</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Hellas Verona</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>90.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>39.7</td>\n",
" <td>7.0</td>\n",
" <td>100.0</td>\n",
" <td>58.7</td>\n",
" <td>12.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",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Etrit Berisha</td>\n",
" <td>al ALB</td>\n",
" <td>GK</td>\n",
" <td>Torino</td>\n",
" <td>32</td>\n",
" <td>1989</td>\n",
" <td>10.0</td>\n",
" <td>10.0</td>\n",
" <td>900.0</td>\n",
" <td>8.0</td>\n",
" <td>...</td>\n",
" <td>39.4</td>\n",
" <td>78.0</td>\n",
" <td>87.2</td>\n",
" <td>58.6</td>\n",
" <td>148.0</td>\n",
" <td>7.0</td>\n",
" <td>4.7</td>\n",
" <td>10.0</td>\n",
" <td>1.00</td>\n",
" <td>14.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Andrea Consigli</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Sassuolo</td>\n",
" <td>34</td>\n",
" <td>1987</td>\n",
" <td>37.0</td>\n",
" <td>37.0</td>\n",
" <td>3322.0</td>\n",
" <td>63.0</td>\n",
" <td>...</td>\n",
" <td>30.9</td>\n",
" <td>246.0</td>\n",
" <td>31.7</td>\n",
" <td>28.8</td>\n",
" <td>491.0</td>\n",
" <td>21.0</td>\n",
" <td>4.3</td>\n",
" <td>30.0</td>\n",
" <td>0.81</td>\n",
" <td>13.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Alessio Cragno</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Cagliari</td>\n",
" <td>27</td>\n",
" <td>1994</td>\n",
" <td>35.0</td>\n",
" <td>35.0</td>\n",
" <td>3150.0</td>\n",
" <td>63.0</td>\n",
" <td>...</td>\n",
" <td>39.4</td>\n",
" <td>316.0</td>\n",
" <td>73.4</td>\n",
" <td>48.2</td>\n",
" <td>484.0</td>\n",
" <td>22.0</td>\n",
" <td>4.5</td>\n",
" <td>33.0</td>\n",
" <td>0.94</td>\n",
" <td>15.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Bartłomiej Drągowski</td>\n",
" <td>pl POL</td>\n",
" <td>GK</td>\n",
" <td>Fiorentina</td>\n",
" <td>23</td>\n",
" <td>1997</td>\n",
" <td>7.0</td>\n",
" <td>7.0</td>\n",
" <td>556.0</td>\n",
" <td>8.0</td>\n",
" <td>...</td>\n",
" <td>30.8</td>\n",
" <td>39.0</td>\n",
" <td>43.6</td>\n",
" <td>40.2</td>\n",
" <td>61.0</td>\n",
" <td>2.0</td>\n",
" <td>3.3</td>\n",
" <td>20.0</td>\n",
" <td>3.24</td>\n",
" <td>22.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Wladimiro Falcone</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Sampdoria</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>10.0</td>\n",
" <td>9.0</td>\n",
" <td>855.0</td>\n",
" <td>14.0</td>\n",
" <td>...</td>\n",
" <td>33.2</td>\n",
" <td>74.0</td>\n",
" <td>70.3</td>\n",
" <td>45.0</td>\n",
" <td>164.0</td>\n",
" <td>7.0</td>\n",
" <td>4.3</td>\n",
" <td>2.0</td>\n",
" <td>0.21</td>\n",
" <td>10.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Vincenzo Fiorillo</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Salernitana</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>90.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>36.4</td>\n",
" <td>12.0</td>\n",
" <td>83.3</td>\n",
" <td>50.8</td>\n",
" <td>16.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Luca Gemello</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Torino</td>\n",
" <td>21</td>\n",
" <td>2000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>90.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>47.8</td>\n",
" <td>3.0</td>\n",
" <td>100.0</td>\n",
" <td>56.3</td>\n",
" <td>10.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>21.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Samir Handanović</td>\n",
" <td>si SVN</td>\n",
" <td>GK</td>\n",
" <td>Inter</td>\n",
" <td>37</td>\n",
" <td>1984</td>\n",
" <td>37.0</td>\n",
" <td>37.0</td>\n",
" <td>3330.0</td>\n",
" <td>30.0</td>\n",
" <td>...</td>\n",
" <td>28.1</td>\n",
" <td>142.0</td>\n",
" <td>20.4</td>\n",
" <td>26.5</td>\n",
" <td>393.0</td>\n",
" <td>15.0</td>\n",
" <td>3.8</td>\n",
" <td>10.0</td>\n",
" <td>0.27</td>\n",
" <td>11.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Luca Lezzerini</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Venezia</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>6.0</td>\n",
" <td>6.0</td>\n",
" <td>495.0</td>\n",
" <td>9.0</td>\n",
" <td>...</td>\n",
" <td>30.3</td>\n",
" <td>44.0</td>\n",
" <td>34.1</td>\n",
" <td>31.0</td>\n",
" <td>100.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>3.0</td>\n",
" <td>0.55</td>\n",
" <td>13.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Niki Mäenpää</td>\n",
" <td>fi FIN</td>\n",
" <td>GK</td>\n",
" <td>Venezia</td>\n",
" <td>36</td>\n",
" <td>1985</td>\n",
" <td>17.0</td>\n",
" <td>16.0</td>\n",
" <td>1485.0</td>\n",
" <td>27.0</td>\n",
" <td>...</td>\n",
" <td>36.0</td>\n",
" <td>143.0</td>\n",
" <td>39.2</td>\n",
" <td>35.4</td>\n",
" <td>275.0</td>\n",
" <td>6.0</td>\n",
" <td>2.2</td>\n",
" <td>10.0</td>\n",
" <td>0.61</td>\n",
" <td>10.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Mike Maignan</td>\n",
" <td>fr FRA</td>\n",
" <td>GK</td>\n",
" <td>Milan</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>32.0</td>\n",
" <td>32.0</td>\n",
" <td>2880.0</td>\n",
" <td>21.0</td>\n",
" <td>...</td>\n",
" <td>33.0</td>\n",
" <td>149.0</td>\n",
" <td>38.9</td>\n",
" <td>36.5</td>\n",
" <td>347.0</td>\n",
" <td>25.0</td>\n",
" <td>7.2</td>\n",
" <td>45.0</td>\n",
" <td>1.41</td>\n",
" <td>16.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Davide Marfella</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Napoli</td>\n",
" <td>21</td>\n",
" <td>1999</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>11.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.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",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Alex Meret</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Napoli</td>\n",
" <td>24</td>\n",
" <td>1997</td>\n",
" <td>7.0</td>\n",
" <td>7.0</td>\n",
" <td>619.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>25.1</td>\n",
" <td>36.0</td>\n",
" <td>25.0</td>\n",
" <td>26.5</td>\n",
" <td>89.0</td>\n",
" <td>3.0</td>\n",
" <td>3.4</td>\n",
" <td>5.0</td>\n",
" <td>0.73</td>\n",
" <td>14.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Vanja Milinković-Savić</td>\n",
" <td>rs SRB</td>\n",
" <td>GK</td>\n",
" <td>Torino</td>\n",
" <td>24</td>\n",
" <td>1997</td>\n",
" <td>27.0</td>\n",
" <td>27.0</td>\n",
" <td>2430.0</td>\n",
" <td>33.0</td>\n",
" <td>...</td>\n",
" <td>44.4</td>\n",
" <td>169.0</td>\n",
" <td>91.1</td>\n",
" <td>66.3</td>\n",
" <td>290.0</td>\n",
" <td>18.0</td>\n",
" <td>6.2</td>\n",
" <td>22.0</td>\n",
" <td>0.81</td>\n",
" <td>14.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Lorenzo Montipò</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Hellas Verona</td>\n",
" <td>25</td>\n",
" <td>1996</td>\n",
" <td>34.0</td>\n",
" <td>34.0</td>\n",
" <td>3060.0</td>\n",
" <td>50.0</td>\n",
" <td>...</td>\n",
" <td>42.3</td>\n",
" <td>231.0</td>\n",
" <td>68.4</td>\n",
" <td>46.5</td>\n",
" <td>495.0</td>\n",
" <td>21.0</td>\n",
" <td>4.2</td>\n",
" <td>23.0</td>\n",
" <td>0.68</td>\n",
" <td>13.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Juan Musso</td>\n",
" <td>ar ARG</td>\n",
" <td>GK</td>\n",
" <td>Atalanta</td>\n",
" <td>27</td>\n",
" <td>1994</td>\n",
" <td>33.0</td>\n",
" <td>33.0</td>\n",
" <td>2932.0</td>\n",
" <td>42.0</td>\n",
" <td>...</td>\n",
" <td>31.3</td>\n",
" <td>208.0</td>\n",
" <td>69.2</td>\n",
" <td>49.7</td>\n",
" <td>308.0</td>\n",
" <td>28.0</td>\n",
" <td>9.1</td>\n",
" <td>39.0</td>\n",
" <td>1.20</td>\n",
" <td>16.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>David Ospina</td>\n",
" <td>co COL</td>\n",
" <td>GK</td>\n",
" <td>Napoli</td>\n",
" <td>32</td>\n",
" <td>1988</td>\n",
" <td>31.0</td>\n",
" <td>31.0</td>\n",
" <td>2790.0</td>\n",
" <td>25.0</td>\n",
" <td>...</td>\n",
" <td>28.6</td>\n",
" <td>135.0</td>\n",
" <td>14.1</td>\n",
" <td>22.5</td>\n",
" <td>353.0</td>\n",
" <td>18.0</td>\n",
" <td>5.1</td>\n",
" <td>31.0</td>\n",
" <td>1.00</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Daniele Padelli</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Udinese</td>\n",
" <td>35</td>\n",
" <td>1985</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>270.0</td>\n",
" <td>8.0</td>\n",
" <td>...</td>\n",
" <td>29.6</td>\n",
" <td>22.0</td>\n",
" <td>50.0</td>\n",
" <td>40.9</td>\n",
" <td>56.0</td>\n",
" <td>1.0</td>\n",
" <td>1.8</td>\n",
" <td>2.0</td>\n",
" <td>0.67</td>\n",
" <td>13.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Ivor Pandur</td>\n",
" <td>hr CRO</td>\n",
" <td>GK</td>\n",
" <td>Hellas Verona</td>\n",
" <td>21</td>\n",
" <td>2000</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>270.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>33.1</td>\n",
" <td>15.0</td>\n",
" <td>53.3</td>\n",
" <td>37.1</td>\n",
" <td>22.0</td>\n",
" <td>1.0</td>\n",
" <td>4.5</td>\n",
" <td>1.0</td>\n",
" <td>0.33</td>\n",
" <td>11.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>Rui Patrício</td>\n",
" <td>pt POR</td>\n",
" <td>GK</td>\n",
" <td>Roma</td>\n",
" <td>33</td>\n",
" <td>1988</td>\n",
" <td>38.0</td>\n",
" <td>38.0</td>\n",
" <td>3420.0</td>\n",
" <td>43.0</td>\n",
" <td>...</td>\n",
" <td>34.2</td>\n",
" <td>222.0</td>\n",
" <td>32.0</td>\n",
" <td>31.5</td>\n",
" <td>393.0</td>\n",
" <td>12.0</td>\n",
" <td>3.1</td>\n",
" <td>26.0</td>\n",
" <td>0.68</td>\n",
" <td>14.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>Gianluca Pegolo</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Sassuolo</td>\n",
" <td>40</td>\n",
" <td>1981</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>90.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>26.7</td>\n",
" <td>8.0</td>\n",
" <td>12.5</td>\n",
" <td>19.8</td>\n",
" <td>8.0</td>\n",
" <td>1.0</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>Mattia Perin</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Juventus</td>\n",
" <td>28</td>\n",
" <td>1992</td>\n",
" <td>5.0</td>\n",
" <td>5.0</td>\n",
" <td>405.0</td>\n",
" <td>7.0</td>\n",
" <td>...</td>\n",
" <td>29.6</td>\n",
" <td>26.0</td>\n",
" <td>23.1</td>\n",
" <td>29.2</td>\n",
" <td>77.0</td>\n",
" <td>1.0</td>\n",
" <td>1.3</td>\n",
" <td>4.0</td>\n",
" <td>0.89</td>\n",
" <td>12.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>Carlo Pinsoglio</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Juventus</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>45.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>29.6</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>37.0</td>\n",
" <td>12.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",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>Ivan Provedel</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Spezia</td>\n",
" <td>27</td>\n",
" <td>1994</td>\n",
" <td>31.0</td>\n",
" <td>31.0</td>\n",
" <td>2761.0</td>\n",
" <td>52.0</td>\n",
" <td>...</td>\n",
" <td>40.1</td>\n",
" <td>229.0</td>\n",
" <td>69.4</td>\n",
" <td>51.7</td>\n",
" <td>476.0</td>\n",
" <td>28.0</td>\n",
" <td>5.9</td>\n",
" <td>25.0</td>\n",
" <td>0.81</td>\n",
" <td>11.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>Ionuț Radu</td>\n",
" <td>ro ROU</td>\n",
" <td>GK</td>\n",
" <td>Inter</td>\n",
" <td>24</td>\n",
" <td>1997</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>90.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>33.3</td>\n",
" <td>4.0</td>\n",
" <td>25.0</td>\n",
" <td>29.8</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>16.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>Boris Radunović</td>\n",
" <td>rs SRB</td>\n",
" <td>GK</td>\n",
" <td>Cagliari</td>\n",
" <td>25</td>\n",
" <td>1996</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>270.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>41.5</td>\n",
" <td>28.0</td>\n",
" <td>82.1</td>\n",
" <td>51.1</td>\n",
" <td>42.0</td>\n",
" <td>1.0</td>\n",
" <td>2.4</td>\n",
" <td>1.0</td>\n",
" <td>0.33</td>\n",
" <td>13.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>Nicola Ravaglia</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Sampdoria</td>\n",
" <td>32</td>\n",
" <td>1988</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>57.0</td>\n",
" <td>2.0</td>\n",
" <td>100.0</td>\n",
" <td>65.5</td>\n",
" <td>1.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",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>Pepe Reina</td>\n",
" <td>es ESP</td>\n",
" <td>GK</td>\n",
" <td>Lazio</td>\n",
" <td>38</td>\n",
" <td>1982</td>\n",
" <td>15.0</td>\n",
" <td>15.0</td>\n",
" <td>1350.0</td>\n",
" <td>29.0</td>\n",
" <td>...</td>\n",
" <td>29.8</td>\n",
" <td>99.0</td>\n",
" <td>29.3</td>\n",
" <td>30.1</td>\n",
" <td>186.0</td>\n",
" <td>10.0</td>\n",
" <td>5.4</td>\n",
" <td>10.0</td>\n",
" <td>0.67</td>\n",
" <td>13.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>Sergio Romero</td>\n",
" <td>ar ARG</td>\n",
" <td>GK</td>\n",
" <td>Venezia</td>\n",
" <td>34</td>\n",
" <td>1987</td>\n",
" <td>16.0</td>\n",
" <td>16.0</td>\n",
" <td>1440.0</td>\n",
" <td>33.0</td>\n",
" <td>...</td>\n",
" <td>34.6</td>\n",
" <td>142.0</td>\n",
" <td>45.8</td>\n",
" <td>38.8</td>\n",
" <td>265.0</td>\n",
" <td>14.0</td>\n",
" <td>5.3</td>\n",
" <td>11.0</td>\n",
" <td>0.69</td>\n",
" <td>11.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>Francesco Rossi</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Atalanta</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>37.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>37.8</td>\n",
" <td>4.0</td>\n",
" <td>25.0</td>\n",
" <td>39.3</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>18.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>Giacomo Satalino</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Sassuolo</td>\n",
" <td>22</td>\n",
" <td>1999</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>8.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>22.0</td>\n",
" <td>1.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",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>Adrian Šemper</td>\n",
" <td>hr CRO</td>\n",
" <td>GK</td>\n",
" <td>Genoa</td>\n",
" <td>23</td>\n",
" <td>1998</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>90.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>38.5</td>\n",
" <td>7.0</td>\n",
" <td>85.7</td>\n",
" <td>52.0</td>\n",
" <td>14.0</td>\n",
" <td>2.0</td>\n",
" <td>14.3</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>11.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>Luigi Sepe</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Salernitana</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>16.0</td>\n",
" <td>16.0</td>\n",
" <td>1392.0</td>\n",
" <td>24.0</td>\n",
" <td>...</td>\n",
" <td>40.8</td>\n",
" <td>130.0</td>\n",
" <td>63.8</td>\n",
" <td>46.4</td>\n",
" <td>235.0</td>\n",
" <td>10.0</td>\n",
" <td>4.3</td>\n",
" <td>13.0</td>\n",
" <td>0.84</td>\n",
" <td>16.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>Marco Silvestri</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Udinese</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>35.0</td>\n",
" <td>35.0</td>\n",
" <td>3150.0</td>\n",
" <td>50.0</td>\n",
" <td>...</td>\n",
" <td>36.7</td>\n",
" <td>252.0</td>\n",
" <td>46.8</td>\n",
" <td>38.4</td>\n",
" <td>462.0</td>\n",
" <td>16.0</td>\n",
" <td>3.5</td>\n",
" <td>10.0</td>\n",
" <td>0.29</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>Salvatore Sirigu</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Genoa</td>\n",
" <td>34</td>\n",
" <td>1987</td>\n",
" <td>37.0</td>\n",
" <td>37.0</td>\n",
" <td>3330.0</td>\n",
" <td>59.0</td>\n",
" <td>...</td>\n",
" <td>36.6</td>\n",
" <td>263.0</td>\n",
" <td>68.8</td>\n",
" <td>45.9</td>\n",
" <td>476.0</td>\n",
" <td>14.0</td>\n",
" <td>2.9</td>\n",
" <td>20.0</td>\n",
" <td>0.54</td>\n",
" <td>12.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>Łukasz Skorupski</td>\n",
" <td>pl POL</td>\n",
" <td>GK</td>\n",
" <td>Bologna</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>36.0</td>\n",
" <td>36.0</td>\n",
" <td>3240.0</td>\n",
" <td>53.0</td>\n",
" <td>...</td>\n",
" <td>34.0</td>\n",
" <td>294.0</td>\n",
" <td>28.9</td>\n",
" <td>26.6</td>\n",
" <td>498.0</td>\n",
" <td>27.0</td>\n",
" <td>5.4</td>\n",
" <td>14.0</td>\n",
" <td>0.39</td>\n",
" <td>11.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>Marco Sportiello</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Atalanta</td>\n",
" <td>29</td>\n",
" <td>1992</td>\n",
" <td>5.0</td>\n",
" <td>5.0</td>\n",
" <td>450.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>26.0</td>\n",
" <td>28.0</td>\n",
" <td>64.3</td>\n",
" <td>47.0</td>\n",
" <td>45.0</td>\n",
" <td>1.0</td>\n",
" <td>2.2</td>\n",
" <td>4.0</td>\n",
" <td>0.80</td>\n",
" <td>13.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>Thomas Strakosha</td>\n",
" <td>al ALB</td>\n",
" <td>GK</td>\n",
" <td>Lazio</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>23.0</td>\n",
" <td>23.0</td>\n",
" <td>2070.0</td>\n",
" <td>29.0</td>\n",
" <td>...</td>\n",
" <td>28.5</td>\n",
" <td>119.0</td>\n",
" <td>20.2</td>\n",
" <td>23.6</td>\n",
" <td>283.0</td>\n",
" <td>11.0</td>\n",
" <td>3.9</td>\n",
" <td>16.0</td>\n",
" <td>0.70</td>\n",
" <td>14.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>Wojciech Szczęsny</td>\n",
" <td>pl POL</td>\n",
" <td>GK</td>\n",
" <td>Juventus</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>33.0</td>\n",
" <td>33.0</td>\n",
" <td>2970.0</td>\n",
" <td>29.0</td>\n",
" <td>...</td>\n",
" <td>30.8</td>\n",
" <td>172.0</td>\n",
" <td>29.7</td>\n",
" <td>31.5</td>\n",
" <td>481.0</td>\n",
" <td>24.0</td>\n",
" <td>5.0</td>\n",
" <td>25.0</td>\n",
" <td>0.76</td>\n",
" <td>13.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>Ciprian Tătărușanu</td>\n",
" <td>ro ROU</td>\n",
" <td>GK</td>\n",
" <td>Milan</td>\n",
" <td>35</td>\n",
" <td>1986</td>\n",
" <td>6.0</td>\n",
" <td>6.0</td>\n",
" <td>540.0</td>\n",
" <td>10.0</td>\n",
" <td>...</td>\n",
" <td>33.3</td>\n",
" <td>36.0</td>\n",
" <td>36.1</td>\n",
" <td>35.0</td>\n",
" <td>82.0</td>\n",
" <td>6.0</td>\n",
" <td>7.3</td>\n",
" <td>3.0</td>\n",
" <td>0.50</td>\n",
" <td>12.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>Pietro Terracciano</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Fiorentina</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>32.0</td>\n",
" <td>31.0</td>\n",
" <td>2862.0</td>\n",
" <td>43.0</td>\n",
" <td>...</td>\n",
" <td>32.2</td>\n",
" <td>170.0</td>\n",
" <td>35.3</td>\n",
" <td>33.7</td>\n",
" <td>291.0</td>\n",
" <td>22.0</td>\n",
" <td>7.6</td>\n",
" <td>51.0</td>\n",
" <td>1.60</td>\n",
" <td>16.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>Guglielmo Vicario</td>\n",
" <td>it ITA</td>\n",
" <td>GK</td>\n",
" <td>Empoli</td>\n",
" <td>24</td>\n",
" <td>1996</td>\n",
" <td>38.0</td>\n",
" <td>38.0</td>\n",
" <td>3420.0</td>\n",
" <td>70.0</td>\n",
" <td>...</td>\n",
" <td>29.5</td>\n",
" <td>257.0</td>\n",
" <td>41.6</td>\n",
" <td>37.5</td>\n",
" <td>602.0</td>\n",
" <td>35.0</td>\n",
" <td>5.8</td>\n",
" <td>38.0</td>\n",
" <td>1.00</td>\n",
" <td>13.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>Jeroen Zoet</td>\n",
" <td>nl NED</td>\n",
" <td>GK</td>\n",
" <td>Spezia</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>7.0</td>\n",
" <td>7.0</td>\n",
" <td>630.0</td>\n",
" <td>19.0</td>\n",
" <td>...</td>\n",
" <td>30.7</td>\n",
" <td>54.0</td>\n",
" <td>37.0</td>\n",
" <td>37.4</td>\n",
" <td>95.0</td>\n",
" <td>2.0</td>\n",
" <td>2.1</td>\n",
" <td>6.0</td>\n",
" <td>0.86</td>\n",
" <td>16.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>Petar Zovko</td>\n",
" <td>ba BIH</td>\n",
" <td>GK</td>\n",
" <td>Spezia</td>\n",
" <td>19</td>\n",
" <td>2002</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>29.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>35.9</td>\n",
" <td>2.0</td>\n",
" <td>50.0</td>\n",
" <td>35.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>6.21</td>\n",
" <td>28.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>49 rows × 47 columns</p>\n",
"</div>"
],
"text/plain": [
" player nationality position team age \\\n",
"0 Emil Audero it ITA GK Sampdoria 24 \n",
"1 Nicola Bagnolini it ITA GK Bologna 17 \n",
"2 Francesco Bardi it ITA GK Bologna 29 \n",
"3 Vid Belec si SVN GK Salernitana 31 \n",
"4 Alessandro Berardi it ITA GK Hellas Verona 30 \n",
"5 Etrit Berisha al ALB GK Torino 32 \n",
"6 Andrea Consigli it ITA GK Sassuolo 34 \n",
"7 Alessio Cragno it ITA GK Cagliari 27 \n",
"8 Bartłomiej Drągowski pl POL GK Fiorentina 23 \n",
"9 Wladimiro Falcone it ITA GK Sampdoria 26 \n",
"10 Vincenzo Fiorillo it ITA GK Salernitana 31 \n",
"11 Luca Gemello it ITA GK Torino 21 \n",
"12 Samir Handanović si SVN GK Inter 37 \n",
"13 Luca Lezzerini it ITA GK Venezia 26 \n",
"14 Niki Mäenpää fi FIN GK Venezia 36 \n",
"15 Mike Maignan fr FRA GK Milan 26 \n",
"16 Davide Marfella it ITA GK Napoli 21 \n",
"17 Alex Meret it ITA GK Napoli 24 \n",
"18 Vanja Milinković-Savić rs SRB GK Torino 24 \n",
"19 Lorenzo Montipò it ITA GK Hellas Verona 25 \n",
"20 Juan Musso ar ARG GK Atalanta 27 \n",
"21 David Ospina co COL GK Napoli 32 \n",
"22 Daniele Padelli it ITA GK Udinese 35 \n",
"23 Ivor Pandur hr CRO GK Hellas Verona 21 \n",
"24 Rui Patrício pt POR GK Roma 33 \n",
"25 Gianluca Pegolo it ITA GK Sassuolo 40 \n",
"26 Mattia Perin it ITA GK Juventus 28 \n",
"27 Carlo Pinsoglio it ITA GK Juventus 31 \n",
"28 Ivan Provedel it ITA GK Spezia 27 \n",
"29 Ionuț Radu ro ROU GK Inter 24 \n",
"30 Boris Radunović rs SRB GK Cagliari 25 \n",
"31 Nicola Ravaglia it ITA GK Sampdoria 32 \n",
"32 Pepe Reina es ESP GK Lazio 38 \n",
"33 Sergio Romero ar ARG GK Venezia 34 \n",
"34 Francesco Rossi it ITA GK Atalanta 30 \n",
"35 Giacomo Satalino it ITA GK Sassuolo 22 \n",
"36 Adrian Šemper hr CRO GK Genoa 23 \n",
"37 Luigi Sepe it ITA GK Salernitana 30 \n",
"38 Marco Silvestri it ITA GK Udinese 30 \n",
"39 Salvatore Sirigu it ITA GK Genoa 34 \n",
"40 Łukasz Skorupski pl POL GK Bologna 30 \n",
"41 Marco Sportiello it ITA GK Atalanta 29 \n",
"42 Thomas Strakosha al ALB GK Lazio 26 \n",
"43 Wojciech Szczęsny pl POL GK Juventus 31 \n",
"44 Ciprian Tătărușanu ro ROU GK Milan 35 \n",
"45 Pietro Terracciano it ITA GK Fiorentina 31 \n",
"46 Guglielmo Vicario it ITA GK Empoli 24 \n",
"47 Jeroen Zoet nl NED GK Spezia 30 \n",
"48 Petar Zovko ba BIH GK Spezia 19 \n",
"\n",
" birth_year gk_games gk_games_starts gk_minutes gk_goals_against ... \\\n",
"0 1997 29.0 29.0 2560.0 48.0 ... \n",
"1 2004 1.0 0.0 3.0 0.0 ... \n",
"2 1992 2.0 2.0 177.0 2.0 ... \n",
"3 1990 23.0 21.0 1938.0 49.0 ... \n",
"4 1991 1.0 1.0 90.0 3.0 ... \n",
"5 1989 10.0 10.0 900.0 8.0 ... \n",
"6 1987 37.0 37.0 3322.0 63.0 ... \n",
"7 1994 35.0 35.0 3150.0 63.0 ... \n",
"8 1997 7.0 7.0 556.0 8.0 ... \n",
"9 1995 10.0 9.0 855.0 14.0 ... \n",
"10 1990 1.0 1.0 90.0 5.0 ... \n",
"11 2000 1.0 1.0 90.0 0.0 ... \n",
"12 1984 37.0 37.0 3330.0 30.0 ... \n",
"13 1995 6.0 6.0 495.0 9.0 ... \n",
"14 1985 17.0 16.0 1485.0 27.0 ... \n",
"15 1995 32.0 32.0 2880.0 21.0 ... \n",
"16 1999 1.0 0.0 11.0 0.0 ... \n",
"17 1997 7.0 7.0 619.0 6.0 ... \n",
"18 1997 27.0 27.0 2430.0 33.0 ... \n",
"19 1996 34.0 34.0 3060.0 50.0 ... \n",
"20 1994 33.0 33.0 2932.0 42.0 ... \n",
"21 1988 31.0 31.0 2790.0 25.0 ... \n",
"22 1985 3.0 3.0 270.0 8.0 ... \n",
"23 2000 3.0 3.0 270.0 6.0 ... \n",
"24 1988 38.0 38.0 3420.0 43.0 ... \n",
"25 1981 1.0 1.0 90.0 3.0 ... \n",
"26 1992 5.0 5.0 405.0 7.0 ... \n",
"27 1990 1.0 0.0 45.0 1.0 ... \n",
"28 1994 31.0 31.0 2761.0 52.0 ... \n",
"29 1997 1.0 1.0 90.0 2.0 ... \n",
"30 1996 3.0 3.0 270.0 5.0 ... \n",
"31 1988 1.0 0.0 5.0 1.0 ... \n",
"32 1982 15.0 15.0 1350.0 29.0 ... \n",
"33 1987 16.0 16.0 1440.0 33.0 ... \n",
"34 1991 1.0 0.0 37.0 1.0 ... \n",
"35 1999 1.0 0.0 8.0 0.0 ... \n",
"36 1998 1.0 1.0 90.0 1.0 ... \n",
"37 1991 16.0 16.0 1392.0 24.0 ... \n",
"38 1991 35.0 35.0 3150.0 50.0 ... \n",
"39 1987 37.0 37.0 3330.0 59.0 ... \n",
"40 1991 36.0 36.0 3240.0 53.0 ... \n",
"41 1992 5.0 5.0 450.0 5.0 ... \n",
"42 1995 23.0 23.0 2070.0 29.0 ... \n",
"43 1990 33.0 33.0 2970.0 29.0 ... \n",
"44 1986 6.0 6.0 540.0 10.0 ... \n",
"45 1990 32.0 31.0 2862.0 43.0 ... \n",
"46 1996 38.0 38.0 3420.0 70.0 ... \n",
"47 1991 7.0 7.0 630.0 19.0 ... \n",
"48 2002 1.0 0.0 29.0 0.0 ... \n",
"\n",
" gk_passes_length_avg gk_goal_kicks gk_pct_goal_kicks_launched \\\n",
"0 36.3 212.0 67.9 \n",
"1 61.0 1.0 100.0 \n",
"2 33.0 13.0 38.5 \n",
"3 39.5 182.0 73.1 \n",
"4 39.7 7.0 100.0 \n",
"5 39.4 78.0 87.2 \n",
"6 30.9 246.0 31.7 \n",
"7 39.4 316.0 73.4 \n",
"8 30.8 39.0 43.6 \n",
"9 33.2 74.0 70.3 \n",
"10 36.4 12.0 83.3 \n",
"11 47.8 3.0 100.0 \n",
"12 28.1 142.0 20.4 \n",
"13 30.3 44.0 34.1 \n",
"14 36.0 143.0 39.2 \n",
"15 33.0 149.0 38.9 \n",
"16 15.0 0.0 0.0 \n",
"17 25.1 36.0 25.0 \n",
"18 44.4 169.0 91.1 \n",
"19 42.3 231.0 68.4 \n",
"20 31.3 208.0 69.2 \n",
"21 28.6 135.0 14.1 \n",
"22 29.6 22.0 50.0 \n",
"23 33.1 15.0 53.3 \n",
"24 34.2 222.0 32.0 \n",
"25 26.7 8.0 12.5 \n",
"26 29.6 26.0 23.1 \n",
"27 29.6 1.0 0.0 \n",
"28 40.1 229.0 69.4 \n",
"29 33.3 4.0 25.0 \n",
"30 41.5 28.0 82.1 \n",
"31 57.0 2.0 100.0 \n",
"32 29.8 99.0 29.3 \n",
"33 34.6 142.0 45.8 \n",
"34 37.8 4.0 25.0 \n",
"35 0.0 1.0 0.0 \n",
"36 38.5 7.0 85.7 \n",
"37 40.8 130.0 63.8 \n",
"38 36.7 252.0 46.8 \n",
"39 36.6 263.0 68.8 \n",
"40 34.0 294.0 28.9 \n",
"41 26.0 28.0 64.3 \n",
"42 28.5 119.0 20.2 \n",
"43 30.8 172.0 29.7 \n",
"44 33.3 36.0 36.1 \n",
"45 32.2 170.0 35.3 \n",
"46 29.5 257.0 41.6 \n",
"47 30.7 54.0 37.0 \n",
"48 35.9 2.0 50.0 \n",
"\n",
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
"0 47.6 418.0 22.0 \n",
"1 60.0 3.0 0.0 \n",
"2 32.1 24.0 2.0 \n",
"3 49.9 329.0 12.0 \n",
"4 58.7 12.0 0.0 \n",
"5 58.6 148.0 7.0 \n",
"6 28.8 491.0 21.0 \n",
"7 48.2 484.0 22.0 \n",
"8 40.2 61.0 2.0 \n",
"9 45.0 164.0 7.0 \n",
"10 50.8 16.0 0.0 \n",
"11 56.3 10.0 0.0 \n",
"12 26.5 393.0 15.0 \n",
"13 31.0 100.0 2.0 \n",
"14 35.4 275.0 6.0 \n",
"15 36.5 347.0 25.0 \n",
"16 0.0 1.0 0.0 \n",
"17 26.5 89.0 3.0 \n",
"18 66.3 290.0 18.0 \n",
"19 46.5 495.0 21.0 \n",
"20 49.7 308.0 28.0 \n",
"21 22.5 353.0 18.0 \n",
"22 40.9 56.0 1.0 \n",
"23 37.1 22.0 1.0 \n",
"24 31.5 393.0 12.0 \n",
"25 19.8 8.0 1.0 \n",
"26 29.2 77.0 1.0 \n",
"27 37.0 12.0 0.0 \n",
"28 51.7 476.0 28.0 \n",
"29 29.8 4.0 0.0 \n",
"30 51.1 42.0 1.0 \n",
"31 65.5 1.0 0.0 \n",
"32 30.1 186.0 10.0 \n",
"33 38.8 265.0 14.0 \n",
"34 39.3 3.0 0.0 \n",
"35 22.0 1.0 0.0 \n",
"36 52.0 14.0 2.0 \n",
"37 46.4 235.0 10.0 \n",
"38 38.4 462.0 16.0 \n",
"39 45.9 476.0 14.0 \n",
"40 26.6 498.0 27.0 \n",
"41 47.0 45.0 1.0 \n",
"42 23.6 283.0 11.0 \n",
"43 31.5 481.0 24.0 \n",
"44 35.0 82.0 6.0 \n",
"45 33.7 291.0 22.0 \n",
"46 37.5 602.0 35.0 \n",
"47 37.4 95.0 2.0 \n",
"48 35.0 4.0 0.0 \n",
"\n",
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
"0 5.3 25.0 \n",
"1 0.0 0.0 \n",
"2 8.3 0.0 \n",
"3 3.6 14.0 \n",
"4 0.0 0.0 \n",
"5 4.7 10.0 \n",
"6 4.3 30.0 \n",
"7 4.5 33.0 \n",
"8 3.3 20.0 \n",
"9 4.3 2.0 \n",
"10 0.0 0.0 \n",
"11 0.0 1.0 \n",
"12 3.8 10.0 \n",
"13 2.0 3.0 \n",
"14 2.2 10.0 \n",
"15 7.2 45.0 \n",
"16 0.0 0.0 \n",
"17 3.4 5.0 \n",
"18 6.2 22.0 \n",
"19 4.2 23.0 \n",
"20 9.1 39.0 \n",
"21 5.1 31.0 \n",
"22 1.8 2.0 \n",
"23 4.5 1.0 \n",
"24 3.1 26.0 \n",
"25 12.5 0.0 \n",
"26 1.3 4.0 \n",
"27 0.0 0.0 \n",
"28 5.9 25.0 \n",
"29 0.0 1.0 \n",
"30 2.4 1.0 \n",
"31 0.0 0.0 \n",
"32 5.4 10.0 \n",
"33 5.3 11.0 \n",
"34 0.0 0.0 \n",
"35 0.0 0.0 \n",
"36 14.3 0.0 \n",
"37 4.3 13.0 \n",
"38 3.5 10.0 \n",
"39 2.9 20.0 \n",
"40 5.4 14.0 \n",
"41 2.2 4.0 \n",
"42 3.9 16.0 \n",
"43 5.0 25.0 \n",
"44 7.3 3.0 \n",
"45 7.6 51.0 \n",
"46 5.8 38.0 \n",
"47 2.1 6.0 \n",
"48 0.0 2.0 \n",
"\n",
" gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \n",
"0 0.88 13.5 \n",
"1 0.00 0.0 \n",
"2 0.00 5.5 \n",
"3 0.65 12.7 \n",
"4 0.00 0.0 \n",
"5 1.00 14.6 \n",
"6 0.81 13.4 \n",
"7 0.94 15.0 \n",
"8 3.24 22.3 \n",
"9 0.21 10.2 \n",
"10 0.00 4.0 \n",
"11 1.00 21.0 \n",
"12 0.27 11.2 \n",
"13 0.55 13.8 \n",
"14 0.61 10.8 \n",
"15 1.41 16.8 \n",
"16 0.00 0.0 \n",
"17 0.73 14.6 \n",
"18 0.81 14.3 \n",
"19 0.68 13.1 \n",
"20 1.20 16.5 \n",
"21 1.00 17.0 \n",
"22 0.67 13.2 \n",
"23 0.33 11.3 \n",
"24 0.68 14.3 \n",
"25 0.00 6.0 \n",
"26 0.89 12.6 \n",
"27 0.00 0.0 \n",
"28 0.81 11.8 \n",
"29 1.00 16.0 \n",
"30 0.33 13.8 \n",
"31 0.00 0.0 \n",
"32 0.67 13.7 \n",
"33 0.69 11.8 \n",
"34 0.00 18.0 \n",
"35 0.00 0.0 \n",
"36 0.00 11.2 \n",
"37 0.84 16.0 \n",
"38 0.29 11.0 \n",
"39 0.54 12.9 \n",
"40 0.39 11.3 \n",
"41 0.80 13.9 \n",
"42 0.70 14.5 \n",
"43 0.76 13.5 \n",
"44 0.50 12.5 \n",
"45 1.60 16.7 \n",
"46 1.00 13.9 \n",
"47 0.86 16.4 \n",
"48 6.21 28.5 \n",
"\n",
"[49 rows x 47 columns]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keeper_players"
]
},
{
"cell_type": "code",
"execution_count": 17,
"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>4312</td>\n",
" <td>P</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Maignan</td>\n",
" <td></td>\n",
" <td>647</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>33.0</td>\n",
" <td>149</td>\n",
" <td>38.9</td>\n",
" <td>36.5</td>\n",
" <td>347</td>\n",
" <td>25</td>\n",
" <td>7.2</td>\n",
" <td>45</td>\n",
" <td>1.41</td>\n",
" <td>16.8</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>675</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>30.8</td>\n",
" <td>172</td>\n",
" <td>29.7</td>\n",
" <td>31.5</td>\n",
" <td>481</td>\n",
" <td>24</td>\n",
" <td>5.0</td>\n",
" <td>25</td>\n",
" <td>0.76</td>\n",
" <td>13.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2468</td>\n",
" <td>P</td>\n",
" <td>Ospina</td>\n",
" <td>Napoli</td>\n",
" <td>Ospina</td>\n",
" <td></td>\n",
" <td>653</td>\n",
" <td>32</td>\n",
" <td>1988</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>28.6</td>\n",
" <td>135</td>\n",
" <td>14.1</td>\n",
" <td>22.5</td>\n",
" <td>353</td>\n",
" <td>18</td>\n",
" <td>5.1</td>\n",
" <td>31</td>\n",
" <td>1.00</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>250</td>\n",
" <td>P</td>\n",
" <td>Handanovic</td>\n",
" <td>Inter</td>\n",
" <td>Handanovic</td>\n",
" <td></td>\n",
" <td>644</td>\n",
" <td>37</td>\n",
" <td>1984</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>28.1</td>\n",
" <td>142</td>\n",
" <td>20.4</td>\n",
" <td>26.5</td>\n",
" <td>393</td>\n",
" <td>15</td>\n",
" <td>3.8</td>\n",
" <td>10</td>\n",
" <td>0.27</td>\n",
" <td>11.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>316</td>\n",
" <td>P</td>\n",
" <td>Berisha</td>\n",
" <td>Torino</td>\n",
" <td>Berisha</td>\n",
" <td></td>\n",
" <td>637</td>\n",
" <td>32</td>\n",
" <td>1989</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>39.4</td>\n",
" <td>78</td>\n",
" <td>87.2</td>\n",
" <td>58.6</td>\n",
" <td>148</td>\n",
" <td>7</td>\n",
" <td>4.7</td>\n",
" <td>10</td>\n",
" <td>1.00</td>\n",
" <td>14.6</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>545</th>\n",
" <td>5391</td>\n",
" <td>A</td>\n",
" <td>Kokorin</td>\n",
" <td>Fiorentina</td>\n",
" <td>Kokorin</td>\n",
" <td></td>\n",
" <td>281</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>6</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>546</th>\n",
" <td>5458</td>\n",
" <td>A</td>\n",
" <td>Munteanu</td>\n",
" <td>Fiorentina</td>\n",
" <td>Munteanu</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>547</th>\n",
" <td>5459</td>\n",
" <td>A</td>\n",
" <td>Buksa</td>\n",
" <td>Genoa</td>\n",
" <td>Buksa</td>\n",
" <td></td>\n",
" <td>83</td>\n",
" <td>18</td>\n",
" <td>2003</td>\n",
" <td>4</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>548</th>\n",
" <td>5505</td>\n",
" <td>A</td>\n",
" <td>Kaio Jorge</td>\n",
" <td>Juventus</td>\n",
" <td>Jorge</td>\n",
" <td></td>\n",
" <td>264</td>\n",
" <td>19</td>\n",
" <td>2002</td>\n",
" <td>9</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>549</th>\n",
" <td>5785</td>\n",
" <td>A</td>\n",
" <td>Lazetic</td>\n",
" <td>Milan</td>\n",
" <td>Lazetic</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>550 rows × 167 columns</p>\n",
"</div>"
],
"text/plain": [
" id r name team surname initial fb_ID age \\\n",
"0 4312 P Maignan Milan Maignan 647 26 \n",
"1 453 P Szczesny Juventus Szczesny 675 31 \n",
"2 2468 P Ospina Napoli Ospina 653 32 \n",
"3 250 P Handanovic Inter Handanovic 644 37 \n",
"4 316 P Berisha Torino Berisha 637 32 \n",
".. ... .. ... ... ... ... ... ... \n",
"545 5391 A Kokorin Fiorentina Kokorin 281 30 \n",
"546 5458 A Munteanu Fiorentina Munteanu -1 0 \n",
"547 5459 A Buksa Genoa Buksa 83 18 \n",
"548 5505 A Kaio Jorge Juventus Jorge 264 19 \n",
"549 5785 A Lazetic Milan Lazetic -1 0 \n",
"\n",
" birth_year games ... gk_passes_length_avg gk_goal_kicks \\\n",
"0 1995 0 ... 33.0 149 \n",
"1 1990 0 ... 30.8 172 \n",
"2 1988 0 ... 28.6 135 \n",
"3 1984 0 ... 28.1 142 \n",
"4 1989 0 ... 39.4 78 \n",
".. ... ... ... ... ... \n",
"545 1991 6 ... 0.0 0 \n",
"546 0 0 ... 0.0 0 \n",
"547 2003 4 ... 0.0 0 \n",
"548 2002 9 ... 0.0 0 \n",
"549 0 0 ... 0.0 0 \n",
"\n",
" gk_pct_goal_kicks_launched gk_goal_kick_length_avg gk_crosses \\\n",
"0 38.9 36.5 347 \n",
"1 29.7 31.5 481 \n",
"2 14.1 22.5 353 \n",
"3 20.4 26.5 393 \n",
"4 87.2 58.6 148 \n",
".. ... ... ... \n",
"545 0.0 0.0 0 \n",
"546 0.0 0.0 0 \n",
"547 0.0 0.0 0 \n",
"548 0.0 0.0 0 \n",
"549 0.0 0.0 0 \n",
"\n",
" gk_crosses_stopped gk_crosses_stopped_pct \\\n",
"0 25 7.2 \n",
"1 24 5.0 \n",
"2 18 5.1 \n",
"3 15 3.8 \n",
"4 7 4.7 \n",
".. ... ... \n",
"545 0 0.0 \n",
"546 0 0.0 \n",
"547 0 0.0 \n",
"548 0 0.0 \n",
"549 0 0.0 \n",
"\n",
" gk_def_actions_outside_pen_area gk_def_actions_outside_pen_area_per90 \\\n",
"0 45 1.41 \n",
"1 25 0.76 \n",
"2 31 1.00 \n",
"3 10 0.27 \n",
"4 10 1.00 \n",
".. ... ... \n",
"545 0 0.00 \n",
"546 0 0.00 \n",
"547 0 0.00 \n",
"548 0 0.00 \n",
"549 0 0.00 \n",
"\n",
" gk_avg_distance_def_actions \n",
"0 16.8 \n",
"1 13.5 \n",
"2 17.0 \n",
"3 11.2 \n",
"4 14.6 \n",
".. ... \n",
"545 0.0 \n",
"546 0.0 \n",
"547 0.0 \n",
"548 0.0 \n",
"549 0.0 \n",
"\n",
"[550 rows x 167 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fc_players"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "5c502f5e",
"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>6.265625</td>\n",
" <td>0.483871</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>6.121212</td>\n",
" <td>0.628012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>6.258065</td>\n",
" <td>0.332899</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>6.162162</td>\n",
" <td>0.533399</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>6.100000</td>\n",
" <td>0.700000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>545</th>\n",
" <td>6.106778</td>\n",
" <td>0.250641</td>\n",
" </tr>\n",
" <tr>\n",
" <th>546</th>\n",
" <td>6.284484</td>\n",
" <td>0.401907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>547</th>\n",
" <td>5.942560</td>\n",
" <td>0.627453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>548</th>\n",
" <td>5.946936</td>\n",
" <td>0.380747</td>\n",
" </tr>\n",
" <tr>\n",
" <th>549</th>\n",
" <td>6.158530</td>\n",
" <td>0.318287</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" vote_avg vote_std\n",
"0 6.265625 0.483871\n",
"1 6.121212 0.628012\n",
"2 6.258065 0.332899\n",
"3 6.162162 0.533399\n",
"4 6.100000 0.700000\n",
".. ... ...\n",
"545 6.106778 0.250641\n",
"546 6.284484 0.401907\n",
"547 5.942560 0.627453\n",
"548 5.946936 0.380747\n",
"549 6.158530 0.318287\n",
"\n",
"[550 rows x 2 columns]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"votes = pd.read_excel('mid_outputs/season' + season + '/players_votes.xlsx', index_col = 0)\n",
"\n",
"mean_def = 6\n",
"std_def = 0.58\n",
"\n",
"mean_def_P = 6.22\n",
"std_def_P = 0.43\n",
"\n",
"\n",
"min_votes = 6\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",
" 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": 19,
"id": "9e1bc63b",
"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>4312</td>\n",
" <td>P</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Maignan</td>\n",
" <td></td>\n",
" <td>647</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>38.9</td>\n",
" <td>36.5</td>\n",
" <td>347</td>\n",
" <td>25</td>\n",
" <td>7.2</td>\n",
" <td>45</td>\n",
" <td>1.41</td>\n",
" <td>16.8</td>\n",
" <td>6.265625</td>\n",
" <td>0.483871</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>675</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>29.7</td>\n",
" <td>31.5</td>\n",
" <td>481</td>\n",
" <td>24</td>\n",
" <td>5.0</td>\n",
" <td>25</td>\n",
" <td>0.76</td>\n",
" <td>13.5</td>\n",
" <td>6.121212</td>\n",
" <td>0.628012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2468</td>\n",
" <td>P</td>\n",
" <td>Ospina</td>\n",
" <td>Napoli</td>\n",
" <td>Ospina</td>\n",
" <td></td>\n",
" <td>653</td>\n",
" <td>32</td>\n",
" <td>1988</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>14.1</td>\n",
" <td>22.5</td>\n",
" <td>353</td>\n",
" <td>18</td>\n",
" <td>5.1</td>\n",
" <td>31</td>\n",
" <td>1.00</td>\n",
" <td>17.0</td>\n",
" <td>6.258065</td>\n",
" <td>0.332899</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>250</td>\n",
" <td>P</td>\n",
" <td>Handanovic</td>\n",
" <td>Inter</td>\n",
" <td>Handanovic</td>\n",
" <td></td>\n",
" <td>644</td>\n",
" <td>37</td>\n",
" <td>1984</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>20.4</td>\n",
" <td>26.5</td>\n",
" <td>393</td>\n",
" <td>15</td>\n",
" <td>3.8</td>\n",
" <td>10</td>\n",
" <td>0.27</td>\n",
" <td>11.2</td>\n",
" <td>6.162162</td>\n",
" <td>0.533399</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>316</td>\n",
" <td>P</td>\n",
" <td>Berisha</td>\n",
" <td>Torino</td>\n",
" <td>Berisha</td>\n",
" <td></td>\n",
" <td>637</td>\n",
" <td>32</td>\n",
" <td>1989</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>87.2</td>\n",
" <td>58.6</td>\n",
" <td>148</td>\n",
" <td>7</td>\n",
" <td>4.7</td>\n",
" <td>10</td>\n",
" <td>1.00</td>\n",
" <td>14.6</td>\n",
" <td>6.100000</td>\n",
" <td>0.700000</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>545</th>\n",
" <td>5391</td>\n",
" <td>A</td>\n",
" <td>Kokorin</td>\n",
" <td>Fiorentina</td>\n",
" <td>Kokorin</td>\n",
" <td></td>\n",
" <td>281</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>6</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.106778</td>\n",
" <td>0.250641</td>\n",
" </tr>\n",
" <tr>\n",
" <th>546</th>\n",
" <td>5458</td>\n",
" <td>A</td>\n",
" <td>Munteanu</td>\n",
" <td>Fiorentina</td>\n",
" <td>Munteanu</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.284484</td>\n",
" <td>0.401907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>547</th>\n",
" <td>5459</td>\n",
" <td>A</td>\n",
" <td>Buksa</td>\n",
" <td>Genoa</td>\n",
" <td>Buksa</td>\n",
" <td></td>\n",
" <td>83</td>\n",
" <td>18</td>\n",
" <td>2003</td>\n",
" <td>4</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.942560</td>\n",
" <td>0.627453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>548</th>\n",
" <td>5505</td>\n",
" <td>A</td>\n",
" <td>Kaio Jorge</td>\n",
" <td>Juventus</td>\n",
" <td>Jorge</td>\n",
" <td></td>\n",
" <td>264</td>\n",
" <td>19</td>\n",
" <td>2002</td>\n",
" <td>9</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.946936</td>\n",
" <td>0.380747</td>\n",
" </tr>\n",
" <tr>\n",
" <th>549</th>\n",
" <td>5785</td>\n",
" <td>A</td>\n",
" <td>Lazetic</td>\n",
" <td>Milan</td>\n",
" <td>Lazetic</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.158530</td>\n",
" <td>0.318287</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 169 columns</p>\n",
"</div>"
],
"text/plain": [
" id r name team surname initial fb_ID age \\\n",
"0 4312 P Maignan Milan Maignan 647 26 \n",
"1 453 P Szczesny Juventus Szczesny 675 31 \n",
"2 2468 P Ospina Napoli Ospina 653 32 \n",
"3 250 P Handanovic Inter Handanovic 644 37 \n",
"4 316 P Berisha Torino Berisha 637 32 \n",
".. ... .. ... ... ... ... ... ... \n",
"545 5391 A Kokorin Fiorentina Kokorin 281 30 \n",
"546 5458 A Munteanu Fiorentina Munteanu -1 0 \n",
"547 5459 A Buksa Genoa Buksa 83 18 \n",
"548 5505 A Kaio Jorge Juventus Jorge 264 19 \n",
"549 5785 A Lazetic Milan Lazetic -1 0 \n",
"\n",
" birth_year games ... gk_pct_goal_kicks_launched \\\n",
"0 1995 0 ... 38.9 \n",
"1 1990 0 ... 29.7 \n",
"2 1988 0 ... 14.1 \n",
"3 1984 0 ... 20.4 \n",
"4 1989 0 ... 87.2 \n",
".. ... ... ... ... \n",
"545 1991 6 ... 0.0 \n",
"546 0 0 ... 0.0 \n",
"547 2003 4 ... 0.0 \n",
"548 2002 9 ... 0.0 \n",
"549 0 0 ... 0.0 \n",
"\n",
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
"0 36.5 347 25 \n",
"1 31.5 481 24 \n",
"2 22.5 353 18 \n",
"3 26.5 393 15 \n",
"4 58.6 148 7 \n",
".. ... ... ... \n",
"545 0.0 0 0 \n",
"546 0.0 0 0 \n",
"547 0.0 0 0 \n",
"548 0.0 0 0 \n",
"549 0.0 0 0 \n",
"\n",
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
"0 7.2 45 \n",
"1 5.0 25 \n",
"2 5.1 31 \n",
"3 3.8 10 \n",
"4 4.7 10 \n",
".. ... ... \n",
"545 0.0 0 \n",
"546 0.0 0 \n",
"547 0.0 0 \n",
"548 0.0 0 \n",
"549 0.0 0 \n",
"\n",
" gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \\\n",
"0 1.41 16.8 \n",
"1 0.76 13.5 \n",
"2 1.00 17.0 \n",
"3 0.27 11.2 \n",
"4 1.00 14.6 \n",
".. ... ... \n",
"545 0.00 0.0 \n",
"546 0.00 0.0 \n",
"547 0.00 0.0 \n",
"548 0.00 0.0 \n",
"549 0.00 0.0 \n",
"\n",
" vote_avg vote_std \n",
"0 6.265625 0.483871 \n",
"1 6.121212 0.628012 \n",
"2 6.258065 0.332899 \n",
"3 6.162162 0.533399 \n",
"4 6.100000 0.700000 \n",
".. ... ... \n",
"545 6.106778 0.250641 \n",
"546 6.284484 0.401907 \n",
"547 5.942560 0.627453 \n",
"548 5.946936 0.380747 \n",
"549 6.158530 0.318287 \n",
"\n",
"[550 rows x 169 columns]"
]
},
"execution_count": 19,
"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": 20,
"id": "494db0f4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sportiello, 0.8333333333333334\n",
"Bardi, 0.33333333333333337\n",
"Padelli, 0.5\n",
"Pinsoglio, 0.16666666666666663\n",
"Semper, 0.16666666666666663\n",
"Zovko, 0.16666666666666663\n",
"Radunovic, 0.5\n",
"Perin, 0.8333333333333334\n",
"Mirante, 0.0\n",
"Ujkani, 0.0\n",
"Marchetti, 0.0\n",
"Pegolo, 0.16666666666666663\n",
"Radu I., 0.16666666666666663\n",
"Cordaz, 0.0\n",
"Aresti, 0.0\n",
"Fiorillo, 0.16666666666666663\n",
"Satalino, 0.16666666666666663\n",
"Santurro, 0.0\n",
"Rossi F., 0.16666666666666663\n",
"Fuzato, 0.0\n",
"Rosati, 0.0\n",
"Berardi A., 0.16666666666666663\n",
"Gemello, 0.16666666666666663\n",
"Ravaglia, 0.16666666666666663\n",
"Pandur, 0.5\n",
"Boer, 0.0\n",
"Gasparini, 0.0\n",
"Furlan, 0.0\n",
"Adamonis, 0.0\n",
"Marfella, 0.16666666666666663\n",
"Bertinato, 0.0\n",
"Molla, 0.0\n",
"Russo, 0.0\n",
"Piana, 0.0\n",
"Neri, 0.0\n"
]
}
],
"source": [
"min_gk_games = 6\n",
"\n",
"fc_players_newgk = fc_players.copy()\n",
"\n",
"columns_to_avg = fc_players.columns[123:] # 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": 21,
"id": "3d4eec07",
"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>4312</td>\n",
" <td>P</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Maignan</td>\n",
" <td></td>\n",
" <td>647</td>\n",
" <td>26</td>\n",
" <td>1995</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>38.9</td>\n",
" <td>36.5</td>\n",
" <td>347.0</td>\n",
" <td>25.0</td>\n",
" <td>7.2</td>\n",
" <td>45.0</td>\n",
" <td>1.41</td>\n",
" <td>16.8</td>\n",
" <td>6.265625</td>\n",
" <td>0.483871</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>675</td>\n",
" <td>31</td>\n",
" <td>1990</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>29.7</td>\n",
" <td>31.5</td>\n",
" <td>481.0</td>\n",
" <td>24.0</td>\n",
" <td>5.0</td>\n",
" <td>25.0</td>\n",
" <td>0.76</td>\n",
" <td>13.5</td>\n",
" <td>6.121212</td>\n",
" <td>0.628012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2468</td>\n",
" <td>P</td>\n",
" <td>Ospina</td>\n",
" <td>Napoli</td>\n",
" <td>Ospina</td>\n",
" <td></td>\n",
" <td>653</td>\n",
" <td>32</td>\n",
" <td>1988</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>14.1</td>\n",
" <td>22.5</td>\n",
" <td>353.0</td>\n",
" <td>18.0</td>\n",
" <td>5.1</td>\n",
" <td>31.0</td>\n",
" <td>1.00</td>\n",
" <td>17.0</td>\n",
" <td>6.258065</td>\n",
" <td>0.332899</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>250</td>\n",
" <td>P</td>\n",
" <td>Handanovic</td>\n",
" <td>Inter</td>\n",
" <td>Handanovic</td>\n",
" <td></td>\n",
" <td>644</td>\n",
" <td>37</td>\n",
" <td>1984</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>20.4</td>\n",
" <td>26.5</td>\n",
" <td>393.0</td>\n",
" <td>15.0</td>\n",
" <td>3.8</td>\n",
" <td>10.0</td>\n",
" <td>0.27</td>\n",
" <td>11.2</td>\n",
" <td>6.162162</td>\n",
" <td>0.533399</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>316</td>\n",
" <td>P</td>\n",
" <td>Berisha</td>\n",
" <td>Torino</td>\n",
" <td>Berisha</td>\n",
" <td></td>\n",
" <td>637</td>\n",
" <td>32</td>\n",
" <td>1989</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>87.2</td>\n",
" <td>58.6</td>\n",
" <td>148.0</td>\n",
" <td>7.0</td>\n",
" <td>4.7</td>\n",
" <td>10.0</td>\n",
" <td>1.00</td>\n",
" <td>14.6</td>\n",
" <td>6.100000</td>\n",
" <td>0.700000</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>545</th>\n",
" <td>5391</td>\n",
" <td>A</td>\n",
" <td>Kokorin</td>\n",
" <td>Fiorentina</td>\n",
" <td>Kokorin</td>\n",
" <td></td>\n",
" <td>281</td>\n",
" <td>30</td>\n",
" <td>1991</td>\n",
" <td>6</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.106778</td>\n",
" <td>0.250641</td>\n",
" </tr>\n",
" <tr>\n",
" <th>546</th>\n",
" <td>5458</td>\n",
" <td>A</td>\n",
" <td>Munteanu</td>\n",
" <td>Fiorentina</td>\n",
" <td>Munteanu</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.284484</td>\n",
" <td>0.401907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>547</th>\n",
" <td>5459</td>\n",
" <td>A</td>\n",
" <td>Buksa</td>\n",
" <td>Genoa</td>\n",
" <td>Buksa</td>\n",
" <td></td>\n",
" <td>83</td>\n",
" <td>18</td>\n",
" <td>2003</td>\n",
" <td>4</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.942560</td>\n",
" <td>0.627453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>548</th>\n",
" <td>5505</td>\n",
" <td>A</td>\n",
" <td>Kaio Jorge</td>\n",
" <td>Juventus</td>\n",
" <td>Jorge</td>\n",
" <td></td>\n",
" <td>264</td>\n",
" <td>19</td>\n",
" <td>2002</td>\n",
" <td>9</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.946936</td>\n",
" <td>0.380747</td>\n",
" </tr>\n",
" <tr>\n",
" <th>549</th>\n",
" <td>5785</td>\n",
" <td>A</td>\n",
" <td>Lazetic</td>\n",
" <td>Milan</td>\n",
" <td>Lazetic</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.158530</td>\n",
" <td>0.318287</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 169 columns</p>\n",
"</div>"
],
"text/plain": [
" id r name team surname initial fb_ID age \\\n",
"0 4312 P Maignan Milan Maignan 647 26 \n",
"1 453 P Szczesny Juventus Szczesny 675 31 \n",
"2 2468 P Ospina Napoli Ospina 653 32 \n",
"3 250 P Handanovic Inter Handanovic 644 37 \n",
"4 316 P Berisha Torino Berisha 637 32 \n",
".. ... .. ... ... ... ... ... ... \n",
"545 5391 A Kokorin Fiorentina Kokorin 281 30 \n",
"546 5458 A Munteanu Fiorentina Munteanu -1 0 \n",
"547 5459 A Buksa Genoa Buksa 83 18 \n",
"548 5505 A Kaio Jorge Juventus Jorge 264 19 \n",
"549 5785 A Lazetic Milan Lazetic -1 0 \n",
"\n",
" birth_year games ... gk_pct_goal_kicks_launched \\\n",
"0 1995 0 ... 38.9 \n",
"1 1990 0 ... 29.7 \n",
"2 1988 0 ... 14.1 \n",
"3 1984 0 ... 20.4 \n",
"4 1989 0 ... 87.2 \n",
".. ... ... ... ... \n",
"545 1991 6 ... 0.0 \n",
"546 0 0 ... 0.0 \n",
"547 2003 4 ... 0.0 \n",
"548 2002 9 ... 0.0 \n",
"549 0 0 ... 0.0 \n",
"\n",
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
"0 36.5 347.0 25.0 \n",
"1 31.5 481.0 24.0 \n",
"2 22.5 353.0 18.0 \n",
"3 26.5 393.0 15.0 \n",
"4 58.6 148.0 7.0 \n",
".. ... ... ... \n",
"545 0.0 0.0 0.0 \n",
"546 0.0 0.0 0.0 \n",
"547 0.0 0.0 0.0 \n",
"548 0.0 0.0 0.0 \n",
"549 0.0 0.0 0.0 \n",
"\n",
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
"0 7.2 45.0 \n",
"1 5.0 25.0 \n",
"2 5.1 31.0 \n",
"3 3.8 10.0 \n",
"4 4.7 10.0 \n",
".. ... ... \n",
"545 0.0 0.0 \n",
"546 0.0 0.0 \n",
"547 0.0 0.0 \n",
"548 0.0 0.0 \n",
"549 0.0 0.0 \n",
"\n",
" gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \\\n",
"0 1.41 16.8 \n",
"1 0.76 13.5 \n",
"2 1.00 17.0 \n",
"3 0.27 11.2 \n",
"4 1.00 14.6 \n",
".. ... ... \n",
"545 0.00 0.0 \n",
"546 0.00 0.0 \n",
"547 0.00 0.0 \n",
"548 0.00 0.0 \n",
"549 0.00 0.0 \n",
"\n",
" vote_avg vote_std \n",
"0 6.265625 0.483871 \n",
"1 6.121212 0.628012 \n",
"2 6.258065 0.332899 \n",
"3 6.162162 0.533399 \n",
"4 6.100000 0.700000 \n",
".. ... ... \n",
"545 6.106778 0.250641 \n",
"546 6.284484 0.401907 \n",
"547 5.942560 0.627453 \n",
"548 5.946936 0.380747 \n",
"549 6.158530 0.318287 \n",
"\n",
"[550 rows x 169 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fc_players = fc_players_newgk\n",
"\n",
"fc_players"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "8336c025",
"metadata": {},
"outputs": [],
"source": [
"fc_players.to_excel('mid_outputs/season' + season + '/players_stats.xlsx')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b7a7c972",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "f3fc9b1b",
"metadata": {},
"outputs": [],
"source": []
}
],
"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
}