Files
fantabeto/3b_players_dataset_creation_oldseasons.ipynb
T
Giuseppe Musicco b60a8a061c Release
2022-11-12 11:29:20 +01:00

4763 lines
210 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": 46,
"id": "b72a3c5e",
"metadata": {},
"outputs": [],
"source": [
"season = '2122'"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "7c65df92",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 47,
"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": 48,
"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>Tammy Abraham</td>\n",
" <td>Roma</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>Michel Aebischer</td>\n",
" <td>Bologna</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Felix Afena-Gyan</td>\n",
" <td>Roma</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>676</th>\n",
" <td>Ciprian Tătărușanu</td>\n",
" <td>Milan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>677</th>\n",
" <td>Pietro Terracciano</td>\n",
" <td>Fiorentina</td>\n",
" </tr>\n",
" <tr>\n",
" <th>678</th>\n",
" <td>Guglielmo Vicario</td>\n",
" <td>Empoli</td>\n",
" </tr>\n",
" <tr>\n",
" <th>679</th>\n",
" <td>Jeroen Zoet</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>680</th>\n",
" <td>Petar Zovko</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>681 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" player team\n",
"0 Tammy Abraham Roma\n",
"1 Francesco Acerbi Lazio\n",
"2 Michel Aebischer Bologna\n",
"3 Felix Afena-Gyan Roma\n",
"4 Kevin Agudelo Spezia\n",
".. ... ...\n",
"676 Ciprian Tătărușanu Milan\n",
"677 Pietro Terracciano Fiorentina\n",
"678 Guglielmo Vicario Empoli\n",
"679 Jeroen Zoet Spezia\n",
"680 Petar Zovko Spezia\n",
"\n",
"[681 rows x 2 columns]"
]
},
"execution_count": 48,
"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": 49,
"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": 50,
"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": 51,
"id": "ffd6091c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" player surname\n",
"0 Tammy Abraham Abraham\n",
"1 Francesco Acerbi Acerbi\n",
"2 Michel Aebischer Aebischer\n",
"3 Felix Afena-Gyan Afena-Gyan\n",
"4 Kevin Agudelo Agudelo\n",
"5 Ola Aina Aina\n",
"6 Marley Aké Ake\n",
"7 Jean-Daniel Akpa-Akpro Akpa-Akpro\n",
"8 Luis Alberto Alberto\n",
"9 Giorgio Altare Altare\n",
"10 Wisdom Amey Amey\n",
"11 Kelvin Amian Amian\n",
"12 Nadiem Amiri Amiri\n",
"13 Ethan Ampadu Ampadu\n",
"14 Sofyan Amrabat Amrabat\n",
"15 Felipe Anderson Anderson\n",
"16 Ebenezer Annan Annan\n",
"17 Cristian Ansaldi Ansaldi\n",
"18 Janis Antiste Antiste\n",
"19 Mattia Aramu Aramu\n",
"20 Marko Arnautović Arnautovic\n",
"21 Tolgay Arslan Arslan\n",
"22 Arthur Arthur\n",
"23 Kristoffer Askildsen Askildsen\n",
"24 Kristjan Asllani Asllani\n",
"25 Emil Audero Audero\n",
"26 Tommaso Augello Augello\n",
"27 Ramzi Aya Aya\n",
"28 Kaan Ayhan Ayhan\n",
"29 Milan Badelj Badelj\n",
"30 Nicola Bagnolini Bagnolini\n",
"31 Issa Bah Bah\n",
"32 Nedim Bajrami Bajrami\n",
"33 Tiemoué Bakayoko Bakayoko\n",
"34 Tommaso Baldanzi Baldanzi\n",
"35 Keita Baldé Balde\n",
"36 Fodé Ballo-Touré Ballo-Toure\n",
"37 Filippo Bandinelli Bandinelli\n",
"38 Mattia Bani Bani\n",
"39 Antonín Barák Barak\n",
"40 Francesco Bardi Bardi\n",
"41 Nicolò Barella Barella\n",
"42 Musa Barrow Barrow\n",
"43 Daniele Baselli Baselli\n",
"44 Daniele Baselli Baselli\n",
"45 Toma Bašić Basic\n",
"46 Alessandro Bastoni Bastoni\n",
"47 Simone Bastoni Bastoni\n",
"48 Rodrigo Becão Becao\n",
"49 Valon Behrami Behrami\n",
"50 Vid Belec Belec\n",
"51 Raoul Bellanova Bellanova\n",
"52 Andrea Belotti Belotti\n",
"53 Marco Benassi Benassi\n",
"54 Marco Benassi Benassi\n",
"55 Filip Benković Benkovic\n",
"56 Ismaël Bennacer Bennacer\n",
"57 Rodrigo Bentancur Bentancur\n",
"58 Alessandro Berardi Berardi\n",
"59 Domenico Berardi Berardi\n",
"60 Bartosz Bereszyński Bereszynski\n",
"61 Etrit Berisha Berisha\n",
"62 Federico Bernardeschi Bernardeschi\n",
"63 Nicolò Bertola Bertola\n",
"64 Daniel Bessa Bessa\n",
"65 Beto Beto\n",
"66 Luis Binks Binks\n",
"67 Cristiano Biraghi Biraghi\n",
"68 Davide Biraschi Biraschi\n",
"69 Bjarki Bjarkason Bjarkason\n",
"70 Jeremie Boga Boga\n",
"71 Jeremie Boga Boga\n",
"72 Luka Bogdan Bogdan\n",
"73 Emil Bohinen Bohinen\n",
"74 Giacomo Bonaventura Bonaventura\n",
"75 Federico Bonazzoli Bonazzoli\n",
"76 Kevin Bonifazi Bonifazi\n",
"77 Leonardo Bonucci Bonucci\n",
"78 Mehdi Bourabia Bourabia\n",
"79 Edoardo Bove Bove\n",
"80 Josip Brekalo Brekalo\n",
"81 Gleison Bremer Bremer\n",
"82 Marcelo Brozović Brozovic\n",
"83 Aleksander Buksa Buksa\n",
"84 Alessandro Buongiorno Buongiorno\n",
"85 Gianluca Busio Busio\n",
"86 Jovane Cabral Cabral\n",
"87 Liberato Cacace Cacace\n",
"88 Martín Cáceres Caceres\n",
"89 Felipe Caicedo Caicedo\n",
"90 Felipe Caicedo Caicedo\n",
"91 Davide Calabria Calabria\n",
"92 Riccardo Calafiori Calafiori\n",
"93 Riccardo Calafiori Calafiori\n",
"94 Mattia Caldara Caldara\n",
"95 Hakan Çalhanoğlu Calhanoglu\n",
"96 José Callejón Callejon\n",
"97 Andrea Cambiaso Cambiaso\n",
"98 Matteo Cancellieri Cancellieri\n",
"99 Antonio Candreva Candreva\n",
"100 Leonardo Capezzi Capezzi\n",
"101 Gianluca Caprari Caprari\n",
"102 Francesco Caputo Caputo\n",
"103 Francesco Caputo Caputo\n",
"104 Andrea Carboni Carboni\n",
"105 Nicolò Casale Casale\n",
"106 Francesco Cassata Cassata\n",
"107 Samu Castillejo Castillejo\n",
"108 Gaetano Castrovilli Castrovilli\n",
"109 Danilo Cataldi Cataldi\n",
"110 Pietro Ceccaroni Ceccaroni\n",
"111 Federico Ceccherini Ceccherini\n",
"112 Emil Ceide Ceide\n",
"113 Luca Ceppitelli Ceppitelli\n",
"114 Damir Ceter Ceter\n",
"115 Julian Chabot Chabot\n",
"116 Giorgio Chiellini Chiellini\n",
"117 Federico Chiesa Chiesa\n",
"118 Vlad Chiricheș Chiriches\n",
"119 Riccardo Ciervo Ciervo\n",
"120 Moustapha Cissé Cisse\n",
"121 Giorgio Cittadini Cittadini\n",
"122 Ebrima Colley Colley\n",
"123 Omar Colley Colley\n",
"124 Andrea Consigli Consigli\n",
"125 Andrea Conti Conti\n",
"126 Andrea Conti Conti\n",
"127 Diego Coppola Coppola\n",
"128 Joaquín Correa Correa\n",
"129 Lassana Coulibaly Coulibaly\n",
"130 Mamadou Coulibaly Coulibaly\n",
"131 Alessio Cragno Cragno\n",
"132 Domenico Criscito Criscito\n",
"133 Bryan Cristante Cristante\n",
"134 Domen Črnigoj Crnigoj\n",
"135 Giovanni Crociata Crociata\n",
"136 Juan Cuadrado Cuadrado\n",
"137 Mickaël Cuisance Cuisance\n",
"138 Patrick Cutrone Cutrone\n",
"139 Danilo D'Ambrosio DAmbrosio\n",
"140 Mikkel Damsgaard Damsgaard\n",
"141 Danilo Danilo\n",
"142 Ebrima Darboe Darboe\n",
"143 Matteo Darmian Darmian\n",
"144 Paweł Dawidowicz Dawidowicz\n",
"145 Sebastien De Maio Maio\n",
"146 Tommaso De Nipoti Nipoti\n",
"147 Mattia De Sciglio Sciglio\n",
"148 Lorenzo De Silvestri Silvestri\n",
"149 Grégoire Defrel Defrel\n",
"150 Alessandro Deiola Deiola\n",
"151 Filippo Delli Carri Carri\n",
"152 Merih Demiral Demiral\n",
"153 Diego Demme Demme\n",
"154 Fabio Depaoli Depaoli\n",
"155 Fabio Depaoli Depaoli\n",
"156 Mattia Destro Destro\n",
"157 Gerard Deulofeu Deulofeu\n",
"158 Jacopo Dezi Dezi\n",
"159 Samuel Di Carmine Carmine\n",
"160 Federico Di Francesco Francesco\n",
"161 Giovanni Di Lorenzo Lorenzo\n",
"162 Francesco Di Mariano Mariano\n",
"163 Francesco Di Tacchio Tacchio\n",
"164 Amadou Diawara Diawara\n",
"165 Brahim Díaz Diaz\n",
"166 Mitchell Dijks Dijks\n",
"167 Federico Dimarco Dimarco\n",
"168 Filippo Distefano Distefano\n",
"169 Koffi Djidji Djidji\n",
"170 Berat Djimsiti Djimsiti\n",
"171 Nicolás Domínguez Dominguez\n",
"172 Bartłomiej Drągowski Dragowski\n",
"173 Radu Drăgușin Dragusin\n",
"174 Radu Drăgușin Dragusin\n",
"175 Denzel Dumfries Dumfries\n",
"176 Alfred Duncan Duncan\n",
"177 Milan Đurić uric\n",
"178 Filip Đuričić uricic\n",
"179 Paulo Dybala Dybala\n",
"180 Edin Džeko Dzeko\n",
"181 Tyronne Ebuehi Ebuehi\n",
"182 Éderson Ederson\n",
"183 Albin Ekdal Ekdal\n",
"184 Caleb Ekuban Ekuban\n",
"185 Elif Elmas Elmas\n",
"186 Martin Erlic Erlic\n",
"187 Gonzalo Escalante Escalante\n",
"188 Diego Falcinelli Falcinelli\n",
"189 Wladimiro Falcone Falcone\n",
"190 Paolo Faragò Farago\n",
"191 Davide Faraoni Faraoni\n",
"192 Mohamed Fares Fares\n",
"193 Diego Farias Farias\n",
"194 Andrea Favilli Favilli\n",
"195 Federico Fazio Fazio\n",
"196 Luiz Felipe Felipe\n",
"197 Alex Ferrari Ferrari\n",
"198 Salvador Ferrer Ferrer\n",
"199 Riccardo Fiamozzi Fiamozzi\n",
"200 Luca Fiordilino Fiordilino\n",
"201 Vincenzo Fiorillo Fiorillo\n",
"202 Alessandro Florenzi Florenzi\n",
"203 Fernando Forestieri Forestieri\n",
"204 Francesco Forte Forte\n",
"205 Gianluca Frabotta Frabotta\n",
"206 Davide Frattesi Frattesi\n",
"207 Morten Frendrup Frendrup\n",
"208 Remo Freuler Freuler\n",
"209 Matteo Gabbia Gabbia\n",
"210 Manolo Gabbiadini Gabbiadini\n",
"211 Gianluca Gaetano Gaetano\n",
"212 Luca Gagliano Gagliano\n",
"213 Roberto Gagliardini Gagliardini\n",
"214 Riccardo Gagliolo Gagliolo\n",
"215 Nicolas Galazzi Galazzi\n",
"216 Pablo Galdames Millán Millan\n",
"217 Luca Gemello Gemello\n",
"218 Paolo Ghiglione Ghiglione\n",
"219 Faouzi Ghoulam Ghoulam\n",
"220 Sebastian Giovinco Giovinco\n",
"221 Olivier Giroud Giroud\n",
"222 Diego Godín Godin\n",
"223 Edoardo Goldaniga Goldaniga\n",
"224 Edoardo Goldaniga Goldaniga\n",
"225 Cedric Gondo Gondo\n",
"226 Nicolás González Gonzalez\n",
"227 Robin Gosens Gosens\n",
"228 Robin Gosens Gosens\n",
"229 Alberto Grassi Grassi\n",
"230 Albert Guðmundsson Gumundsson\n",
"231 Koray Günter Gunter\n",
"232 Emmanuel Gyasi Gyasi\n",
"233 Norbert Gyömbér Gyomber\n",
"234 Nicolas Haas Haas\n",
"235 Samir Handanović Handanovic\n",
"236 Ridgeciano Haps Haps\n",
"237 Abdou Harroui Harroui\n",
"238 Hans Hateboer Hateboer\n",
"239 Silvan Hefti Hefti\n",
"240 Liam Henderson Henderson\n",
"241 Dalbert Henrique Henrique\n",
"242 Matheus Henrique Henrique\n",
"243 Thomas Henry Henry\n",
"244 Theo Hernández Hernandez\n",
"245 Hernani Hernani\n",
"246 Daan Heymans Heymans\n",
"247 Aaron Hickey Hickey\n",
"248 Martin Hongla Hongla\n",
"249 Sydney van Hooijdonk Hooijdonk\n",
"250 Petko Hristov Hristov\n",
"251 Elseid Hysaj Hysaj\n",
"252 Roger Ibanez Ibanez\n",
"253 Zlatan Ibrahimović Ibrahimovic\n",
"254 Igor Igor\n",
"255 Jonathan Ikone Ikone\n",
"256 Ivan Ilić Ilic\n",
"257 Josip Iličić Ilicic\n",
"258 Ciro Immobile Immobile\n",
"259 Lorenzo Insigne Insigne\n",
"260 Ardian Ismajli Ismajli\n",
"261 Armando Izzo Izzo\n",
"262 Mato Jajalo Jajalo\n",
"263 Paweł Jaroszyński Jaroszynski\n",
"264 Juan Jesus Jesus\n",
"265 Dennis Johnsen Johnsen\n",
"266 Kaio Jorge Jorge\n",
"267 Flavio Junior Bianchi Bianchi\n",
"268 Hamed Junior Traorè Traore\n",
"269 Nikola Kalinić Kalinic\n",
"270 Yayah Kallon Kallon\n",
"271 Pierre Kalulu Kalulu\n",
"272 Dimitrije Kamenović Kamenovic\n",
"273 Rick Karsdorp Karsdorp\n",
"274 Denso Kasius Kasius\n",
"275 Grigoris Kastanos Kastanos\n",
"276 Moise Kean Kean\n",
"277 Wajdi Kechrida Kechrida\n",
"278 Dimitrios Keramitsis Keramitsis\n",
"279 Franck Kessié Kessie\n",
"280 Jakub Kiwior Kiwior\n",
"281 Sofian Kiyine Kiyine\n",
"282 Simon Kjær Kjr\n",
"283 Aleksandr Kokorin Kokorin\n",
"284 Aleksandar Kolarov Kolarov\n",
"285 Teun Koopmeiners Koopmeiners\n",
"286 Kalidou Koulibaly Koulibaly\n",
"287 Christos Kourfalidis Kourfalidis\n",
"288 Viktor Kovalenko Kovalenko\n",
"289 Julian Kristoffersen Kristoffersen\n",
"290 Rade Krunić Krunic\n",
"291 Dejan Kulusevski Kulusevski\n",
"292 Marash Kumbulla Kumbulla\n",
"293 Giorgos Kyriakopoulos Kyriakopoulos\n",
"294 Andrea La Mantia Mantia\n",
"295 Sam Lammers Lammers\n",
"296 Kevin Lasagna Lasagna\n",
"297 Darko Lazović Lazovic\n",
"298 Manuel Lazzari Lazzari\n",
"299 Patrick Leal Leal\n",
"300 Rafael Leão Leao\n",
"301 Lucas Leiva Leiva\n",
"302 Luca Lezzerini Lezzerini\n",
"303 Ben Lhassine Kone Kone\n",
"304 Matthijs de Ligt Ligt\n",
"305 Anderson Lima Lima\n",
"306 Karol Linetty Linetty\n",
"307 Stanislav Lobotka Lobotka\n",
"308 Manuel Locatelli Locatelli\n",
"309 Maxime Lopez Lopez\n",
"310 Matteo Lovato Lovato\n",
"311 Matteo Lovato Lovato\n",
"312 Hirving Lozano Lozano\n",
"313 José Luis Palomino Palomino\n",
"314 Saša Lukić Lukic\n",
"315 Sebastiano Luperto Luperto\n",
"316 Charalambos Lykogiannis Lykogiannis\n",
"317 Joakim Mæhle Mhle\n",
"318 Niki Mäenpää Maenpaa\n",
"319 Giulio Maggiore Maggiore\n",
"320 Francesco Magnanelli Magnanelli\n",
"321 Giangiacomo Magnani Magnani\n",
"322 Giangiacomo Magnani Magnani\n",
"323 Mike Maignan Maignan\n",
"324 Ainsley Maitland-Niles Maitland-Niles\n",
"325 Jean-Victor Makengo Makengo\n",
"326 Nikola Maksimović Maksimovic\n",
"327 Kévin Malcuit Malcuit\n",
"328 Daniel Maldini Maldini\n",
"329 Youssef Maleh Maleh\n",
"330 Ruslan Malinovskyi Malinovskyi\n",
"331 Rey Manaj Manaj\n",
"332 Gianluca Mancini Mancini\n",
"333 Leonardo Mancuso Mancuso\n",
"334 Rolando Mandragora Mandragora\n",
"335 Kostas Manolas Manolas\n",
"336 Riccardo Marchizza Marchizza\n",
"337 Gian Marco Ferrari Ferrari\n",
"338 Davide Marfella Marfella\n",
"339 Pablo Marí Mari\n",
"340 Răzvan Marin Marin\n",
"341 Lautaro Martínez Martinez\n",
"342 Lucas Martínez Quarta Quarta\n",
"343 Adam Marušić Marusic\n",
"344 Andrea Masiello Masiello\n",
"345 Aleš Matějů Mateju\n",
"346 Borja Mayoral Mayoral\n",
"347 Pasquale Mazzocchi Mazzocchi\n",
"348 Pasquale Mazzocchi Mazzocchi\n",
"349 Ibrahima Mbaye Mbaye\n",
"350 Weston McKennie McKennie\n",
"351 Gary Medel Medel\n",
"352 Filippo Melegoni Melegoni\n",
"353 Arthur Melo Melo\n",
"354 Alex Meret Meret\n",
"355 Yıldırım Mert Çetin Cetin\n",
"356 Dries Mertens Mertens\n",
"357 Junior Messias Messias\n",
"358 Kingsley Michael Michael\n",
"359 Valentin Mihaila Mihaila\n",
"360 Mikael Mikael\n",
"361 Hilmir Mikaelsson Mikaelsson\n",
"362 Nikola Milenković Milenkovic\n",
"363 Sergej Milinković-Savić Milinkovic-Savic\n",
"364 Vanja Milinković-Savić Milinkovic-Savic\n",
"365 Aleksei Miranchuk Miranchuk\n",
"366 Fabio Miretti Miretti\n",
"367 Henrikh Mkhitaryan Mkhitaryan\n",
"368 Marco Modolo Modolo\n",
"369 Nahuel Molina Molina\n",
"370 Cristian Molinaro Molinaro\n",
"371 Lorenzo Montipò Montipo\n",
"372 Álvaro Morata Morata\n",
"373 Raúl Moro Moro\n",
"374 Andrei Motoc Motoc\n",
"375 Lys Mousset Mousset\n",
"376 Samuel Mráz Mraz\n",
"377 Mert Müldür Muldur\n",
"378 Luis Muriel Muriel\n",
"379 Vedat Muriqi Muriqi\n",
"380 Nicola Murru Murru\n",
"381 Juan Musso Musso\n",
"382 Nahitan Nández Nandez\n",
"383 Nani Nani\n",
"384 Matija Nastasić Nastasic\n",
"385 Ilija Nestorovski Nestorovski\n",
"386 Aurélien Nguiamba Nguiamba\n",
"387 Dimitris Nikolaou Nikolaou\n",
"388 Jean-Pierre Nsame Nsame\n",
"389 Bram Nuytinck Nuytinck\n",
"390 Simeon Nwankwo Nwankwo\n",
"391 M'Bala Nzola Nzola\n",
"392 Adam Obert Obert\n",
"393 Joel Obi Obi\n",
"394 Brain Oddei Oddei\n",
"395 Álvaro Odriozola Odriozola\n",
"396 Stefano Okaka Okaka\n",
"397 David Okereke Okereke\n",
"398 Christian Oliva Oliva\n",
"399 Sérgio Oliveira Oliveira\n",
"400 Riccardo Orsolini Orsolini\n",
"401 Victor Osimhen Osimhen\n",
"402 David Ospina Ospina\n",
"403 Adam Ounas Ounas\n",
"404 Daniele Padelli Padelli\n",
"405 Simone Pafundi Pafundi\n",
"406 Martin Palumbo Palumbo\n",
"407 Goran Pandev Pandev\n",
"408 Ivor Pandur Pandur\n",
"409 Fabiano Parisi Parisi\n",
"410 Mario Pašalić Pasalic\n",
"411 Patric Patric\n",
"412 Rui Patrício Patricio\n",
"413 Leonardo Pavoletti Pavoletti\n",
"414 Pedro Pedro\n",
"415 João Pedro Pedro\n",
"416 Gianluca Pegolo Pegolo\n",
"417 Pietro Pellegri Pellegri\n",
"418 Pietro Pellegri Pellegri\n",
"419 Lorenzo Pellegrini Pellegrini\n",
"420 Luca Pellegrini Pellegrini\n",
"421 Federico Peluso Peluso\n",
"422 Gastón Pereiro Pereiro\n",
"423 Dor Peretz Peretz\n",
"424 Roberto Pereyra Pereyra\n",
"425 Carles Pérez Perez\n",
"426 Nehuén Pérez Perez\n",
"427 Mattia Perin Perin\n",
"428 Ivan Perišić Perisic\n",
"429 Diego Perotti Perotti\n",
"430 Mario Perrone Perrone\n",
"431 Matteo Pessina Pessina\n",
"432 Andrea Petagna Petagna\n",
"433 Giuseppe Pezzella Pezzella\n",
"434 Krzysztof Piątek Piatek\n",
"435 Roberto Piccoli Piccoli\n",
"436 Roberto Piccoli Piccoli\n",
"437 Andrea Pinamonti Pinamonti\n",
"438 Carlo Pinsoglio Pinsoglio\n",
"439 Riccardo Pinzi Pinzi\n",
"440 Marko Pjaca Pjaca\n",
"441 Tommaso Pobega Pobega\n",
"442 Suf Podgoreanu Podgoreanu\n",
"443 Matteo Politano Politano\n",
"444 Manolo Portanova Portanova\n",
"445 Dennis Praet Praet\n",
"446 Mateusz Praszelik Praszelik\n",
"447 Ivan Provedel Provedel\n",
"448 Erick Pulgar Pulgar\n",
"449 Ignacio Pussetto Pussetto\n",
"450 Niklas Pyyhtiä Pyyhtia\n",
"451 Fabio Quagliarella Quagliarella\n",
"452 Adrien Rabiot Rabiot\n",
"453 Ivan Radovanović Radovanovic\n",
"454 Ionuț Radu Radu\n",
"455 Ștefan Radu Radu\n",
"456 Boris Radunović Radunovic\n",
"457 Antonio Raimondo Raimondo\n",
"458 Aaron Ramsey Ramsey\n",
"459 Luca Ranieri Ranieri\n",
"460 Andrea Ranocchia Ranocchia\n",
"461 Giacomo Raspadori Raspadori\n",
"462 Nicola Ravaglia Ravaglia\n",
"463 Ante Rebić Rebic\n",
"464 Arkadiusz Reca Reca\n",
"465 Pepe Reina Reina\n",
"466 Panagiotis Retsos Retsos\n",
"467 Bryan Reynolds Reynolds\n",
"468 Franck Ribéry Ribery\n",
"469 Samuele Ricci Ricci\n",
"470 Samuele Ricci Ricci\n",
"471 Tomás Rincón Rincon\n",
"472 Tomás Rincón Rincon\n",
"473 Ricardo Rodríguez Rodriguez\n",
"474 Marko Rog Rog\n",
"475 Rogério Rogerio\n",
"476 Alessio Romagnoli Romagnoli\n",
"477 Simone Romagnoli Romagnoli\n",
"478 Luka Romero Romero\n",
"479 Sergio Romero Romero\n",
"480 Cristiano Ronaldo Ronaldo\n",
"481 Marten de Roon Roon\n",
"482 Francesco Rossi Rossi\n",
"483 Nicolò Rovella Rovella\n",
"484 Amir Rrahmani Rrahmani\n",
"485 Ruan Ruan\n",
"486 Daniele Rugani Rugani\n",
"487 Matteo Ruggeri Ruggeri\n",
"488 Mário Rui Rui\n",
"489 Fabián Ruiz Peña Pena\n",
"490 Alessandro Russo Russo\n",
"491 Stefano Sabelli Sabelli\n",
"492 Abdelhamid Sabiri Sabiri\n",
"493 Alexis Saelemaekers Saelemaekers\n",
"494 Jacopo Sala Sala\n",
"495 Eddie Salcedo Salcedo\n",
"496 Lazar Samardzic Samardzic\n",
"497 Luigi Samele Samele\n",
"498 Antonio Sanabria Sanabria\n",
"499 Alexis Sánchez Sanchez\n",
"500 Alex Sandro Sandro\n",
"501 Nicola Sansone Sansone\n",
"502 Federico Santander Santander\n",
"503 Samir Santos Santos\n",
"504 Riccardo Saponara Saponara\n",
"505 Giacomo Satalino Satalino\n",
"506 Martin Satriano Satriano\n",
"507 Giorgio Scalvini Scalvini\n",
"508 Gianluca Scamacca Scamacca\n",
"509 Andrea Schiavone Schiavone\n",
"510 David Schnegg Schnegg\n",
"511 Jerdy Schouten Schouten\n",
"512 Demba Seck Seck\n",
"513 Adrian Šemper Semper\n",
"514 Stefano Sensi Sensi\n",
"515 Stefano Sensi Sensi\n",
"516 Luigi Sepe Sepe\n",
"517 Laurens Serpe Serpe\n",
"518 Stephan El Shaarawy Shaarawy\n",
"519 Aimar Sher Sher\n",
"520 Eldor Shomurodov Shomurodov\n",
"521 Alassane Sidibe Sidibe\n",
"522 Arnór Sigurðsson Sigursson\n",
"523 Adrien Silva Silva\n",
"524 Marco Silvestri Silvestri\n",
"525 Giovanni Simeone Simeone\n",
"526 Giovanni Simeone Simeone\n",
"527 Wilfried Singo Singo\n",
"528 Salvatore Sirigu Sirigu\n",
"529 Leo Skiri Østigård stigard\n",
"530 Łukasz Skorupski Skorupski\n",
"531 Andreas Skov Olsen Olsen\n",
"532 Milan Škriniar Skriniar\n",
"533 Chris Smalling Smalling\n",
"534 Brandon Soppy Soppy\n",
"535 Roberto Soriano Soriano\n",
"536 Riccardo Sottil Sottil\n",
"537 Matìas Soulé Soule\n",
"538 Adama Soumaoro Soumaoro\n",
"539 Leonardo Spinazzola Spinazzola\n",
"540 Marco Sportiello Sportiello\n",
"541 Luca Stanga Stanga\n",
"542 Riccardo Stivanello Stivanello\n",
"543 Petar Stojanović Stojanovic\n",
"544 Thomas Strakosha Strakosha\n",
"545 Stefan Strandberg Strandberg\n",
"546 Dávid Strelec Strelec\n",
"547 Kevin Strootman Strootman\n",
"548 Jens Stryger Larsen Larsen\n",
"549 Leo Štulac Stulac\n",
"550 Stefano Sturaro Sturaro\n",
"551 Isaac Success Success\n",
"552 Vladyslav Supriaha Supriaha\n",
"553 Bosko Sutalo Sutalo\n",
"554 Mattias Svanberg Svanberg\n",
"555 Michael Svoboda Svoboda\n",
"556 Wojciech Szczęsny Szczesny\n",
"557 Adrien Tameze Tameze\n",
"558 Ciprian Tătărușanu Tatarusanu\n",
"559 Filippo Terracciano Terracciano\n",
"560 Pietro Terracciano Terracciano\n",
"561 Aleksa Terzić Terzic\n",
"562 Tanner Tessmann Tessmann\n",
"563 Arthur Theate Theate\n",
"564 Morten Thorsby Thorsby\n",
"565 Jeremy Toljan Toljan\n",
"566 Rafael Tolói Toloi\n",
"567 Takehiro Tomiyasu Tomiyasu\n",
"568 Fikayo Tomori Tomori\n",
"569 Sandro Tonali Tonali\n",
"570 Lorenzo Tonelli Tonelli\n",
"571 Ernesto Torregrossa Torregrossa\n",
"572 Lucas Torreira Torreira\n",
"573 Abdoulaye Touré Toure\n",
"574 Simone Trimboli Trimboli\n",
"575 Axel Tuanzebe Tuanzebe\n",
"576 Iyenoma Udogie Udogie\n",
"577 Maximilian Ullmann Ullmann\n",
"578 Kacper Urbanski Urbanski\n",
"579 Antonio Vacca Vacca\n",
"580 Zinho Vanheusden Vanheusden\n",
"581 Johan Vásquez Vasquez\n",
"582 Denis Vavro Vavro\n",
"583 Matías Vecino Vecino\n",
"584 Miguel Veloso Veloso\n",
"585 Lorenzo Venuti Venuti\n",
"586 Daniele Verde Verde\n",
"587 Simone Verdi Verdi\n",
"588 Simone Verdi Verdi\n",
"589 Jordan Veretout Veretout\n",
"590 Edoardo Vergani Vergani\n",
"591 Valerio Verre Verre\n",
"592 Valerio Verre Verre\n",
"593 Freddie Veseli Veseli\n",
"594 Guglielmo Vicario Vicario\n",
"595 Arturo Vidal Vidal\n",
"596 Ronaldo Vieira Vieira\n",
"597 Luca Vignali Vignali\n",
"598 Emanuel Vignato Vignato\n",
"599 Matías Viña Vina\n",
"600 Nicolas Viola Viola\n",
"601 Mattia Viti Viti\n",
"602 Dušan Vlahović Vlahovic\n",
"603 Dušan Vlahović Vlahovic\n",
"604 Mërgim Vojvoda Vojvoda\n",
"605 Cristian Volpato Volpato\n",
"606 Stefan de Vrij Vrij\n",
"607 Walace Walace\n",
"608 Sebastian Walukiewicz Walukiewicz\n",
"609 Magnus Warming Warming\n",
"610 Kelvin Yeboah Yeboah\n",
"611 Gerard Yepes Yepes\n",
"612 Maya Yoshida Yoshida\n",
"613 Mattia Zaccagni Zaccagni\n",
"614 Mattia Zaccagni Zaccagni\n",
"615 Denis Zakaria Zakaria\n",
"616 Nicola Zalewski Zalewski\n",
"617 Andre-Frank Zambo Anguissa Anguissa\n",
"618 Nicolò Zaniolo Zaniolo\n",
"619 Alessandro Zanoli Zanoli\n",
"620 Mattia Zanotti Zanotti\n",
"621 Duván Zapata Zapata\n",
"622 Gabriele Zappa Zappa\n",
"623 Davide Zappacosta Zappacosta\n",
"624 Simone Zaza Zaza\n",
"625 Marvin Zeegelaar Zeegelaar\n",
"626 Piotr Zieliński Zielinski\n",
"627 David Zima Zima\n",
"628 Jeroen Zoet Zoet\n",
"629 Nadir Zortea Zortea\n",
"630 Petar Zovko Zovko\n",
"631 Szymon Żurkowski Zurkowski\n",
"632 Emil Audero Audero\n",
"633 Nicola Bagnolini Bagnolini\n",
"634 Francesco Bardi Bardi\n",
"635 Vid Belec Belec\n",
"636 Alessandro Berardi Berardi\n",
"637 Etrit Berisha Berisha\n",
"638 Andrea Consigli Consigli\n",
"639 Alessio Cragno Cragno\n",
"640 Bartłomiej Drągowski Dragowski\n",
"641 Wladimiro Falcone Falcone\n",
"642 Vincenzo Fiorillo Fiorillo\n",
"643 Luca Gemello Gemello\n",
"644 Samir Handanović Handanovic\n",
"645 Luca Lezzerini Lezzerini\n",
"646 Niki Mäenpää Maenpaa\n",
"647 Mike Maignan Maignan\n",
"648 Davide Marfella Marfella\n",
"649 Alex Meret Meret\n",
"650 Vanja Milinković-Savić Milinkovic-Savic\n",
"651 Lorenzo Montipò Montipo\n",
"652 Juan Musso Musso\n",
"653 David Ospina Ospina\n",
"654 Daniele Padelli Padelli\n",
"655 Ivor Pandur Pandur\n",
"656 Rui Patrício Patricio\n",
"657 Gianluca Pegolo Pegolo\n",
"658 Mattia Perin Perin\n",
"659 Carlo Pinsoglio Pinsoglio\n",
"660 Ivan Provedel Provedel\n",
"661 Ionuț Radu Radu\n",
"662 Boris Radunović Radunovic\n",
"663 Nicola Ravaglia Ravaglia\n",
"664 Pepe Reina Reina\n",
"665 Sergio Romero Romero\n",
"666 Francesco Rossi Rossi\n",
"667 Giacomo Satalino Satalino\n",
"668 Adrian Šemper Semper\n",
"669 Luigi Sepe Sepe\n",
"670 Marco Silvestri Silvestri\n",
"671 Salvatore Sirigu Sirigu\n",
"672 Łukasz Skorupski Skorupski\n",
"673 Marco Sportiello Sportiello\n",
"674 Thomas Strakosha Strakosha\n",
"675 Wojciech Szczęsny Szczesny\n",
"676 Ciprian Tătărușanu Tatarusanu\n",
"677 Pietro Terracciano Terracciano\n",
"678 Guglielmo Vicario Vicario\n",
"679 Jeroen Zoet Zoet\n",
"680 Petar Zovko Zovko\n"
]
}
],
"source": [
"print(players[['player', 'surname']].to_string())"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "3e759b1b",
"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>FROM</th>\n",
" <th>TO</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>stigard</td>\n",
" <td>Ostigard</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Min-jae</td>\n",
" <td>Kim</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Hjlund</td>\n",
" <td>Hojlund</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Gytkjr</td>\n",
" <td>Gytkjaer</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carlos</td>\n",
" <td>Augusto</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" FROM TO\n",
"0 stigard Ostigard\n",
"1 Min-jae Kim\n",
"2 Hjlund Hojlund\n",
"3 Gytkjr Gytkjaer\n",
"4 Carlos Augusto"
]
},
"execution_count": 52,
"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": 53,
"id": "f96eaaa1",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\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_11044\\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",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\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_11044\\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"
]
},
{
"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>4312</td>\n",
" <td>P</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Maignan</td>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>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>2468</td>\n",
" <td>P</td>\n",
" <td>Ospina</td>\n",
" <td>Napoli</td>\n",
" <td>Ospina</td>\n",
" <td></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",
" </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",
" </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>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",
" </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",
" </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",
" </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",
" </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",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" id r name team surname initial\n",
"0 4312 P Maignan Milan Maignan \n",
"1 453 P Szczesny Juventus Szczesny \n",
"2 2468 P Ospina Napoli Ospina \n",
"3 250 P Handanovic Inter Handanovic \n",
"4 316 P Berisha Torino Berisha \n",
".. ... .. ... ... ... ...\n",
"545 5391 A Kokorin Fiorentina Kokorin \n",
"546 5458 A Munteanu Fiorentina Munteanu \n",
"547 5459 A Buksa Genoa Buksa \n",
"548 5505 A Kaio Jorge Juventus Jorge \n",
"549 5785 A Lazetic Milan Lazetic \n",
"\n",
"[550 rows x 6 columns]"
]
},
"execution_count": 53,
"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": 54,
"id": "9c50e4b5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\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_11044\\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": 55,
"id": "5a3e2771",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mirante\n",
"Ujkani\n",
"Marchetti\n",
"Cordaz\n",
"Aresti\n",
"Santurro\n",
"Fuzato\n",
"Rosati\n",
"Boer\n",
"Gasparini\n",
"Furlan\n",
"Adamonis\n",
"Bertinato\n",
"Molla\n",
"Piana\n",
"Neri\n",
"Kjaer\n",
"Maehle\n",
"Ostigard\n",
"Fares\n",
"Dalbert\n",
"Czyborra\n",
"Romagna\n",
"Ballarini\n",
"De Winter\n",
"Ruiz\n",
"Djuricic\n",
"Gudmundsson A.\n",
"Arthur\n",
"Galdames\n",
"Ciervo\n",
"Sigurdsson A.\n",
"Kingsley\n",
"Obiang\n",
"Akpa Akpro\n",
"Leo' Sena\n",
"Rojas\n",
"Pecile\n",
"Bianco\n",
"Cabral\n",
"Djuric\n",
"Keita B.\n",
"Supryaga\n",
"Jovane\n",
"Edera\n",
"Munteanu\n",
"Lazetic\n"
]
}
],
"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": 56,
"id": "3b4a36af",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>r</th>\n",
" <th>name</th>\n",
" <th>team</th>\n",
" <th>surname</th>\n",
" <th>initial</th>\n",
" <th>fb_ID</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>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",
" </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",
" </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",
" </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",
" </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",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>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>283</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",
" </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",
" </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>266</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",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" id r name team surname initial fb_ID\n",
"0 4312 P Maignan Milan Maignan 647\n",
"1 453 P Szczesny Juventus Szczesny 675\n",
"2 2468 P Ospina Napoli Ospina 653\n",
"3 250 P Handanovic Inter Handanovic 644\n",
"4 316 P Berisha Torino Berisha 637\n",
".. ... .. ... ... ... ... ...\n",
"545 5391 A Kokorin Fiorentina Kokorin 283\n",
"546 5458 A Munteanu Fiorentina Munteanu -1\n",
"547 5459 A Buksa Genoa Buksa 83\n",
"548 5505 A Kaio Jorge Juventus Jorge 266\n",
"549 5785 A Lazetic Milan Lazetic -1\n",
"\n",
"[550 rows x 7 columns]"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fc_players"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "1d73a312",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:4: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
" fc_players[columns_to_copy] = 0\n",
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\2261782218.py:9: 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] = outfield_players[columns_to_copy[j]][fc_players['fb_ID'][i]]\n"
]
}
],
"source": [
"#Data for Outfield players\n",
"columns_to_copy = outfield_players.columns[4:]\n",
"\n",
"fc_players[columns_to_copy] = 0\n",
"\n",
"for i in range(fc_players.shape[0]):\n",
" if(fc_players['fb_ID'][i] != -1 and fc_players['r'][i] != 'P'):\n",
" for j in range(columns_to_copy.shape[0]):\n",
" fc_players[columns_to_copy[j]][i] = outfield_players[columns_to_copy[j]][fc_players['fb_ID'][i]]\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 58,
"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": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keeper_players.columns[4:]"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "eb9127a9",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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_11044\\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": 60,
"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": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"keeper_players"
]
},
{
"cell_type": "code",
"execution_count": 61,
"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>283</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>266</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 × 163 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 283 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 266 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 163 columns]"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fc_players"
]
},
{
"cell_type": "code",
"execution_count": 62,
"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>5.901518</td>\n",
" <td>0.269227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>546</th>\n",
" <td>6.215233</td>\n",
" <td>0.275498</td>\n",
" </tr>\n",
" <tr>\n",
" <th>547</th>\n",
" <td>6.035319</td>\n",
" <td>0.591212</td>\n",
" </tr>\n",
" <tr>\n",
" <th>548</th>\n",
" <td>6.137790</td>\n",
" <td>0.468234</td>\n",
" </tr>\n",
" <tr>\n",
" <th>549</th>\n",
" <td>6.325366</td>\n",
" <td>0.472207</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 5.901518 0.269227\n",
"546 6.215233 0.275498\n",
"547 6.035319 0.591212\n",
"548 6.137790 0.468234\n",
"549 6.325366 0.472207\n",
"\n",
"[550 rows x 2 columns]"
]
},
"execution_count": 62,
"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": 63,
"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>283</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>5.901518</td>\n",
" <td>0.269227</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.215233</td>\n",
" <td>0.275498</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>6.035319</td>\n",
" <td>0.591212</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>266</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>6.137790</td>\n",
" <td>0.468234</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.325366</td>\n",
" <td>0.472207</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 165 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 283 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 266 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 5.901518 0.269227 \n",
"546 6.215233 0.275498 \n",
"547 6.035319 0.591212 \n",
"548 6.137790 0.468234 \n",
"549 6.325366 0.472207 \n",
"\n",
"[550 rows x 165 columns]"
]
},
"execution_count": 63,
"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": 64,
"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": 65,
"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>283</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>5.901518</td>\n",
" <td>0.269227</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.215233</td>\n",
" <td>0.275498</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>6.035319</td>\n",
" <td>0.591212</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>266</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>6.137790</td>\n",
" <td>0.468234</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.325366</td>\n",
" <td>0.472207</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>550 rows × 165 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 283 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 266 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 5.901518 0.269227 \n",
"546 6.215233 0.275498 \n",
"547 6.035319 0.591212 \n",
"548 6.137790 0.468234 \n",
"549 6.325366 0.472207 \n",
"\n",
"[550 rows x 165 columns]"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fc_players = fc_players_newgk\n",
"\n",
"fc_players"
]
},
{
"cell_type": "code",
"execution_count": 67,
"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
}