Files
fantabeto/4_player_match_dataset_creation.ipynb
T
Giuseppe Musicco 1492328958 Code updated for Serie A 2023/2024
- Reorganization of data folders
- Code adapted for the new Serie A season, also considering only a small number of league games has been played
- Stats from other leagues are considered for players at their first Serie A season (rookies), for now without any adaptation based on league difficulty
- Minor fixes
2023-09-09 19:31:52 +02:00

5875 lines
208 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": "8f597771",
"metadata": {},
"source": [
"Player/match dataset creation\n",
"\n",
"For each serie A (already happened) match and player, a database entry is generated, with this form:\n",
" \n",
"[y = player votes data, player data, team data, vs team data, opp team data, vs opp team data]"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "3ecf3676",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"id": "a7d3a9d6",
"metadata": {},
"source": [
"Load team data from FBref"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "8a6867a5",
"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>team</th>\n",
" <th>team_players_used</th>\n",
" <th>team_possession</th>\n",
" <th>team_games</th>\n",
" <th>team_games_starts</th>\n",
" <th>team_minutes</th>\n",
" <th>team_goals</th>\n",
" <th>team_assists</th>\n",
" <th>team_pens_made</th>\n",
" <th>team_pens_att</th>\n",
" <th>...</th>\n",
" <th>vs_team_fouls</th>\n",
" <th>vs_team_fouled</th>\n",
" <th>vs_team_offsides</th>\n",
" <th>vs_team_pens_won</th>\n",
" <th>vs_team_pens_conceded</th>\n",
" <th>vs_team_own_goals</th>\n",
" <th>vs_team_ball_recoveries</th>\n",
" <th>vs_team_aerials_won</th>\n",
" <th>vs_team_aerials_lost</th>\n",
" <th>vs_team_aerials_won_pct</th>\n",
" </tr>\n",
" <tr>\n",
" <th>team_idx</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Atalanta</th>\n",
" <td>Atalanta</td>\n",
" <td>20.0</td>\n",
" <td>51.7</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>6.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>28.0</td>\n",
" <td>33.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>157.0</td>\n",
" <td>44.0</td>\n",
" <td>42.0</td>\n",
" <td>51.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bologna</th>\n",
" <td>Bologna</td>\n",
" <td>20.0</td>\n",
" <td>55.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>32.0</td>\n",
" <td>30.0</td>\n",
" <td>7.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>157.0</td>\n",
" <td>23.0</td>\n",
" <td>29.0</td>\n",
" <td>44.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cagliari</th>\n",
" <td>Cagliari</td>\n",
" <td>19.0</td>\n",
" <td>35.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>27.0</td>\n",
" <td>29.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>165.0</td>\n",
" <td>44.0</td>\n",
" <td>37.0</td>\n",
" <td>54.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Empoli</th>\n",
" <td>Empoli</td>\n",
" <td>26.0</td>\n",
" <td>48.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>45.0</td>\n",
" <td>38.0</td>\n",
" <td>6.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>152.0</td>\n",
" <td>42.0</td>\n",
" <td>30.0</td>\n",
" <td>58.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fiorentina</th>\n",
" <td>Fiorentina</td>\n",
" <td>21.0</td>\n",
" <td>62.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>6.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>42.0</td>\n",
" <td>36.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>142.0</td>\n",
" <td>38.0</td>\n",
" <td>32.0</td>\n",
" <td>54.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Frosinone</th>\n",
" <td>Frosinone</td>\n",
" <td>21.0</td>\n",
" <td>46.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>41.0</td>\n",
" <td>31.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>168.0</td>\n",
" <td>46.0</td>\n",
" <td>42.0</td>\n",
" <td>52.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Genoa</th>\n",
" <td>Genoa</td>\n",
" <td>18.0</td>\n",
" <td>33.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>35.0</td>\n",
" <td>31.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>148.0</td>\n",
" <td>32.0</td>\n",
" <td>44.0</td>\n",
" <td>42.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Verona</th>\n",
" <td>Hellas Verona</td>\n",
" <td>19.0</td>\n",
" <td>44.7</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>4.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>37.0</td>\n",
" <td>47.0</td>\n",
" <td>6.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>138.0</td>\n",
" <td>54.0</td>\n",
" <td>71.0</td>\n",
" <td>43.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Inter</th>\n",
" <td>Inter</td>\n",
" <td>18.0</td>\n",
" <td>51.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>8.0</td>\n",
" <td>7.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>34.0</td>\n",
" <td>30.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>128.0</td>\n",
" <td>24.0</td>\n",
" <td>36.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Juventus</th>\n",
" <td>Juventus</td>\n",
" <td>21.0</td>\n",
" <td>53.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>6.0</td>\n",
" <td>4.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>39.0</td>\n",
" <td>36.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>134.0</td>\n",
" <td>22.0</td>\n",
" <td>26.0</td>\n",
" <td>45.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lazio</th>\n",
" <td>Lazio</td>\n",
" <td>19.0</td>\n",
" <td>53.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>36.0</td>\n",
" <td>31.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>155.0</td>\n",
" <td>39.0</td>\n",
" <td>26.0</td>\n",
" <td>60.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lecce</th>\n",
" <td>Lecce</td>\n",
" <td>18.0</td>\n",
" <td>45.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>6.0</td>\n",
" <td>5.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>47.0</td>\n",
" <td>43.0</td>\n",
" <td>4.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>150.0</td>\n",
" <td>33.0</td>\n",
" <td>46.0</td>\n",
" <td>41.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Milan</th>\n",
" <td>Milan</td>\n",
" <td>18.0</td>\n",
" <td>54.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>8.0</td>\n",
" <td>5.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>40.0</td>\n",
" <td>31.0</td>\n",
" <td>5.0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>145.0</td>\n",
" <td>34.0</td>\n",
" <td>27.0</td>\n",
" <td>55.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Monza</th>\n",
" <td>Monza</td>\n",
" <td>21.0</td>\n",
" <td>55.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>26.0</td>\n",
" <td>35.0</td>\n",
" <td>6.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>144.0</td>\n",
" <td>37.0</td>\n",
" <td>27.0</td>\n",
" <td>57.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Napoli</th>\n",
" <td>Napoli</td>\n",
" <td>18.0</td>\n",
" <td>60.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>6.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>33.0</td>\n",
" <td>33.0</td>\n",
" <td>6.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>124.0</td>\n",
" <td>19.0</td>\n",
" <td>33.0</td>\n",
" <td>36.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Roma</th>\n",
" <td>Roma</td>\n",
" <td>21.0</td>\n",
" <td>58.3</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>4.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>41.0</td>\n",
" <td>36.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>114.0</td>\n",
" <td>45.0</td>\n",
" <td>64.0</td>\n",
" <td>41.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Salernitana</th>\n",
" <td>Salernitana</td>\n",
" <td>21.0</td>\n",
" <td>50.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0</td>\n",
" <td>3.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>48.0</td>\n",
" <td>34.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>151.0</td>\n",
" <td>68.0</td>\n",
" <td>37.0</td>\n",
" <td>64.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sassuolo</th>\n",
" <td>Sassuolo</td>\n",
" <td>22.0</td>\n",
" <td>43.0</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>35.0</td>\n",
" <td>25.0</td>\n",
" <td>10.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>159.0</td>\n",
" <td>40.0</td>\n",
" <td>30.0</td>\n",
" <td>57.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Torino</th>\n",
" <td>Torino</td>\n",
" <td>20.0</td>\n",
" <td>53.7</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>2.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>32.0</td>\n",
" <td>33.0</td>\n",
" <td>5.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>151.0</td>\n",
" <td>46.0</td>\n",
" <td>41.0</td>\n",
" <td>52.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Udinese</th>\n",
" <td>Udinese</td>\n",
" <td>18.0</td>\n",
" <td>46.7</td>\n",
" <td>3.0</td>\n",
" <td>33.0</td>\n",
" <td>270.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>31.0</td>\n",
" <td>41.0</td>\n",
" <td>7.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>137.0</td>\n",
" <td>38.0</td>\n",
" <td>48.0</td>\n",
" <td>44.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>20 rows × 303 columns</p>\n",
"</div>"
],
"text/plain": [
" team team_players_used team_possession team_games \\\n",
"team_idx \n",
"Atalanta Atalanta 20.0 51.7 3.0 \n",
"Bologna Bologna 20.0 55.3 3.0 \n",
"Cagliari Cagliari 19.0 35.0 3.0 \n",
"Empoli Empoli 26.0 48.0 3.0 \n",
"Fiorentina Fiorentina 21.0 62.3 3.0 \n",
"Frosinone Frosinone 21.0 46.0 3.0 \n",
"Genoa Genoa 18.0 33.0 3.0 \n",
"Verona Hellas Verona 19.0 44.7 3.0 \n",
"Inter Inter 18.0 51.3 3.0 \n",
"Juventus Juventus 21.0 53.0 3.0 \n",
"Lazio Lazio 19.0 53.3 3.0 \n",
"Lecce Lecce 18.0 45.0 3.0 \n",
"Milan Milan 18.0 54.0 3.0 \n",
"Monza Monza 21.0 55.3 3.0 \n",
"Napoli Napoli 18.0 60.3 3.0 \n",
"Roma Roma 21.0 58.3 3.0 \n",
"Salernitana Salernitana 21.0 50.0 3.0 \n",
"Sassuolo Sassuolo 22.0 43.0 3.0 \n",
"Torino Torino 20.0 53.7 3.0 \n",
"Udinese Udinese 18.0 46.7 3.0 \n",
"\n",
" team_games_starts team_minutes team_goals team_assists \\\n",
"team_idx \n",
"Atalanta 33.0 270.0 6.0 6.0 \n",
"Bologna 33.0 270.0 3.0 2.0 \n",
"Cagliari 33.0 270.0 1.0 1.0 \n",
"Empoli 33.0 270.0 0.0 0.0 \n",
"Fiorentina 33.0 270.0 6.0 5.0 \n",
"Frosinone 33.0 270.0 3.0 2.0 \n",
"Genoa 33.0 270.0 2.0 1.0 \n",
"Verona 33.0 270.0 4.0 2.0 \n",
"Inter 33.0 270.0 8.0 7.0 \n",
"Juventus 33.0 270.0 6.0 4.0 \n",
"Lazio 33.0 270.0 3.0 3.0 \n",
"Lecce 33.0 270.0 6.0 5.0 \n",
"Milan 33.0 270.0 8.0 5.0 \n",
"Monza 33.0 270.0 2.0 2.0 \n",
"Napoli 33.0 270.0 6.0 3.0 \n",
"Roma 33.0 270.0 4.0 3.0 \n",
"Salernitana 33.0 270.0 3.0 3.0 \n",
"Sassuolo 33.0 270.0 3.0 2.0 \n",
"Torino 33.0 270.0 2.0 2.0 \n",
"Udinese 33.0 270.0 1.0 1.0 \n",
"\n",
" team_pens_made team_pens_att ... vs_team_fouls \\\n",
"team_idx ... \n",
"Atalanta 0.0 0.0 ... 28.0 \n",
"Bologna 0.0 1.0 ... 32.0 \n",
"Cagliari 0.0 0.0 ... 27.0 \n",
"Empoli 0.0 0.0 ... 45.0 \n",
"Fiorentina 0.0 0.0 ... 42.0 \n",
"Frosinone 1.0 1.0 ... 41.0 \n",
"Genoa 0.0 0.0 ... 35.0 \n",
"Verona 0.0 0.0 ... 37.0 \n",
"Inter 1.0 1.0 ... 34.0 \n",
"Juventus 1.0 2.0 ... 39.0 \n",
"Lazio 0.0 0.0 ... 36.0 \n",
"Lecce 1.0 1.0 ... 47.0 \n",
"Milan 3.0 3.0 ... 40.0 \n",
"Monza 0.0 0.0 ... 26.0 \n",
"Napoli 1.0 2.0 ... 33.0 \n",
"Roma 0.0 0.0 ... 41.0 \n",
"Salernitana 0.0 0.0 ... 48.0 \n",
"Sassuolo 1.0 1.0 ... 35.0 \n",
"Torino 0.0 0.0 ... 32.0 \n",
"Udinese 0.0 0.0 ... 31.0 \n",
"\n",
" vs_team_fouled vs_team_offsides vs_team_pens_won \\\n",
"team_idx \n",
"Atalanta 33.0 2.0 0.0 \n",
"Bologna 30.0 7.0 0.0 \n",
"Cagliari 29.0 4.0 0.0 \n",
"Empoli 38.0 6.0 1.0 \n",
"Fiorentina 36.0 3.0 1.0 \n",
"Frosinone 31.0 4.0 0.0 \n",
"Genoa 31.0 6.0 0.0 \n",
"Verona 47.0 6.0 1.0 \n",
"Inter 30.0 3.0 0.0 \n",
"Juventus 36.0 5.0 0.0 \n",
"Lazio 31.0 6.0 0.0 \n",
"Lecce 43.0 4.0 0.0 \n",
"Milan 31.0 5.0 0.0 \n",
"Monza 35.0 6.0 0.0 \n",
"Napoli 33.0 6.0 1.0 \n",
"Roma 36.0 2.0 1.0 \n",
"Salernitana 34.0 2.0 0.0 \n",
"Sassuolo 25.0 10.0 1.0 \n",
"Torino 33.0 5.0 1.0 \n",
"Udinese 41.0 7.0 0.0 \n",
"\n",
" vs_team_pens_conceded vs_team_own_goals \\\n",
"team_idx \n",
"Atalanta 0.0 0.0 \n",
"Bologna 1.0 0.0 \n",
"Cagliari 0.0 0.0 \n",
"Empoli 0.0 0.0 \n",
"Fiorentina 0.0 0.0 \n",
"Frosinone 1.0 0.0 \n",
"Genoa 0.0 0.0 \n",
"Verona 0.0 0.0 \n",
"Inter 1.0 0.0 \n",
"Juventus 2.0 0.0 \n",
"Lazio 0.0 0.0 \n",
"Lecce 1.0 0.0 \n",
"Milan 3.0 0.0 \n",
"Monza 0.0 0.0 \n",
"Napoli 2.0 0.0 \n",
"Roma 0.0 0.0 \n",
"Salernitana 0.0 0.0 \n",
"Sassuolo 1.0 0.0 \n",
"Torino 0.0 0.0 \n",
"Udinese 0.0 0.0 \n",
"\n",
" vs_team_ball_recoveries vs_team_aerials_won \\\n",
"team_idx \n",
"Atalanta 157.0 44.0 \n",
"Bologna 157.0 23.0 \n",
"Cagliari 165.0 44.0 \n",
"Empoli 152.0 42.0 \n",
"Fiorentina 142.0 38.0 \n",
"Frosinone 168.0 46.0 \n",
"Genoa 148.0 32.0 \n",
"Verona 138.0 54.0 \n",
"Inter 128.0 24.0 \n",
"Juventus 134.0 22.0 \n",
"Lazio 155.0 39.0 \n",
"Lecce 150.0 33.0 \n",
"Milan 145.0 34.0 \n",
"Monza 144.0 37.0 \n",
"Napoli 124.0 19.0 \n",
"Roma 114.0 45.0 \n",
"Salernitana 151.0 68.0 \n",
"Sassuolo 159.0 40.0 \n",
"Torino 151.0 46.0 \n",
"Udinese 137.0 38.0 \n",
"\n",
" vs_team_aerials_lost vs_team_aerials_won_pct \n",
"team_idx \n",
"Atalanta 42.0 51.2 \n",
"Bologna 29.0 44.2 \n",
"Cagliari 37.0 54.3 \n",
"Empoli 30.0 58.3 \n",
"Fiorentina 32.0 54.3 \n",
"Frosinone 42.0 52.3 \n",
"Genoa 44.0 42.1 \n",
"Verona 71.0 43.2 \n",
"Inter 36.0 40.0 \n",
"Juventus 26.0 45.8 \n",
"Lazio 26.0 60.0 \n",
"Lecce 46.0 41.8 \n",
"Milan 27.0 55.7 \n",
"Monza 27.0 57.8 \n",
"Napoli 33.0 36.5 \n",
"Roma 64.0 41.3 \n",
"Salernitana 37.0 64.8 \n",
"Sassuolo 30.0 57.1 \n",
"Torino 41.0 52.9 \n",
"Udinese 48.0 44.2 \n",
"\n",
"[20 rows x 303 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rcsv = pd.read_csv('fbref_data/teams.csv') \n",
"team = pd.DataFrame(rcsv)\n",
"\n",
"rcsv = pd.read_csv('fbref_data/teams_vs.csv') \n",
"vs_team = pd.DataFrame(rcsv)\n",
"\n",
"for i in range(1, team.shape[1]):\n",
" team = team.rename(columns = {team.columns[i] : 'team_' + team.columns[i]})\n",
" \n",
"for i in range(1, vs_team.shape[1]):\n",
" vs_team = vs_team.rename(columns = {vs_team.columns[i] : 'vs_team_' + vs_team.columns[i]})\n",
" \n",
"vs_team.pop('team')\n",
"\n",
"team_data = pd.concat([team, vs_team], axis = 1)\n",
"\n",
"team_data['team_idx'] = team_data['team']\n",
"for i in range(team_data.shape[0]):\n",
" team_data.loc[i, 'team_idx'] = team_data.loc[i, 'team_idx'].split(' ')[-1]\n",
"\n",
"team_data = team_data.set_index('team_idx')\n",
"\n",
"team_data\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "b6a3db98",
"metadata": {},
"outputs": [],
"source": [
"team_data.to_excel('mid_outputs/team_data.xlsx')"
]
},
{
"cell_type": "markdown",
"id": "cc50dde9",
"metadata": {},
"source": [
"Load data generated from players_dataset_creation"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "c34eb398",
"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>Unnamed: 0</th>\n",
" <th>id</th>\n",
" <th>r</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",
" <tr>\n",
" <th>name</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Maignan</th>\n",
" <td>0</td>\n",
" <td>4312</td>\n",
" <td>P</td>\n",
" <td>Milan</td>\n",
" <td>Maignan</td>\n",
" <td>NaN</td>\n",
" <td>406</td>\n",
" <td>28-068</td>\n",
" <td>1995</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>65.0</td>\n",
" <td>49.3</td>\n",
" <td>43</td>\n",
" <td>12</td>\n",
" <td>27.9</td>\n",
" <td>3</td>\n",
" <td>1.00</td>\n",
" <td>10.3</td>\n",
" <td>6.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Meret</th>\n",
" <td>1</td>\n",
" <td>572</td>\n",
" <td>P</td>\n",
" <td>Napoli</td>\n",
" <td>Meret</td>\n",
" <td>NaN</td>\n",
" <td>408</td>\n",
" <td>26-171</td>\n",
" <td>1997</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>21.4</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>6.7</td>\n",
" <td>5</td>\n",
" <td>1.67</td>\n",
" <td>18.1</td>\n",
" <td>5.833333</td>\n",
" <td>0.235702</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sommer</th>\n",
" <td>2</td>\n",
" <td>2428</td>\n",
" <td>P</td>\n",
" <td>Inter</td>\n",
" <td>Sommer</td>\n",
" <td>NaN</td>\n",
" <td>420</td>\n",
" <td>34-266</td>\n",
" <td>1988</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>23.8</td>\n",
" <td>31.0</td>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" <td>2.9</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>6.8</td>\n",
" <td>6.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Szczesny</th>\n",
" <td>3</td>\n",
" <td>453</td>\n",
" <td>P</td>\n",
" <td>Juventus</td>\n",
" <td>Szczesny</td>\n",
" <td>NaN</td>\n",
" <td>421</td>\n",
" <td>33-144</td>\n",
" <td>1990</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>66.7</td>\n",
" <td>53.3</td>\n",
" <td>16</td>\n",
" <td>1</td>\n",
" <td>6.3</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>10.8</td>\n",
" <td>7.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Provedel</th>\n",
" <td>4</td>\n",
" <td>2814</td>\n",
" <td>P</td>\n",
" <td>Lazio</td>\n",
" <td>Provedel</td>\n",
" <td>NaN</td>\n",
" <td>416</td>\n",
" <td>29-176</td>\n",
" <td>1994</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>27.3</td>\n",
" <td>31.6</td>\n",
" <td>39</td>\n",
" <td>2</td>\n",
" <td>5.1</td>\n",
" <td>6</td>\n",
" <td>2.00</td>\n",
" <td>16.3</td>\n",
" <td>6.166667</td>\n",
" <td>0.235702</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>Bidaoui</th>\n",
" <td>530</td>\n",
" <td>6242</td>\n",
" <td>A</td>\n",
" <td>Frosinone</td>\n",
" <td>Bidaoui</td>\n",
" <td>NaN</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.455501</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Burnete</th>\n",
" <td>531</td>\n",
" <td>6418</td>\n",
" <td>A</td>\n",
" <td>Lecce</td>\n",
" <td>Burnete</td>\n",
" <td>NaN</td>\n",
" <td>51</td>\n",
" <td>19-221</td>\n",
" <td>2004</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>6.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Corfitzen</th>\n",
" <td>532</td>\n",
" <td>6419</td>\n",
" <td>A</td>\n",
" <td>Lecce</td>\n",
" <td>Corfitzen</td>\n",
" <td>NaN</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>5.900518</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Stewart</th>\n",
" <td>533</td>\n",
" <td>6427</td>\n",
" <td>A</td>\n",
" <td>Salernitana</td>\n",
" <td>Stewart</td>\n",
" <td>NaN</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>5.417886</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yildiz</th>\n",
" <td>534</td>\n",
" <td>6434</td>\n",
" <td>A</td>\n",
" <td>Juventus</td>\n",
" <td>Yildiz</td>\n",
" <td>NaN</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>5.825580</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>535 rows × 160 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 id r team surname initial fb_ID age \\\n",
"name \n",
"Maignan 0 4312 P Milan Maignan NaN 406 28-068 \n",
"Meret 1 572 P Napoli Meret NaN 408 26-171 \n",
"Sommer 2 2428 P Inter Sommer NaN 420 34-266 \n",
"Szczesny 3 453 P Juventus Szczesny NaN 421 33-144 \n",
"Provedel 4 2814 P Lazio Provedel NaN 416 29-176 \n",
"... ... ... .. ... ... ... ... ... \n",
"Bidaoui 530 6242 A Frosinone Bidaoui NaN -1 0 \n",
"Burnete 531 6418 A Lecce Burnete NaN 51 19-221 \n",
"Corfitzen 532 6419 A Lecce Corfitzen NaN -1 0 \n",
"Stewart 533 6427 A Salernitana Stewart NaN -1 0 \n",
"Yildiz 534 6434 A Juventus Yildiz NaN -1 0 \n",
"\n",
" birth_year games ... gk_pct_goal_kicks_launched \\\n",
"name ... \n",
"Maignan 1995 0 ... 65.0 \n",
"Meret 1997 0 ... 0.0 \n",
"Sommer 1988 0 ... 23.8 \n",
"Szczesny 1990 0 ... 66.7 \n",
"Provedel 1994 0 ... 27.3 \n",
"... ... ... ... ... \n",
"Bidaoui 0 0 ... 0.0 \n",
"Burnete 2004 1 ... 0.0 \n",
"Corfitzen 0 0 ... 0.0 \n",
"Stewart 0 0 ... 0.0 \n",
"Yildiz 0 0 ... 0.0 \n",
"\n",
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
"name \n",
"Maignan 49.3 43 12 \n",
"Meret 21.4 15 1 \n",
"Sommer 31.0 35 1 \n",
"Szczesny 53.3 16 1 \n",
"Provedel 31.6 39 2 \n",
"... ... ... ... \n",
"Bidaoui 0.0 0 0 \n",
"Burnete 0.0 0 0 \n",
"Corfitzen 0.0 0 0 \n",
"Stewart 0.0 0 0 \n",
"Yildiz 0.0 0 0 \n",
"\n",
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
"name \n",
"Maignan 27.9 3 \n",
"Meret 6.7 5 \n",
"Sommer 2.9 0 \n",
"Szczesny 6.3 0 \n",
"Provedel 5.1 6 \n",
"... ... ... \n",
"Bidaoui 0.0 0 \n",
"Burnete 0.0 0 \n",
"Corfitzen 0.0 0 \n",
"Stewart 0.0 0 \n",
"Yildiz 0.0 0 \n",
"\n",
" gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \\\n",
"name \n",
"Maignan 1.00 10.3 \n",
"Meret 1.67 18.1 \n",
"Sommer 0.00 6.8 \n",
"Szczesny 0.00 10.8 \n",
"Provedel 2.00 16.3 \n",
"... ... ... \n",
"Bidaoui 0.00 0.0 \n",
"Burnete 0.00 0.0 \n",
"Corfitzen 0.00 0.0 \n",
"Stewart 0.00 0.0 \n",
"Yildiz 0.00 0.0 \n",
"\n",
" vote_avg vote_std \n",
"name \n",
"Maignan 6.000000 0.000000 \n",
"Meret 5.833333 0.235702 \n",
"Sommer 6.000000 0.000000 \n",
"Szczesny 7.000000 0.000000 \n",
"Provedel 6.166667 0.235702 \n",
"... ... ... \n",
"Bidaoui 6.455501 0.000000 \n",
"Burnete 6.000000 0.000000 \n",
"Corfitzen 5.900518 0.000000 \n",
"Stewart 5.417886 0.000000 \n",
"Yildiz 5.825580 0.000000 \n",
"\n",
"[535 rows x 160 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rx = pd.read_excel('mid_outputs/players_stats.xlsx', index_col = 3) \n",
"players = pd.DataFrame(rx)\n",
"\n",
"players\n"
]
},
{
"cell_type": "markdown",
"id": "ae37dfe3",
"metadata": {},
"source": [
"Function for merging match data (player, team, opponent team)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "71c8804e",
"metadata": {},
"outputs": [],
"source": [
"def player_match_data(player, pteam, oppteam):\n",
" if(not(player in players.index)):\n",
" return None\n",
" \n",
" pdata = players.loc[[player]]\n",
" \n",
" pteam_stats = team_data.loc[[pteam]].rename(index = {pteam : player})\n",
" \n",
" oppteam_stats = team_data.loc[[oppteam]].rename(index = {oppteam : player})\n",
" \n",
" oppteam_stats = oppteam_stats.rename(lambda x: 'opp_' + x, axis='columns')\n",
" \n",
" out = pd.concat([pdata, pteam_stats, oppteam_stats], axis = 1)\n",
" \n",
" return(out)\n",
" "
]
},
{
"cell_type": "markdown",
"id": "a6fdd15b",
"metadata": {},
"source": [
"Output to excel file data for a player. \n",
"\n",
"The file is copied and there the desired features are manually selected and printed."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "7eb4e666",
"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>Unnamed: 0</th>\n",
" <th>id</th>\n",
" <th>r</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>opp_vs_team_fouls</th>\n",
" <th>opp_vs_team_fouled</th>\n",
" <th>opp_vs_team_offsides</th>\n",
" <th>opp_vs_team_pens_won</th>\n",
" <th>opp_vs_team_pens_conceded</th>\n",
" <th>opp_vs_team_own_goals</th>\n",
" <th>opp_vs_team_ball_recoveries</th>\n",
" <th>opp_vs_team_aerials_won</th>\n",
" <th>opp_vs_team_aerials_lost</th>\n",
" <th>opp_vs_team_aerials_won_pct</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Barella</th>\n",
" <td>259</td>\n",
" <td>1870</td>\n",
" <td>C</td>\n",
" <td>Inter</td>\n",
" <td>Barella</td>\n",
" <td>NaN</td>\n",
" <td>20</td>\n",
" <td>26-214</td>\n",
" <td>1997</td>\n",
" <td>3</td>\n",
" <td>...</td>\n",
" <td>28.0</td>\n",
" <td>33.0</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>157.0</td>\n",
" <td>44.0</td>\n",
" <td>42.0</td>\n",
" <td>51.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 766 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 id r team surname initial fb_ID age \\\n",
"Barella 259 1870 C Inter Barella NaN 20 26-214 \n",
"\n",
" birth_year games ... opp_vs_team_fouls opp_vs_team_fouled \\\n",
"Barella 1997 3 ... 28.0 33.0 \n",
"\n",
" opp_vs_team_offsides opp_vs_team_pens_won \\\n",
"Barella 2.0 0.0 \n",
"\n",
" opp_vs_team_pens_conceded opp_vs_team_own_goals \\\n",
"Barella 0.0 0.0 \n",
"\n",
" opp_vs_team_ball_recoveries opp_vs_team_aerials_won \\\n",
"Barella 157.0 44.0 \n",
"\n",
" opp_vs_team_aerials_lost opp_vs_team_aerials_won_pct \n",
"Barella 42.0 51.2 \n",
"\n",
"[1 rows x 766 columns]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test = player_match_data('Barella', 'Inter', 'Atalanta')\n",
"test.to_excel('tmp/playermatchdata.xlsx')\n",
"\n",
"test"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "6b4c1b00",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Inter'"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pteam = 'Inter'\n",
"pteam_stats = team_data.loc[[pteam]]\n",
"pteam_stats.index[0]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "6ea6df1f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['r',\n",
" 'fb_ID',\n",
" 'games',\n",
" 'games_starts',\n",
" 'minutes',\n",
" 'goals',\n",
" 'assists',\n",
" 'cards_yellow',\n",
" 'cards_red',\n",
" 'xg',\n",
" 'npxg',\n",
" 'shots_on_target',\n",
" 'shots_on_target_pct',\n",
" 'goals_per_shot',\n",
" 'goals_per_shot_on_target',\n",
" 'passes_completed',\n",
" 'passes_pct',\n",
" 'passes_into_final_third',\n",
" 'passes_into_penalty_area',\n",
" 'progressive_passes',\n",
" 'passes_live',\n",
" 'passes_dead',\n",
" 'through_balls',\n",
" 'passes_switches',\n",
" 'crosses',\n",
" 'corner_kicks',\n",
" 'dribble_tackles',\n",
" 'dribbles_vs',\n",
" 'dribble_tackles_pct',\n",
" 'dribbled_past',\n",
" 'blocks',\n",
" 'blocked_shots',\n",
" 'blocked_passes',\n",
" 'interceptions',\n",
" 'clearances',\n",
" 'errors',\n",
" 'touches',\n",
" 'touches_def_pen_area',\n",
" 'touches_def_3rd',\n",
" 'touches_mid_3rd',\n",
" 'touches_att_3rd',\n",
" 'touches_att_pen_area',\n",
" 'touches_live_ball',\n",
" 'dribbles_completed',\n",
" 'dribbles',\n",
" 'dribbles_completed_pct',\n",
" 'carries',\n",
" 'progressive_carries',\n",
" 'carries_into_final_third',\n",
" 'carries_into_penalty_area',\n",
" 'passes_received',\n",
" 'miscontrols',\n",
" 'dispossessed',\n",
" 'fouls',\n",
" 'fouled',\n",
" 'aerials_won',\n",
" 'aerials_lost',\n",
" 'aerials_won_pct',\n",
" 'team_possession',\n",
" 'team_goals_assists_per90',\n",
" 'team_goals_pens_per90',\n",
" 'team_goals_assists_pens_per90',\n",
" 'team_xg_per90',\n",
" 'team_gk_goals_against_per90',\n",
" 'team_gk_save_pct',\n",
" 'team_gk_clean_sheets_pct',\n",
" 'team_passes_pct',\n",
" 'team_passes_pct_medium',\n",
" 'team_passes_pct_long',\n",
" 'team_sca_per90',\n",
" 'team_gca_per90',\n",
" 'team_dribble_tackles_pct',\n",
" 'team_aerials_won_pct',\n",
" 'vs_team_possession',\n",
" 'vs_team_goals_per90',\n",
" 'vs_team_assists_per90',\n",
" 'vs_team_xg_per90',\n",
" 'vs_team_gk_save_pct',\n",
" 'vs_team_gk_clean_sheets_pct',\n",
" 'vs_team_gk_pct_passes_launched',\n",
" 'vs_team_gk_crosses_stopped_pct',\n",
" 'vs_team_shots_on_target_per90',\n",
" 'vs_team_passes_pct',\n",
" 'vs_team_passes_pct_short',\n",
" 'vs_team_passes_pct_medium',\n",
" 'vs_team_passes_pct_long',\n",
" 'vs_team_sca_per90',\n",
" 'vs_team_gca_per90',\n",
" 'vs_team_dribble_tackles_pct',\n",
" 'vs_team_dribbles_completed_pct',\n",
" 'vs_team_aerials_won_pct']"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rx = pd.read_excel('tmp/playermatchdata_sel.xlsx', index_col = 0, header = None) \n",
"\n",
"out = list()\n",
"\n",
"for i in range(1, rx.shape[1]):\n",
" if(rx[i][2] == \"x\"):\n",
" out.append(rx[i][0])\n",
" \n",
"out"
]
},
{
"cell_type": "markdown",
"id": "d4097382",
"metadata": {},
"source": [
"Define and select the dataset features: abs features and rel features.\n",
" \n",
"Rel features are divided by the player minutes played.\n",
"\n",
"Rel features (game corrected) are divided by the player number of games instead of minutes. \n",
"For example, a player who plays 20 minutes and scores, would be to match for stats averaging. It is better to consider the goals made per match."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "47bc651f",
"metadata": {},
"outputs": [],
"source": [
"features_abs = ['r',\n",
" 'games',\n",
" 'games_starts', \n",
" 'minutes',\n",
" 'shots_on_target_pct',\n",
" 'goals_per_shot',\n",
" 'goals_per_shot_on_target',\n",
" 'passes_pct',\n",
" #'dribble_tackles_pct',\n",
" #'dribbles_completed_pct',\n",
" 'aerials_won_pct',\n",
" 'team_possession',\n",
" 'team_goals_assists_per90',\n",
" 'team_goals_pens_per90',\n",
" 'team_goals_assists_pens_per90',\n",
" 'team_xg_per90',\n",
" 'team_gk_goals_against_per90',\n",
" 'team_gk_save_pct',\n",
" 'team_gk_clean_sheets_pct',\n",
" 'team_passes_pct',\n",
" 'team_passes_pct_medium',\n",
" 'team_passes_pct_long',\n",
" 'team_sca_per90',\n",
" 'team_gca_per90',\n",
" #'team_dribble_tackles_pct',\n",
" 'team_aerials_won_pct',\n",
" 'vs_team_possession',\n",
" 'vs_team_goals_per90',\n",
" 'vs_team_assists_per90',\n",
" 'vs_team_xg_per90',\n",
" 'vs_team_gk_save_pct',\n",
" 'vs_team_gk_clean_sheets_pct',\n",
" 'vs_team_gk_pct_passes_launched',\n",
" 'vs_team_gk_crosses_stopped_pct',\n",
" 'vs_team_shots_on_target_per90',\n",
" 'vs_team_passes_pct',\n",
" 'vs_team_passes_pct_short',\n",
" 'vs_team_passes_pct_medium',\n",
" 'vs_team_passes_pct_long',\n",
" 'vs_team_sca_per90',\n",
" 'vs_team_gca_per90',\n",
" #'vs_team_dribble_tackles_pct',\n",
" #'vs_team_dribbles_completed_pct',\n",
" 'vs_team_aerials_won_pct',\n",
" 'opp_team_possession',\n",
" 'opp_team_goals_assists_per90',\n",
" 'opp_team_goals_pens_per90',\n",
" 'opp_team_goals_assists_pens_per90',\n",
" 'opp_team_xg_per90',\n",
" 'opp_team_gk_goals_against_per90',\n",
" 'opp_team_gk_save_pct',\n",
" 'opp_team_gk_clean_sheets_pct',\n",
" 'opp_team_passes_pct',\n",
" 'opp_team_passes_pct_medium',\n",
" 'opp_team_passes_pct_long',\n",
" 'opp_team_sca_per90',\n",
" 'opp_team_gca_per90',\n",
" #'opp_team_dribble_tackles_pct',\n",
" 'opp_team_aerials_won_pct',\n",
" 'opp_vs_team_possession',\n",
" 'opp_vs_team_goals_per90',\n",
" 'opp_vs_team_assists_per90',\n",
" 'opp_vs_team_xg_per90',\n",
" 'opp_vs_team_gk_save_pct',\n",
" 'opp_vs_team_gk_clean_sheets_pct',\n",
" 'opp_vs_team_gk_pct_passes_launched',\n",
" 'opp_vs_team_gk_crosses_stopped_pct',\n",
" 'opp_vs_team_shots_on_target_per90',\n",
" 'opp_vs_team_passes_pct',\n",
" 'opp_vs_team_passes_pct_short',\n",
" 'opp_vs_team_passes_pct_medium',\n",
" 'opp_vs_team_passes_pct_long',\n",
" 'opp_vs_team_sca_per90',\n",
" 'opp_vs_team_gca_per90',\n",
" #'opp_vs_team_dribble_tackles_pct',\n",
" #'opp_vs_team_dribbles_completed_pct',\n",
" 'opp_vs_team_aerials_won_pct',\n",
" \n",
" 'vote_avg',\n",
" 'vote_std']\n",
"\n",
"features_rel = [\n",
" 'goals',\n",
" 'assists',\n",
" 'cards_yellow',\n",
" 'cards_red',\n",
" 'xg',\n",
" 'npxg',\n",
" 'shots_on_target',\n",
" 'passes_completed',\n",
" 'passes_into_final_third',\n",
" 'passes_into_penalty_area',\n",
" 'progressive_passes',\n",
" 'passes_live',\n",
" 'passes_dead',\n",
" 'through_balls',\n",
" 'passes_switches',\n",
" 'crosses',\n",
" 'corner_kicks',\n",
" #'dribble_tackles',\n",
" #'dribbles_vs',\n",
" #'dribbled_past',\n",
" 'blocks',\n",
" 'blocked_shots',\n",
" 'blocked_passes',\n",
" 'interceptions',\n",
" 'clearances',\n",
" 'errors',\n",
" 'touches',\n",
" 'touches_def_pen_area',\n",
" 'touches_def_3rd',\n",
" 'touches_mid_3rd',\n",
" 'touches_att_3rd',\n",
" 'touches_att_pen_area',\n",
" 'touches_live_ball',\n",
" #'dribbles_completed',\n",
" #'dribbles',\n",
" 'passes_received',\n",
" 'miscontrols',\n",
" 'dispossessed',\n",
" 'fouls',\n",
" 'fouled',\n",
" 'aerials_won',\n",
" 'aerials_lost',\n",
" 'carries',\n",
" 'progressive_carries',\n",
" 'carries_into_final_third',\n",
" 'carries_into_penalty_area']\n",
"\n",
"features_rel_gamecorr = [\n",
" 'goals',\n",
" 'assists',\n",
" 'xg',\n",
" 'npxg',\n",
" 'cards_yellow',\n",
" 'cards_red'\n",
"]"
]
},
{
"cell_type": "markdown",
"id": "ced70285",
"metadata": {},
"source": [
"Function for merging match data (player, team, opponent team) and select only the desired features, applying the desired corrections."
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "3f43d509",
"metadata": {},
"outputs": [],
"source": [
"def player_match_data_ext(player, pteam, oppteam):\n",
" pdata = player_match_data(player, pteam, oppteam)\n",
" \n",
" if(not isinstance(pdata, pd.DataFrame)):\n",
" return None\n",
" \n",
" out = pd.concat([pdata[features_abs], pdata[features_rel]], axis = 1)\n",
" \n",
" out[features_rel] = out[features_rel] / max(pdata['minutes'][0], 1)\n",
" \n",
" out[features_rel_gamecorr] = out[features_rel_gamecorr] * (pdata['minutes'][0] / max(pdata['games'][0], 1) / 90)\n",
" \n",
" return out\n",
" "
]
},
{
"cell_type": "markdown",
"id": "959bf152",
"metadata": {},
"source": [
"Columns variable for the match data, to be then added to votes data."
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "930d00c7",
"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>r</th>\n",
" <th>games</th>\n",
" <th>games_starts</th>\n",
" <th>minutes</th>\n",
" <th>shots_on_target_pct</th>\n",
" <th>goals_per_shot</th>\n",
" <th>goals_per_shot_on_target</th>\n",
" <th>passes_pct</th>\n",
" <th>aerials_won_pct</th>\n",
" <th>team_possession</th>\n",
" <th>...</th>\n",
" <th>miscontrols</th>\n",
" <th>dispossessed</th>\n",
" <th>fouls</th>\n",
" <th>fouled</th>\n",
" <th>aerials_won</th>\n",
" <th>aerials_lost</th>\n",
" <th>carries</th>\n",
" <th>progressive_carries</th>\n",
" <th>carries_into_final_third</th>\n",
" <th>carries_into_penalty_area</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Barella</th>\n",
" <td>C</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>218</td>\n",
" <td>25.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>86.1</td>\n",
" <td>100.0</td>\n",
" <td>51.3</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.004587</td>\n",
" <td>0.013761</td>\n",
" <td>0.004587</td>\n",
" <td>0.0</td>\n",
" <td>0.555046</td>\n",
" <td>0.03211</td>\n",
" <td>0.027523</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 112 columns</p>\n",
"</div>"
],
"text/plain": [
" r games games_starts minutes shots_on_target_pct goals_per_shot \\\n",
"Barella C 3 3 218 25.0 0.0 \n",
"\n",
" goals_per_shot_on_target passes_pct aerials_won_pct \\\n",
"Barella 0.0 86.1 100.0 \n",
"\n",
" team_possession ... miscontrols dispossessed fouls fouled \\\n",
"Barella 51.3 ... 0.0 0.0 0.004587 0.013761 \n",
"\n",
" aerials_won aerials_lost carries progressive_carries \\\n",
"Barella 0.004587 0.0 0.555046 0.03211 \n",
"\n",
" carries_into_final_third carries_into_penalty_area \n",
"Barella 0.027523 0.0 \n",
"\n",
"[1 rows x 112 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test = player_match_data_ext('Barella', 'Inter', 'Atalanta')\n",
"\n",
"add_columns = test.columns\n",
"\n",
"test"
]
},
{
"cell_type": "markdown",
"id": "8d95c9ef",
"metadata": {},
"source": [
"Load Fantacalcio votes data for each match of the season."
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "3ae718d2",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Zappacosta</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Djimsiti</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Kolasinac</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Zortea</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>10.0</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",
" </tr>\n",
" <tr>\n",
" <th>859</th>\n",
" <td>3</td>\n",
" <td>Folorunsho</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>860</th>\n",
" <td>3</td>\n",
" <td>Serdar</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>861</th>\n",
" <td>3</td>\n",
" <td>Bonazzoli</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>862</th>\n",
" <td>3</td>\n",
" <td>Djuric</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>3</td>\n",
" <td>Ngonge</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>9.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>864 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote goals assists \\\n",
"0 1 Musso Atalanta Sassuolo 0 6.5 0 0 \n",
"1 1 Zappacosta Atalanta Sassuolo 0 6.5 0 0 \n",
"2 1 Djimsiti Atalanta Sassuolo 0 6.0 0 0 \n",
"3 1 Kolasinac Atalanta Sassuolo 0 6.5 0 0 \n",
"4 1 Zortea Atalanta Sassuolo 0 7.0 1 0 \n",
".. ... ... ... ... ... ... ... ... \n",
"859 3 Folorunsho Verona Sassuolo 0 5.0 0 0 \n",
"860 3 Serdar Verona Sassuolo 0 5.5 0 0 \n",
"861 3 Bonazzoli Verona Sassuolo 0 5.5 0 0 \n",
"862 3 Djuric Verona Sassuolo 0 6.0 0 0 \n",
"863 3 Ngonge Verona Sassuolo 0 6.5 1 0 \n",
"\n",
" cards_malus fantavote \n",
"0 0.0 6.5 \n",
"1 0.0 6.5 \n",
"2 0.0 6.0 \n",
"3 0.0 6.5 \n",
"4 0.0 10.0 \n",
".. ... ... \n",
"859 0.0 5.0 \n",
"860 0.0 5.5 \n",
"861 0.0 5.5 \n",
"862 0.0 6.0 \n",
"863 0.0 9.5 \n",
"\n",
"[864 rows x 10 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"votes = pd.read_excel('mid_outputs/players_votes.xlsx', index_col = 0)\n",
"votes"
]
},
{
"cell_type": "markdown",
"id": "8cf677e4",
"metadata": {},
"source": [
"Merge votes data with match data for the player."
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "ec0bc56b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"100\n",
"200\n",
"300\n",
"400\n",
"500\n",
"600\n",
"700\n",
"800\n"
]
}
],
"source": [
"db = votes.copy()\n",
"\n",
"delta = pd.DataFrame(columns = add_columns)\n",
"\n",
"for i in range(db.shape[0]):\n",
" ext_data = player_match_data_ext(db['player'][i], db['team'][i], db['oppteam'][i])\n",
" \n",
" if(not isinstance(ext_data, pd.DataFrame)):\n",
" continue\n",
" \n",
" ext_data = ext_data.rename(index = {db['player'][i] : i})\n",
" \n",
" delta = pd.concat([delta, ext_data], axis = 0)\n",
" \n",
" if(i % 100 == 0):\n",
" print(i)\n",
" \n",
"db = pd.concat([db, delta], axis = 1)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "b292f9f9",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" <th>...</th>\n",
" <th>miscontrols</th>\n",
" <th>dispossessed</th>\n",
" <th>fouls</th>\n",
" <th>fouled</th>\n",
" <th>aerials_won</th>\n",
" <th>aerials_lost</th>\n",
" <th>carries</th>\n",
" <th>progressive_carries</th>\n",
" <th>carries_into_final_third</th>\n",
" <th>carries_into_penalty_area</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Zappacosta</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>0.026316</td>\n",
" <td>0.015789</td>\n",
" <td>0.010526</td>\n",
" <td>0.021053</td>\n",
" <td>0.005263</td>\n",
" <td>0.021053</td>\n",
" <td>0.394737</td>\n",
" <td>0.047368</td>\n",
" <td>0.026316</td>\n",
" <td>0.015789</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Djimsiti</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.007874</td>\n",
" <td>0.000000</td>\n",
" <td>0.007874</td>\n",
" <td>0.000000</td>\n",
" <td>0.019685</td>\n",
" <td>0.027559</td>\n",
" <td>0.350394</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Kolasinac</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>0.003717</td>\n",
" <td>0.003717</td>\n",
" <td>0.000000</td>\n",
" <td>0.011152</td>\n",
" <td>0.011152</td>\n",
" <td>0.018587</td>\n",
" <td>0.457249</td>\n",
" <td>0.022305</td>\n",
" <td>0.033457</td>\n",
" <td>0.003717</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Zortea</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>10.0</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.015625</td>\n",
" <td>0.015625</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.015625</td>\n",
" <td>0.515625</td>\n",
" <td>0.062500</td>\n",
" <td>0.046875</td>\n",
" <td>0.015625</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>859</th>\n",
" <td>3</td>\n",
" <td>Folorunsho</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>0.024490</td>\n",
" <td>0.008163</td>\n",
" <td>0.016327</td>\n",
" <td>0.040816</td>\n",
" <td>0.016327</td>\n",
" <td>0.053061</td>\n",
" <td>0.204082</td>\n",
" <td>0.016327</td>\n",
" <td>0.024490</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>860</th>\n",
" <td>3</td>\n",
" <td>Serdar</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.036145</td>\n",
" <td>0.012048</td>\n",
" <td>0.012048</td>\n",
" <td>0.000000</td>\n",
" <td>0.012048</td>\n",
" <td>0.036145</td>\n",
" <td>0.204819</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>861</th>\n",
" <td>3</td>\n",
" <td>Bonazzoli</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.045977</td>\n",
" <td>0.011494</td>\n",
" <td>0.000000</td>\n",
" <td>0.034483</td>\n",
" <td>0.000000</td>\n",
" <td>0.034483</td>\n",
" <td>0.344828</td>\n",
" <td>0.022989</td>\n",
" <td>0.022989</td>\n",
" <td>0.011494</td>\n",
" </tr>\n",
" <tr>\n",
" <th>862</th>\n",
" <td>3</td>\n",
" <td>Djuric</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.024390</td>\n",
" <td>0.008130</td>\n",
" <td>0.048780</td>\n",
" <td>0.008130</td>\n",
" <td>0.130081</td>\n",
" <td>0.081301</td>\n",
" <td>0.178862</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>3</td>\n",
" <td>Ngonge</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>9.5</td>\n",
" <td>...</td>\n",
" <td>0.022727</td>\n",
" <td>0.009091</td>\n",
" <td>0.040909</td>\n",
" <td>0.013636</td>\n",
" <td>0.013636</td>\n",
" <td>0.018182</td>\n",
" <td>0.227273</td>\n",
" <td>0.040909</td>\n",
" <td>0.013636</td>\n",
" <td>0.018182</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>864 rows × 122 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote goals assists \\\n",
"0 1 Musso Atalanta Sassuolo 0 6.5 0 0 \n",
"1 1 Zappacosta Atalanta Sassuolo 0 6.5 0 0 \n",
"2 1 Djimsiti Atalanta Sassuolo 0 6.0 0 0 \n",
"3 1 Kolasinac Atalanta Sassuolo 0 6.5 0 0 \n",
"4 1 Zortea Atalanta Sassuolo 0 7.0 1 0 \n",
".. ... ... ... ... ... ... ... ... \n",
"859 3 Folorunsho Verona Sassuolo 0 5.0 0 0 \n",
"860 3 Serdar Verona Sassuolo 0 5.5 0 0 \n",
"861 3 Bonazzoli Verona Sassuolo 0 5.5 0 0 \n",
"862 3 Djuric Verona Sassuolo 0 6.0 0 0 \n",
"863 3 Ngonge Verona Sassuolo 0 6.5 1 0 \n",
"\n",
" cards_malus fantavote ... miscontrols dispossessed fouls fouled \\\n",
"0 0.0 6.5 ... 0.000000 0.000000 0.000000 0.000000 \n",
"1 0.0 6.5 ... 0.026316 0.015789 0.010526 0.021053 \n",
"2 0.0 6.0 ... 0.007874 0.000000 0.007874 0.000000 \n",
"3 0.0 6.5 ... 0.003717 0.003717 0.000000 0.011152 \n",
"4 0.0 10.0 ... 0.000000 0.015625 0.015625 0.000000 \n",
".. ... ... ... ... ... ... ... \n",
"859 0.0 5.0 ... 0.024490 0.008163 0.016327 0.040816 \n",
"860 0.0 5.5 ... 0.036145 0.012048 0.012048 0.000000 \n",
"861 0.0 5.5 ... 0.045977 0.011494 0.000000 0.034483 \n",
"862 0.0 6.0 ... 0.024390 0.008130 0.048780 0.008130 \n",
"863 0.0 9.5 ... 0.022727 0.009091 0.040909 0.013636 \n",
"\n",
" aerials_won aerials_lost carries progressive_carries \\\n",
"0 0.000000 0.000000 0.000000 0.000000 \n",
"1 0.005263 0.021053 0.394737 0.047368 \n",
"2 0.019685 0.027559 0.350394 0.000000 \n",
"3 0.011152 0.018587 0.457249 0.022305 \n",
"4 0.000000 0.015625 0.515625 0.062500 \n",
".. ... ... ... ... \n",
"859 0.016327 0.053061 0.204082 0.016327 \n",
"860 0.012048 0.036145 0.204819 0.000000 \n",
"861 0.000000 0.034483 0.344828 0.022989 \n",
"862 0.130081 0.081301 0.178862 0.000000 \n",
"863 0.013636 0.018182 0.227273 0.040909 \n",
"\n",
" carries_into_final_third carries_into_penalty_area \n",
"0 0.000000 0.000000 \n",
"1 0.026316 0.015789 \n",
"2 0.000000 0.000000 \n",
"3 0.033457 0.003717 \n",
"4 0.046875 0.015625 \n",
".. ... ... \n",
"859 0.024490 0.000000 \n",
"860 0.000000 0.000000 \n",
"861 0.022989 0.011494 \n",
"862 0.000000 0.000000 \n",
"863 0.013636 0.018182 \n",
"\n",
"[864 rows x 122 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db"
]
},
{
"cell_type": "markdown",
"id": "d237f87b",
"metadata": {},
"source": [
"Remove undesired database entries."
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "1db9f77f",
"metadata": {},
"outputs": [],
"source": [
"db = db.drop(db[db.r == 'P'].index) # remove goalkeepers\n",
"db = db.drop(db[db.r != db.r].index) # remove non existing players (by searching NaN values)\n",
"db = db.drop(db[db.xg != db.xg].index)\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "f56df3ca",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" <th>...</th>\n",
" <th>miscontrols</th>\n",
" <th>dispossessed</th>\n",
" <th>fouls</th>\n",
" <th>fouled</th>\n",
" <th>aerials_won</th>\n",
" <th>aerials_lost</th>\n",
" <th>carries</th>\n",
" <th>progressive_carries</th>\n",
" <th>carries_into_final_third</th>\n",
" <th>carries_into_penalty_area</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Zappacosta</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>0.026316</td>\n",
" <td>0.015789</td>\n",
" <td>0.010526</td>\n",
" <td>0.021053</td>\n",
" <td>0.005263</td>\n",
" <td>0.021053</td>\n",
" <td>0.394737</td>\n",
" <td>0.047368</td>\n",
" <td>0.026316</td>\n",
" <td>0.015789</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Djimsiti</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.007874</td>\n",
" <td>0.000000</td>\n",
" <td>0.007874</td>\n",
" <td>0.000000</td>\n",
" <td>0.019685</td>\n",
" <td>0.027559</td>\n",
" <td>0.350394</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Kolasinac</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>0.003717</td>\n",
" <td>0.003717</td>\n",
" <td>0.000000</td>\n",
" <td>0.011152</td>\n",
" <td>0.011152</td>\n",
" <td>0.018587</td>\n",
" <td>0.457249</td>\n",
" <td>0.022305</td>\n",
" <td>0.033457</td>\n",
" <td>0.003717</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Zortea</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>10.0</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.015625</td>\n",
" <td>0.015625</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.015625</td>\n",
" <td>0.515625</td>\n",
" <td>0.062500</td>\n",
" <td>0.046875</td>\n",
" <td>0.015625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1</td>\n",
" <td>Ruggeri</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" <td>7.5</td>\n",
" <td>...</td>\n",
" <td>0.012295</td>\n",
" <td>0.004098</td>\n",
" <td>0.016393</td>\n",
" <td>0.000000</td>\n",
" <td>0.004098</td>\n",
" <td>0.024590</td>\n",
" <td>0.434426</td>\n",
" <td>0.016393</td>\n",
" <td>0.016393</td>\n",
" <td>0.004098</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>859</th>\n",
" <td>3</td>\n",
" <td>Folorunsho</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>0.024490</td>\n",
" <td>0.008163</td>\n",
" <td>0.016327</td>\n",
" <td>0.040816</td>\n",
" <td>0.016327</td>\n",
" <td>0.053061</td>\n",
" <td>0.204082</td>\n",
" <td>0.016327</td>\n",
" <td>0.024490</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>860</th>\n",
" <td>3</td>\n",
" <td>Serdar</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.036145</td>\n",
" <td>0.012048</td>\n",
" <td>0.012048</td>\n",
" <td>0.000000</td>\n",
" <td>0.012048</td>\n",
" <td>0.036145</td>\n",
" <td>0.204819</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>861</th>\n",
" <td>3</td>\n",
" <td>Bonazzoli</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.045977</td>\n",
" <td>0.011494</td>\n",
" <td>0.000000</td>\n",
" <td>0.034483</td>\n",
" <td>0.000000</td>\n",
" <td>0.034483</td>\n",
" <td>0.344828</td>\n",
" <td>0.022989</td>\n",
" <td>0.022989</td>\n",
" <td>0.011494</td>\n",
" </tr>\n",
" <tr>\n",
" <th>862</th>\n",
" <td>3</td>\n",
" <td>Djuric</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.024390</td>\n",
" <td>0.008130</td>\n",
" <td>0.048780</td>\n",
" <td>0.008130</td>\n",
" <td>0.130081</td>\n",
" <td>0.081301</td>\n",
" <td>0.178862</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>3</td>\n",
" <td>Ngonge</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>9.5</td>\n",
" <td>...</td>\n",
" <td>0.022727</td>\n",
" <td>0.009091</td>\n",
" <td>0.040909</td>\n",
" <td>0.013636</td>\n",
" <td>0.013636</td>\n",
" <td>0.018182</td>\n",
" <td>0.227273</td>\n",
" <td>0.040909</td>\n",
" <td>0.013636</td>\n",
" <td>0.018182</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>795 rows × 122 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote goals assists \\\n",
"1 1 Zappacosta Atalanta Sassuolo 0 6.5 0 0 \n",
"2 1 Djimsiti Atalanta Sassuolo 0 6.0 0 0 \n",
"3 1 Kolasinac Atalanta Sassuolo 0 6.5 0 0 \n",
"4 1 Zortea Atalanta Sassuolo 0 7.0 1 0 \n",
"5 1 Ruggeri Atalanta Sassuolo 0 6.5 0 1 \n",
".. ... ... ... ... ... ... ... ... \n",
"859 3 Folorunsho Verona Sassuolo 0 5.0 0 0 \n",
"860 3 Serdar Verona Sassuolo 0 5.5 0 0 \n",
"861 3 Bonazzoli Verona Sassuolo 0 5.5 0 0 \n",
"862 3 Djuric Verona Sassuolo 0 6.0 0 0 \n",
"863 3 Ngonge Verona Sassuolo 0 6.5 1 0 \n",
"\n",
" cards_malus fantavote ... miscontrols dispossessed fouls fouled \\\n",
"1 0.0 6.5 ... 0.026316 0.015789 0.010526 0.021053 \n",
"2 0.0 6.0 ... 0.007874 0.000000 0.007874 0.000000 \n",
"3 0.0 6.5 ... 0.003717 0.003717 0.000000 0.011152 \n",
"4 0.0 10.0 ... 0.000000 0.015625 0.015625 0.000000 \n",
"5 0.0 7.5 ... 0.012295 0.004098 0.016393 0.000000 \n",
".. ... ... ... ... ... ... ... \n",
"859 0.0 5.0 ... 0.024490 0.008163 0.016327 0.040816 \n",
"860 0.0 5.5 ... 0.036145 0.012048 0.012048 0.000000 \n",
"861 0.0 5.5 ... 0.045977 0.011494 0.000000 0.034483 \n",
"862 0.0 6.0 ... 0.024390 0.008130 0.048780 0.008130 \n",
"863 0.0 9.5 ... 0.022727 0.009091 0.040909 0.013636 \n",
"\n",
" aerials_won aerials_lost carries progressive_carries \\\n",
"1 0.005263 0.021053 0.394737 0.047368 \n",
"2 0.019685 0.027559 0.350394 0.000000 \n",
"3 0.011152 0.018587 0.457249 0.022305 \n",
"4 0.000000 0.015625 0.515625 0.062500 \n",
"5 0.004098 0.024590 0.434426 0.016393 \n",
".. ... ... ... ... \n",
"859 0.016327 0.053061 0.204082 0.016327 \n",
"860 0.012048 0.036145 0.204819 0.000000 \n",
"861 0.000000 0.034483 0.344828 0.022989 \n",
"862 0.130081 0.081301 0.178862 0.000000 \n",
"863 0.013636 0.018182 0.227273 0.040909 \n",
"\n",
" carries_into_final_third carries_into_penalty_area \n",
"1 0.026316 0.015789 \n",
"2 0.000000 0.000000 \n",
"3 0.033457 0.003717 \n",
"4 0.046875 0.015625 \n",
"5 0.016393 0.004098 \n",
".. ... ... \n",
"859 0.024490 0.000000 \n",
"860 0.000000 0.000000 \n",
"861 0.022989 0.011494 \n",
"862 0.000000 0.000000 \n",
"863 0.013636 0.018182 \n",
"\n",
"[795 rows x 122 columns]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db"
]
},
{
"cell_type": "markdown",
"id": "ab69d09e",
"metadata": {},
"source": [
"Save outfield players database to file."
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "df26c8e0",
"metadata": {},
"outputs": [],
"source": [
"db.to_excel('mid_outputs/database_entries.xlsx')"
]
},
{
"cell_type": "markdown",
"id": "38b564d2",
"metadata": {},
"source": [
"Do the same process for goalkeepers, generating a different database."
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "4d06576a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 - matchday\n",
"1 - player\n",
"2 - team\n",
"3 - oppteam\n",
"4 - home\n",
"5 - vote\n",
"6 - goals\n",
"7 - assists\n",
"8 - cards_malus\n",
"9 - fantavote\n",
"10 - r\n",
"11 - games\n",
"12 - games_starts\n",
"13 - minutes\n",
"14 - shots_on_target_pct\n",
"15 - goals_per_shot\n",
"16 - goals_per_shot_on_target\n",
"17 - passes_pct\n",
"18 - aerials_won_pct\n",
"19 - team_possession\n",
"20 - team_goals_assists_per90\n",
"21 - team_goals_pens_per90\n",
"22 - team_goals_assists_pens_per90\n",
"23 - team_xg_per90\n",
"24 - team_gk_goals_against_per90\n",
"25 - team_gk_save_pct\n",
"26 - team_gk_clean_sheets_pct\n",
"27 - team_passes_pct\n",
"28 - team_passes_pct_medium\n",
"29 - team_passes_pct_long\n",
"30 - team_sca_per90\n",
"31 - team_gca_per90\n",
"32 - team_aerials_won_pct\n",
"33 - vs_team_possession\n",
"34 - vs_team_goals_per90\n",
"35 - vs_team_assists_per90\n",
"36 - vs_team_xg_per90\n",
"37 - vs_team_gk_save_pct\n",
"38 - vs_team_gk_clean_sheets_pct\n",
"39 - vs_team_gk_pct_passes_launched\n",
"40 - vs_team_gk_crosses_stopped_pct\n",
"41 - vs_team_shots_on_target_per90\n",
"42 - vs_team_passes_pct\n",
"43 - vs_team_passes_pct_short\n",
"44 - vs_team_passes_pct_medium\n",
"45 - vs_team_passes_pct_long\n",
"46 - vs_team_sca_per90\n",
"47 - vs_team_gca_per90\n",
"48 - vs_team_aerials_won_pct\n",
"49 - opp_team_possession\n",
"50 - opp_team_goals_assists_per90\n",
"51 - opp_team_goals_pens_per90\n",
"52 - opp_team_goals_assists_pens_per90\n",
"53 - opp_team_xg_per90\n",
"54 - opp_team_gk_goals_against_per90\n",
"55 - opp_team_gk_save_pct\n",
"56 - opp_team_gk_clean_sheets_pct\n",
"57 - opp_team_passes_pct\n",
"58 - opp_team_passes_pct_medium\n",
"59 - opp_team_passes_pct_long\n",
"60 - opp_team_sca_per90\n",
"61 - opp_team_gca_per90\n",
"62 - opp_team_aerials_won_pct\n",
"63 - opp_vs_team_possession\n",
"64 - opp_vs_team_goals_per90\n",
"65 - opp_vs_team_assists_per90\n",
"66 - opp_vs_team_xg_per90\n",
"67 - opp_vs_team_gk_save_pct\n",
"68 - opp_vs_team_gk_clean_sheets_pct\n",
"69 - opp_vs_team_gk_pct_passes_launched\n",
"70 - opp_vs_team_gk_crosses_stopped_pct\n",
"71 - opp_vs_team_shots_on_target_per90\n",
"72 - opp_vs_team_passes_pct\n",
"73 - opp_vs_team_passes_pct_short\n",
"74 - opp_vs_team_passes_pct_medium\n",
"75 - opp_vs_team_passes_pct_long\n",
"76 - opp_vs_team_sca_per90\n",
"77 - opp_vs_team_gca_per90\n",
"78 - opp_vs_team_aerials_won_pct\n",
"79 - vote_avg\n",
"80 - vote_std\n",
"81 - goals\n",
"82 - assists\n",
"83 - cards_yellow\n",
"84 - cards_red\n",
"85 - xg\n",
"86 - npxg\n",
"87 - shots_on_target\n",
"88 - passes_completed\n",
"89 - passes_into_final_third\n",
"90 - passes_into_penalty_area\n",
"91 - progressive_passes\n",
"92 - passes_live\n",
"93 - passes_dead\n",
"94 - through_balls\n",
"95 - passes_switches\n",
"96 - crosses\n",
"97 - corner_kicks\n",
"98 - blocks\n",
"99 - blocked_shots\n",
"100 - blocked_passes\n",
"101 - interceptions\n",
"102 - clearances\n",
"103 - errors\n",
"104 - touches\n",
"105 - touches_def_pen_area\n",
"106 - touches_def_3rd\n",
"107 - touches_mid_3rd\n",
"108 - touches_att_3rd\n",
"109 - touches_att_pen_area\n",
"110 - touches_live_ball\n",
"111 - passes_received\n",
"112 - miscontrols\n",
"113 - dispossessed\n",
"114 - fouls\n",
"115 - fouled\n",
"116 - aerials_won\n",
"117 - aerials_lost\n",
"118 - carries\n",
"119 - progressive_carries\n",
"120 - carries_into_final_third\n",
"121 - carries_into_penalty_area\n"
]
}
],
"source": [
"for i in range(db.columns.shape[0]):\n",
" print(str(i) + \" - \" + str(db.columns[i]))"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "01bb7413",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['r',\n",
" 'fb_ID',\n",
" 'gk_games',\n",
" 'gk_games_starts',\n",
" 'gk_minutes',\n",
" 'gk_goals_against_per90',\n",
" 'gk_shots_on_target_against',\n",
" 'gk_saves',\n",
" 'gk_save_pct',\n",
" 'gk_clean_sheets_pct',\n",
" 'gk_free_kick_goals_against',\n",
" 'gk_corner_kick_goals_against',\n",
" 'gk_own_goals_against',\n",
" 'gk_psxg',\n",
" 'gk_psnpxg_per_shot_on_target_against',\n",
" 'gk_psxg_net',\n",
" 'gk_psxg_net_per90',\n",
" 'gk_passes_completed_launched',\n",
" 'gk_passes_launched',\n",
" 'gk_passes_pct_launched',\n",
" 'gk_passes',\n",
" 'gk_passes_throws',\n",
" 'gk_pct_passes_launched',\n",
" 'gk_passes_length_avg',\n",
" 'gk_goal_kicks',\n",
" 'gk_pct_goal_kicks_launched',\n",
" 'gk_goal_kick_length_avg',\n",
" 'gk_crosses',\n",
" 'gk_crosses_stopped',\n",
" 'gk_crosses_stopped_pct',\n",
" 'gk_def_actions_outside_pen_area',\n",
" 'gk_def_actions_outside_pen_area_per90',\n",
" 'gk_avg_distance_def_actions',\n",
" 'team_possession',\n",
" 'team_goals_assists_per90',\n",
" 'team_goals_pens_per90',\n",
" 'team_goals_assists_pens_per90',\n",
" 'team_xg_per90',\n",
" 'team_gk_goals_against_per90',\n",
" 'team_gk_save_pct',\n",
" 'team_gk_clean_sheets_pct',\n",
" 'team_passes_pct',\n",
" 'team_passes_pct_medium',\n",
" 'team_passes_pct_long',\n",
" 'team_sca_per90',\n",
" 'team_gca_per90',\n",
" 'team_dribble_tackles_pct',\n",
" 'team_aerials_won_pct',\n",
" 'vs_team_possession',\n",
" 'vs_team_goals_per90',\n",
" 'vs_team_assists_per90',\n",
" 'vs_team_xg_per90',\n",
" 'vs_team_gk_save_pct',\n",
" 'vs_team_gk_clean_sheets_pct',\n",
" 'vs_team_gk_pct_passes_launched',\n",
" 'vs_team_gk_crosses_stopped_pct',\n",
" 'vs_team_shots_on_target_per90',\n",
" 'vs_team_passes_pct',\n",
" 'vs_team_passes_pct_short',\n",
" 'vs_team_passes_pct_medium',\n",
" 'vs_team_passes_pct_long',\n",
" 'vs_team_sca_per90',\n",
" 'vs_team_gca_per90',\n",
" 'vs_team_dribble_tackles_pct',\n",
" 'vs_team_dribbles_completed_pct',\n",
" 'vs_team_aerials_won_pct']"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rx = pd.read_excel('tmp/playermatchdata_sel_gk.xlsx', index_col = 0, header = None) \n",
"\n",
"out = list()\n",
"\n",
"for i in range(1, rx.shape[1]):\n",
" if(rx[i][2] == \"x\"):\n",
" out.append(rx[i][0])\n",
" \n",
"out"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "02f961d8",
"metadata": {},
"outputs": [],
"source": [
"features_abs_gk = [\n",
" 'gk_games',\n",
" 'gk_games_starts',\n",
" 'gk_minutes',\n",
" 'gk_goals_against_per90', \n",
" 'gk_save_pct',\n",
" 'gk_clean_sheets_pct',\n",
" 'gk_psxg_net_per90',\n",
" 'gk_passes_pct_launched',\n",
" 'gk_pct_passes_launched',\n",
" 'gk_passes_length_avg',\n",
" 'gk_pct_goal_kicks_launched',\n",
" 'gk_goal_kick_length_avg',\n",
" 'gk_crosses_stopped_pct',\n",
" 'gk_def_actions_outside_pen_area_per90',\n",
" 'gk_avg_distance_def_actions',\n",
" \n",
" 'team_possession',\n",
" 'team_goals_assists_per90',\n",
" 'team_goals_pens_per90',\n",
" 'team_goals_assists_pens_per90',\n",
" 'team_xg_per90',\n",
" 'team_gk_goals_against_per90',\n",
" 'team_gk_save_pct',\n",
" 'team_gk_clean_sheets_pct',\n",
" 'team_passes_pct',\n",
" 'team_passes_pct_medium',\n",
" 'team_passes_pct_long',\n",
" 'team_sca_per90',\n",
" 'team_gca_per90',\n",
" #'team_dribble_tackles_pct',\n",
" 'team_aerials_won_pct',\n",
" 'vs_team_possession',\n",
" 'vs_team_goals_per90',\n",
" 'vs_team_assists_per90',\n",
" 'vs_team_xg_per90',\n",
" 'vs_team_gk_save_pct',\n",
" 'vs_team_gk_clean_sheets_pct',\n",
" 'vs_team_gk_pct_passes_launched',\n",
" 'vs_team_gk_crosses_stopped_pct',\n",
" 'vs_team_shots_on_target_per90',\n",
" 'vs_team_passes_pct',\n",
" 'vs_team_passes_pct_short',\n",
" 'vs_team_passes_pct_medium',\n",
" 'vs_team_passes_pct_long',\n",
" 'vs_team_sca_per90',\n",
" 'vs_team_gca_per90',\n",
" #'vs_team_dribble_tackles_pct',\n",
" #'vs_team_dribbles_completed_pct',\n",
" 'vs_team_aerials_won_pct',\n",
" 'opp_team_possession',\n",
" 'opp_team_goals_assists_per90',\n",
" 'opp_team_goals_pens_per90',\n",
" 'opp_team_goals_assists_pens_per90',\n",
" 'opp_team_xg_per90',\n",
" 'opp_team_gk_goals_against_per90',\n",
" 'opp_team_gk_save_pct',\n",
" 'opp_team_gk_clean_sheets_pct',\n",
" 'opp_team_passes_pct',\n",
" 'opp_team_passes_pct_medium',\n",
" 'opp_team_passes_pct_long',\n",
" 'opp_team_sca_per90',\n",
" 'opp_team_gca_per90',\n",
" #'opp_team_dribble_tackles_pct',\n",
" 'opp_team_aerials_won_pct',\n",
" 'opp_vs_team_possession',\n",
" 'opp_vs_team_goals_per90',\n",
" 'opp_vs_team_assists_per90',\n",
" 'opp_vs_team_xg_per90',\n",
" 'opp_vs_team_gk_save_pct',\n",
" 'opp_vs_team_gk_clean_sheets_pct',\n",
" 'opp_vs_team_gk_pct_passes_launched',\n",
" 'opp_vs_team_gk_crosses_stopped_pct',\n",
" 'opp_vs_team_shots_on_target_per90',\n",
" 'opp_vs_team_passes_pct',\n",
" 'opp_vs_team_passes_pct_short',\n",
" 'opp_vs_team_passes_pct_medium',\n",
" 'opp_vs_team_passes_pct_long',\n",
" 'opp_vs_team_sca_per90',\n",
" 'opp_vs_team_gca_per90',\n",
" #'opp_vs_team_dribble_tackles_pct',\n",
" #'opp_vs_team_dribbles_completed_pct',\n",
" 'opp_vs_team_aerials_won_pct',\n",
" \n",
" 'vote_avg',\n",
" 'vote_std']\n",
"\n",
"features_rel_gk = [\n",
" 'gk_shots_on_target_against',\n",
" 'gk_saves',\n",
" 'gk_free_kick_goals_against',\n",
" 'gk_corner_kick_goals_against',\n",
" 'gk_own_goals_against',\n",
" 'gk_psxg',\n",
" 'gk_psnpxg_per_shot_on_target_against',\n",
" 'gk_psxg_net',\n",
" 'gk_passes_completed_launched',\n",
" 'gk_passes_launched',\n",
" 'gk_passes',\n",
" 'gk_passes_throws',\n",
" 'gk_goal_kicks',\n",
" 'gk_crosses',\n",
" 'gk_crosses_stopped',\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "5e3694a0",
"metadata": {},
"outputs": [],
"source": [
"def player_match_data_ext_gk(player, pteam, oppteam):\n",
" pdata = player_match_data(player, pteam, oppteam)\n",
" \n",
" if(not isinstance(pdata, pd.DataFrame)):\n",
" return None\n",
" \n",
" if(pdata['gk_games'][0] <= 0):\n",
" return None\n",
" \n",
" out = pd.concat([pdata[features_abs_gk], pdata[features_rel_gk]], axis = 1)\n",
" \n",
" out[features_rel_gk] = out[features_rel_gk] / max(pdata['minutes'][0], 1)\n",
"\n",
" return out\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "9b671646",
"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>gk_games</th>\n",
" <th>gk_games_starts</th>\n",
" <th>gk_minutes</th>\n",
" <th>gk_goals_against_per90</th>\n",
" <th>gk_save_pct</th>\n",
" <th>gk_clean_sheets_pct</th>\n",
" <th>gk_psxg_net_per90</th>\n",
" <th>gk_passes_pct_launched</th>\n",
" <th>gk_pct_passes_launched</th>\n",
" <th>gk_passes_length_avg</th>\n",
" <th>...</th>\n",
" <th>gk_psxg</th>\n",
" <th>gk_psnpxg_per_shot_on_target_against</th>\n",
" <th>gk_psxg_net</th>\n",
" <th>gk_passes_completed_launched</th>\n",
" <th>gk_passes_launched</th>\n",
" <th>gk_passes</th>\n",
" <th>gk_passes_throws</th>\n",
" <th>gk_goal_kicks</th>\n",
" <th>gk_crosses</th>\n",
" <th>gk_crosses_stopped</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Consigli</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>270</td>\n",
" <td>1.67</td>\n",
" <td>66.7</td>\n",
" <td>0.0</td>\n",
" <td>-0.58</td>\n",
" <td>23.9</td>\n",
" <td>38.9</td>\n",
" <td>37.1</td>\n",
" <td>...</td>\n",
" <td>3.3</td>\n",
" <td>0.19</td>\n",
" <td>-1.7</td>\n",
" <td>11.0</td>\n",
" <td>46.0</td>\n",
" <td>95.0</td>\n",
" <td>10.0</td>\n",
" <td>34.0</td>\n",
" <td>46.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 92 columns</p>\n",
"</div>"
],
"text/plain": [
" gk_games gk_games_starts gk_minutes gk_goals_against_per90 \\\n",
"Consigli 3 3 270 1.67 \n",
"\n",
" gk_save_pct gk_clean_sheets_pct gk_psxg_net_per90 \\\n",
"Consigli 66.7 0.0 -0.58 \n",
"\n",
" gk_passes_pct_launched gk_pct_passes_launched \\\n",
"Consigli 23.9 38.9 \n",
"\n",
" gk_passes_length_avg ... gk_psxg \\\n",
"Consigli 37.1 ... 3.3 \n",
"\n",
" gk_psnpxg_per_shot_on_target_against gk_psxg_net \\\n",
"Consigli 0.19 -1.7 \n",
"\n",
" gk_passes_completed_launched gk_passes_launched gk_passes \\\n",
"Consigli 11.0 46.0 95.0 \n",
"\n",
" gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n",
"Consigli 10.0 34.0 46.0 2.0 \n",
"\n",
"[1 rows x 92 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test = player_match_data_ext_gk('Consigli', 'Sassuolo', 'Atalanta')\n",
"\n",
"add_columns_gk = test.columns\n",
"\n",
"test"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "33f805a9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"100\n",
"200\n",
"300\n",
"400\n",
"500\n",
"600\n",
"700\n",
"800\n"
]
}
],
"source": [
"db_gk = votes.copy()\n",
"\n",
"delta = pd.DataFrame(columns = add_columns_gk)\n",
"\n",
"for i in range(db_gk.shape[0]):\n",
" ext_data = player_match_data_ext_gk(db_gk['player'][i], db_gk['team'][i], db_gk['oppteam'][i])\n",
" \n",
" if(i % 100 == 0):\n",
" print(i)\n",
" \n",
" if(not isinstance(ext_data, pd.DataFrame)):\n",
" continue\n",
" \n",
" ext_data = ext_data.rename(index = {db_gk['player'][i] : i})\n",
" \n",
" delta = pd.concat([delta, ext_data], axis = 0)\n",
" \n",
" \n",
" \n",
"db_gk = pd.concat([db_gk, delta], axis = 1)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "4d484846",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" <th>...</th>\n",
" <th>gk_psxg</th>\n",
" <th>gk_psnpxg_per_shot_on_target_against</th>\n",
" <th>gk_psxg_net</th>\n",
" <th>gk_passes_completed_launched</th>\n",
" <th>gk_passes_launched</th>\n",
" <th>gk_passes</th>\n",
" <th>gk_passes_throws</th>\n",
" <th>gk_goal_kicks</th>\n",
" <th>gk_crosses</th>\n",
" <th>gk_crosses_stopped</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>2.1</td>\n",
" <td>0.21</td>\n",
" <td>0.1</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>88.0</td>\n",
" <td>18.0</td>\n",
" <td>18.0</td>\n",
" <td>28.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Zappacosta</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Djimsiti</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Kolasinac</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Zortea</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>10.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</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>859</th>\n",
" <td>3</td>\n",
" <td>Folorunsho</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>860</th>\n",
" <td>3</td>\n",
" <td>Serdar</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>861</th>\n",
" <td>3</td>\n",
" <td>Bonazzoli</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>862</th>\n",
" <td>3</td>\n",
" <td>Djuric</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>3</td>\n",
" <td>Ngonge</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>9.5</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>864 rows × 102 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote goals assists \\\n",
"0 1 Musso Atalanta Sassuolo 0 6.5 0 0 \n",
"1 1 Zappacosta Atalanta Sassuolo 0 6.5 0 0 \n",
"2 1 Djimsiti Atalanta Sassuolo 0 6.0 0 0 \n",
"3 1 Kolasinac Atalanta Sassuolo 0 6.5 0 0 \n",
"4 1 Zortea Atalanta Sassuolo 0 7.0 1 0 \n",
".. ... ... ... ... ... ... ... ... \n",
"859 3 Folorunsho Verona Sassuolo 0 5.0 0 0 \n",
"860 3 Serdar Verona Sassuolo 0 5.5 0 0 \n",
"861 3 Bonazzoli Verona Sassuolo 0 5.5 0 0 \n",
"862 3 Djuric Verona Sassuolo 0 6.0 0 0 \n",
"863 3 Ngonge Verona Sassuolo 0 6.5 1 0 \n",
"\n",
" cards_malus fantavote ... gk_psxg gk_psnpxg_per_shot_on_target_against \\\n",
"0 0.0 6.5 ... 2.1 0.21 \n",
"1 0.0 6.5 ... NaN NaN \n",
"2 0.0 6.0 ... NaN NaN \n",
"3 0.0 6.5 ... NaN NaN \n",
"4 0.0 10.0 ... NaN NaN \n",
".. ... ... ... ... ... \n",
"859 0.0 5.0 ... NaN NaN \n",
"860 0.0 5.5 ... NaN NaN \n",
"861 0.0 5.5 ... NaN NaN \n",
"862 0.0 6.0 ... NaN NaN \n",
"863 0.0 9.5 ... NaN NaN \n",
"\n",
" gk_psxg_net gk_passes_completed_launched gk_passes_launched gk_passes \\\n",
"0 0.1 11.0 34.0 88.0 \n",
"1 NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN \n",
".. ... ... ... ... \n",
"859 NaN NaN NaN NaN \n",
"860 NaN NaN NaN NaN \n",
"861 NaN NaN NaN NaN \n",
"862 NaN NaN NaN NaN \n",
"863 NaN NaN NaN NaN \n",
"\n",
" gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n",
"0 18.0 18.0 28.0 2.0 \n",
"1 NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN \n",
".. ... ... ... ... \n",
"859 NaN NaN NaN NaN \n",
"860 NaN NaN NaN NaN \n",
"861 NaN NaN NaN NaN \n",
"862 NaN NaN NaN NaN \n",
"863 NaN NaN NaN NaN \n",
"\n",
"[864 rows x 102 columns]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db_gk"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "adab3577",
"metadata": {},
"outputs": [],
"source": [
"db_gk = db_gk.drop(db_gk[db_gk.gk_games != db_gk.gk_games].index) # remove non extisting players"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "e7ae792d",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" <th>...</th>\n",
" <th>gk_psxg</th>\n",
" <th>gk_psnpxg_per_shot_on_target_against</th>\n",
" <th>gk_psxg_net</th>\n",
" <th>gk_passes_completed_launched</th>\n",
" <th>gk_passes_launched</th>\n",
" <th>gk_passes</th>\n",
" <th>gk_passes_throws</th>\n",
" <th>gk_goal_kicks</th>\n",
" <th>gk_crosses</th>\n",
" <th>gk_crosses_stopped</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>2.1</td>\n",
" <td>0.21</td>\n",
" <td>0.1</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>88.0</td>\n",
" <td>18.0</td>\n",
" <td>18.0</td>\n",
" <td>28.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1</td>\n",
" <td>Skorupski</td>\n",
" <td>Bologna</td>\n",
" <td>Milan</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.33</td>\n",
" <td>-1.0</td>\n",
" <td>11.0</td>\n",
" <td>31.0</td>\n",
" <td>63.0</td>\n",
" <td>14.0</td>\n",
" <td>19.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>1</td>\n",
" <td>Radunovic</td>\n",
" <td>Cagliari</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>4.0</td>\n",
" <td>0.34</td>\n",
" <td>0.0</td>\n",
" <td>16.0</td>\n",
" <td>41.0</td>\n",
" <td>53.0</td>\n",
" <td>14.0</td>\n",
" <td>28.0</td>\n",
" <td>49.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>1</td>\n",
" <td>Caprile</td>\n",
" <td>Empoli</td>\n",
" <td>Verona</td>\n",
" <td>1</td>\n",
" <td>5.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>0.4</td>\n",
" <td>0.11</td>\n",
" <td>-0.6</td>\n",
" <td>4.0</td>\n",
" <td>20.0</td>\n",
" <td>37.0</td>\n",
" <td>9.0</td>\n",
" <td>4.0</td>\n",
" <td>10.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>1</td>\n",
" <td>Terracciano</td>\n",
" <td>Fiorentina</td>\n",
" <td>Genoa</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>0.3</td>\n",
" <td>0.13</td>\n",
" <td>-0.7</td>\n",
" <td>3.0</td>\n",
" <td>5.0</td>\n",
" <td>47.0</td>\n",
" <td>3.0</td>\n",
" <td>4.0</td>\n",
" <td>11.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>1</td>\n",
" <td>Turati</td>\n",
" <td>Frosinone</td>\n",
" <td>Napoli</td>\n",
" <td>1</td>\n",
" <td>5.5</td>\n",
" <td>-3</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>2.5</td>\n",
" <td>...</td>\n",
" <td>3.6</td>\n",
" <td>0.26</td>\n",
" <td>0.6</td>\n",
" <td>5.0</td>\n",
" <td>19.0</td>\n",
" <td>61.0</td>\n",
" <td>17.0</td>\n",
" <td>10.0</td>\n",
" <td>25.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>1</td>\n",
" <td>Martinez Jo.</td>\n",
" <td>Genoa</td>\n",
" <td>Fiorentina</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-4</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>2.6</td>\n",
" <td>0.27</td>\n",
" <td>-2.4</td>\n",
" <td>27.0</td>\n",
" <td>55.0</td>\n",
" <td>94.0</td>\n",
" <td>9.0</td>\n",
" <td>14.0</td>\n",
" <td>64.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>1</td>\n",
" <td>Sommer</td>\n",
" <td>Inter</td>\n",
" <td>Monza</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>1.2</td>\n",
" <td>0.21</td>\n",
" <td>1.2</td>\n",
" <td>19.0</td>\n",
" <td>32.0</td>\n",
" <td>81.0</td>\n",
" <td>12.0</td>\n",
" <td>21.0</td>\n",
" <td>35.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>112</th>\n",
" <td>1</td>\n",
" <td>Szczesny</td>\n",
" <td>Juventus</td>\n",
" <td>Udinese</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>7.0</td>\n",
" <td>...</td>\n",
" <td>1.4</td>\n",
" <td>0.30</td>\n",
" <td>1.4</td>\n",
" <td>5.0</td>\n",
" <td>14.0</td>\n",
" <td>34.0</td>\n",
" <td>6.0</td>\n",
" <td>3.0</td>\n",
" <td>16.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>1</td>\n",
" <td>Provedel</td>\n",
" <td>Lazio</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>2.5</td>\n",
" <td>0.18</td>\n",
" <td>-1.5</td>\n",
" <td>6.0</td>\n",
" <td>16.0</td>\n",
" <td>89.0</td>\n",
" <td>11.0</td>\n",
" <td>11.0</td>\n",
" <td>39.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>142</th>\n",
" <td>1</td>\n",
" <td>Falcone</td>\n",
" <td>Lecce</td>\n",
" <td>Lazio</td>\n",
" <td>1</td>\n",
" <td>7.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.25</td>\n",
" <td>0.0</td>\n",
" <td>17.0</td>\n",
" <td>43.0</td>\n",
" <td>57.0</td>\n",
" <td>14.0</td>\n",
" <td>24.0</td>\n",
" <td>32.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>158</th>\n",
" <td>1</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Bologna</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.6</td>\n",
" <td>0.08</td>\n",
" <td>-1.4</td>\n",
" <td>20.0</td>\n",
" <td>57.0</td>\n",
" <td>170.0</td>\n",
" <td>23.0</td>\n",
" <td>20.0</td>\n",
" <td>43.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>173</th>\n",
" <td>1</td>\n",
" <td>Di Gregorio</td>\n",
" <td>Monza</td>\n",
" <td>Inter</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>4.2</td>\n",
" <td>0.25</td>\n",
" <td>-0.8</td>\n",
" <td>7.0</td>\n",
" <td>32.0</td>\n",
" <td>111.0</td>\n",
" <td>16.0</td>\n",
" <td>22.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>188</th>\n",
" <td>1</td>\n",
" <td>Meret</td>\n",
" <td>Napoli</td>\n",
" <td>Frosinone</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>2.2</td>\n",
" <td>0.31</td>\n",
" <td>-0.8</td>\n",
" <td>3.0</td>\n",
" <td>10.0</td>\n",
" <td>78.0</td>\n",
" <td>7.0</td>\n",
" <td>8.0</td>\n",
" <td>15.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>202</th>\n",
" <td>1</td>\n",
" <td>Rui Patricio</td>\n",
" <td>Roma</td>\n",
" <td>Salernitana</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.6</td>\n",
" <td>0.30</td>\n",
" <td>-2.4</td>\n",
" <td>6.0</td>\n",
" <td>13.0</td>\n",
" <td>47.0</td>\n",
" <td>6.0</td>\n",
" <td>12.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>217</th>\n",
" <td>1</td>\n",
" <td>Ochoa</td>\n",
" <td>Salernitana</td>\n",
" <td>Roma</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>3.7</td>\n",
" <td>0.19</td>\n",
" <td>-1.3</td>\n",
" <td>13.0</td>\n",
" <td>52.0</td>\n",
" <td>70.0</td>\n",
" <td>12.0</td>\n",
" <td>31.0</td>\n",
" <td>51.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>229</th>\n",
" <td>1</td>\n",
" <td>Consigli</td>\n",
" <td>Sassuolo</td>\n",
" <td>Atalanta</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.3</td>\n",
" <td>0.19</td>\n",
" <td>-1.7</td>\n",
" <td>11.0</td>\n",
" <td>46.0</td>\n",
" <td>95.0</td>\n",
" <td>10.0</td>\n",
" <td>34.0</td>\n",
" <td>46.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>242</th>\n",
" <td>1</td>\n",
" <td>Milinkovic-Savic V.</td>\n",
" <td>Torino</td>\n",
" <td>Cagliari</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>3.9</td>\n",
" <td>0.17</td>\n",
" <td>-0.1</td>\n",
" <td>15.0</td>\n",
" <td>47.0</td>\n",
" <td>85.0</td>\n",
" <td>19.0</td>\n",
" <td>29.0</td>\n",
" <td>23.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>257</th>\n",
" <td>1</td>\n",
" <td>Silvestri</td>\n",
" <td>Udinese</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>5.0</td>\n",
" <td>-3</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>3.8</td>\n",
" <td>0.31</td>\n",
" <td>-0.2</td>\n",
" <td>11.0</td>\n",
" <td>31.0</td>\n",
" <td>70.0</td>\n",
" <td>10.0</td>\n",
" <td>21.0</td>\n",
" <td>33.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>273</th>\n",
" <td>1</td>\n",
" <td>Montipo'</td>\n",
" <td>Verona</td>\n",
" <td>Empoli</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>4.3</td>\n",
" <td>0.20</td>\n",
" <td>0.3</td>\n",
" <td>27.0</td>\n",
" <td>72.0</td>\n",
" <td>84.0</td>\n",
" <td>7.0</td>\n",
" <td>28.0</td>\n",
" <td>44.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>287</th>\n",
" <td>2</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Frosinone</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>2.1</td>\n",
" <td>0.21</td>\n",
" <td>0.1</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>88.0</td>\n",
" <td>18.0</td>\n",
" <td>18.0</td>\n",
" <td>28.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>302</th>\n",
" <td>2</td>\n",
" <td>Skorupski</td>\n",
" <td>Bologna</td>\n",
" <td>Juventus</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.33</td>\n",
" <td>-1.0</td>\n",
" <td>11.0</td>\n",
" <td>31.0</td>\n",
" <td>63.0</td>\n",
" <td>14.0</td>\n",
" <td>19.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>316</th>\n",
" <td>2</td>\n",
" <td>Radunovic</td>\n",
" <td>Cagliari</td>\n",
" <td>Inter</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>4.0</td>\n",
" <td>0.34</td>\n",
" <td>0.0</td>\n",
" <td>16.0</td>\n",
" <td>41.0</td>\n",
" <td>53.0</td>\n",
" <td>14.0</td>\n",
" <td>28.0</td>\n",
" <td>49.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>330</th>\n",
" <td>2</td>\n",
" <td>Perisan</td>\n",
" <td>Empoli</td>\n",
" <td>Monza</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>0.7</td>\n",
" <td>0.14</td>\n",
" <td>-1.3</td>\n",
" <td>1.0</td>\n",
" <td>8.0</td>\n",
" <td>22.0</td>\n",
" <td>8.0</td>\n",
" <td>12.0</td>\n",
" <td>18.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>346</th>\n",
" <td>2</td>\n",
" <td>Christensen O.</td>\n",
" <td>Fiorentina</td>\n",
" <td>Lecce</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.2</td>\n",
" <td>0.18</td>\n",
" <td>-2.8</td>\n",
" <td>14.0</td>\n",
" <td>31.0</td>\n",
" <td>78.0</td>\n",
" <td>7.0</td>\n",
" <td>8.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>360</th>\n",
" <td>2</td>\n",
" <td>Cerofolini</td>\n",
" <td>Frosinone</td>\n",
" <td>Atalanta</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>1.0</td>\n",
" <td>0.16</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>18.0</td>\n",
" <td>27.0</td>\n",
" <td>2.0</td>\n",
" <td>5.0</td>\n",
" <td>18.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>373</th>\n",
" <td>2</td>\n",
" <td>Martinez Jo.</td>\n",
" <td>Genoa</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>2.6</td>\n",
" <td>0.27</td>\n",
" <td>-2.4</td>\n",
" <td>27.0</td>\n",
" <td>55.0</td>\n",
" <td>94.0</td>\n",
" <td>9.0</td>\n",
" <td>14.0</td>\n",
" <td>64.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>387</th>\n",
" <td>2</td>\n",
" <td>Sommer</td>\n",
" <td>Inter</td>\n",
" <td>Cagliari</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>1.2</td>\n",
" <td>0.21</td>\n",
" <td>1.2</td>\n",
" <td>19.0</td>\n",
" <td>32.0</td>\n",
" <td>81.0</td>\n",
" <td>12.0</td>\n",
" <td>21.0</td>\n",
" <td>35.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>402</th>\n",
" <td>2</td>\n",
" <td>Perin</td>\n",
" <td>Juventus</td>\n",
" <td>Bologna</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>1.2</td>\n",
" <td>0.30</td>\n",
" <td>0.2</td>\n",
" <td>5.0</td>\n",
" <td>13.0</td>\n",
" <td>42.0</td>\n",
" <td>9.0</td>\n",
" <td>11.0</td>\n",
" <td>26.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>416</th>\n",
" <td>2</td>\n",
" <td>Provedel</td>\n",
" <td>Lazio</td>\n",
" <td>Genoa</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>2.5</td>\n",
" <td>0.18</td>\n",
" <td>-1.5</td>\n",
" <td>6.0</td>\n",
" <td>16.0</td>\n",
" <td>89.0</td>\n",
" <td>11.0</td>\n",
" <td>11.0</td>\n",
" <td>39.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>430</th>\n",
" <td>2</td>\n",
" <td>Falcone</td>\n",
" <td>Lecce</td>\n",
" <td>Fiorentina</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.25</td>\n",
" <td>0.0</td>\n",
" <td>17.0</td>\n",
" <td>43.0</td>\n",
" <td>57.0</td>\n",
" <td>14.0</td>\n",
" <td>24.0</td>\n",
" <td>32.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>444</th>\n",
" <td>2</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Torino</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>0.6</td>\n",
" <td>0.08</td>\n",
" <td>-1.4</td>\n",
" <td>20.0</td>\n",
" <td>57.0</td>\n",
" <td>170.0</td>\n",
" <td>23.0</td>\n",
" <td>20.0</td>\n",
" <td>43.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>458</th>\n",
" <td>2</td>\n",
" <td>Di Gregorio</td>\n",
" <td>Monza</td>\n",
" <td>Empoli</td>\n",
" <td>1</td>\n",
" <td>7.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>7.5</td>\n",
" <td>...</td>\n",
" <td>4.2</td>\n",
" <td>0.25</td>\n",
" <td>-0.8</td>\n",
" <td>7.0</td>\n",
" <td>32.0</td>\n",
" <td>111.0</td>\n",
" <td>16.0</td>\n",
" <td>22.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>471</th>\n",
" <td>2</td>\n",
" <td>Meret</td>\n",
" <td>Napoli</td>\n",
" <td>Sassuolo</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>2.2</td>\n",
" <td>0.31</td>\n",
" <td>-0.8</td>\n",
" <td>3.0</td>\n",
" <td>10.0</td>\n",
" <td>78.0</td>\n",
" <td>7.0</td>\n",
" <td>8.0</td>\n",
" <td>15.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>483</th>\n",
" <td>2</td>\n",
" <td>Rui Patricio</td>\n",
" <td>Roma</td>\n",
" <td>Verona</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>3.6</td>\n",
" <td>0.30</td>\n",
" <td>-2.4</td>\n",
" <td>6.0</td>\n",
" <td>13.0</td>\n",
" <td>47.0</td>\n",
" <td>6.0</td>\n",
" <td>12.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>499</th>\n",
" <td>2</td>\n",
" <td>Ochoa</td>\n",
" <td>Salernitana</td>\n",
" <td>Udinese</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>3.7</td>\n",
" <td>0.19</td>\n",
" <td>-1.3</td>\n",
" <td>13.0</td>\n",
" <td>52.0</td>\n",
" <td>70.0</td>\n",
" <td>12.0</td>\n",
" <td>31.0</td>\n",
" <td>51.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>513</th>\n",
" <td>2</td>\n",
" <td>Consigli</td>\n",
" <td>Sassuolo</td>\n",
" <td>Napoli</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.3</td>\n",
" <td>0.19</td>\n",
" <td>-1.7</td>\n",
" <td>11.0</td>\n",
" <td>46.0</td>\n",
" <td>95.0</td>\n",
" <td>10.0</td>\n",
" <td>34.0</td>\n",
" <td>46.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>529</th>\n",
" <td>2</td>\n",
" <td>Milinkovic-Savic V.</td>\n",
" <td>Torino</td>\n",
" <td>Milan</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>-4</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>1.0</td>\n",
" <td>...</td>\n",
" <td>3.9</td>\n",
" <td>0.17</td>\n",
" <td>-0.1</td>\n",
" <td>15.0</td>\n",
" <td>47.0</td>\n",
" <td>85.0</td>\n",
" <td>19.0</td>\n",
" <td>29.0</td>\n",
" <td>23.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>544</th>\n",
" <td>2</td>\n",
" <td>Silvestri</td>\n",
" <td>Udinese</td>\n",
" <td>Salernitana</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>3.8</td>\n",
" <td>0.31</td>\n",
" <td>-0.2</td>\n",
" <td>11.0</td>\n",
" <td>31.0</td>\n",
" <td>70.0</td>\n",
" <td>10.0</td>\n",
" <td>21.0</td>\n",
" <td>33.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>557</th>\n",
" <td>2</td>\n",
" <td>Montipo'</td>\n",
" <td>Verona</td>\n",
" <td>Roma</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>4.3</td>\n",
" <td>0.20</td>\n",
" <td>0.3</td>\n",
" <td>27.0</td>\n",
" <td>72.0</td>\n",
" <td>84.0</td>\n",
" <td>7.0</td>\n",
" <td>28.0</td>\n",
" <td>44.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>571</th>\n",
" <td>3</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Monza</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>2.1</td>\n",
" <td>0.21</td>\n",
" <td>0.1</td>\n",
" <td>11.0</td>\n",
" <td>34.0</td>\n",
" <td>88.0</td>\n",
" <td>18.0</td>\n",
" <td>18.0</td>\n",
" <td>28.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>584</th>\n",
" <td>3</td>\n",
" <td>Skorupski</td>\n",
" <td>Bologna</td>\n",
" <td>Cagliari</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.33</td>\n",
" <td>-1.0</td>\n",
" <td>11.0</td>\n",
" <td>31.0</td>\n",
" <td>63.0</td>\n",
" <td>14.0</td>\n",
" <td>19.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>598</th>\n",
" <td>3</td>\n",
" <td>Radunovic</td>\n",
" <td>Cagliari</td>\n",
" <td>Bologna</td>\n",
" <td>0</td>\n",
" <td>4.5</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>2.5</td>\n",
" <td>...</td>\n",
" <td>4.0</td>\n",
" <td>0.34</td>\n",
" <td>0.0</td>\n",
" <td>16.0</td>\n",
" <td>41.0</td>\n",
" <td>53.0</td>\n",
" <td>14.0</td>\n",
" <td>28.0</td>\n",
" <td>49.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>614</th>\n",
" <td>3</td>\n",
" <td>Berisha</td>\n",
" <td>Empoli</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>1.8</td>\n",
" <td>0.18</td>\n",
" <td>-0.2</td>\n",
" <td>2.0</td>\n",
" <td>12.0</td>\n",
" <td>32.0</td>\n",
" <td>8.0</td>\n",
" <td>7.0</td>\n",
" <td>17.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>629</th>\n",
" <td>3</td>\n",
" <td>Christensen O.</td>\n",
" <td>Fiorentina</td>\n",
" <td>Inter</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>-4</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>1.5</td>\n",
" <td>...</td>\n",
" <td>3.2</td>\n",
" <td>0.18</td>\n",
" <td>-2.8</td>\n",
" <td>14.0</td>\n",
" <td>31.0</td>\n",
" <td>78.0</td>\n",
" <td>7.0</td>\n",
" <td>8.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>645</th>\n",
" <td>3</td>\n",
" <td>Turati</td>\n",
" <td>Frosinone</td>\n",
" <td>Udinese</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>3.6</td>\n",
" <td>0.26</td>\n",
" <td>0.6</td>\n",
" <td>5.0</td>\n",
" <td>19.0</td>\n",
" <td>61.0</td>\n",
" <td>17.0</td>\n",
" <td>10.0</td>\n",
" <td>25.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>657</th>\n",
" <td>3</td>\n",
" <td>Martinez Jo.</td>\n",
" <td>Genoa</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>2.6</td>\n",
" <td>0.27</td>\n",
" <td>-2.4</td>\n",
" <td>27.0</td>\n",
" <td>55.0</td>\n",
" <td>94.0</td>\n",
" <td>9.0</td>\n",
" <td>14.0</td>\n",
" <td>64.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>672</th>\n",
" <td>3</td>\n",
" <td>Sommer</td>\n",
" <td>Inter</td>\n",
" <td>Fiorentina</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>1.2</td>\n",
" <td>0.21</td>\n",
" <td>1.2</td>\n",
" <td>19.0</td>\n",
" <td>32.0</td>\n",
" <td>81.0</td>\n",
" <td>12.0</td>\n",
" <td>21.0</td>\n",
" <td>35.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>687</th>\n",
" <td>3</td>\n",
" <td>Perin</td>\n",
" <td>Juventus</td>\n",
" <td>Empoli</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>1.2</td>\n",
" <td>0.30</td>\n",
" <td>0.2</td>\n",
" <td>5.0</td>\n",
" <td>13.0</td>\n",
" <td>42.0</td>\n",
" <td>9.0</td>\n",
" <td>11.0</td>\n",
" <td>26.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>701</th>\n",
" <td>3</td>\n",
" <td>Provedel</td>\n",
" <td>Lazio</td>\n",
" <td>Napoli</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>2.5</td>\n",
" <td>0.18</td>\n",
" <td>-1.5</td>\n",
" <td>6.0</td>\n",
" <td>16.0</td>\n",
" <td>89.0</td>\n",
" <td>11.0</td>\n",
" <td>11.0</td>\n",
" <td>39.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>715</th>\n",
" <td>3</td>\n",
" <td>Falcone</td>\n",
" <td>Lecce</td>\n",
" <td>Salernitana</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.5</td>\n",
" <td>...</td>\n",
" <td>3.0</td>\n",
" <td>0.25</td>\n",
" <td>0.0</td>\n",
" <td>17.0</td>\n",
" <td>43.0</td>\n",
" <td>57.0</td>\n",
" <td>14.0</td>\n",
" <td>24.0</td>\n",
" <td>32.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>731</th>\n",
" <td>3</td>\n",
" <td>Maignan</td>\n",
" <td>Milan</td>\n",
" <td>Roma</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>0.6</td>\n",
" <td>0.08</td>\n",
" <td>-1.4</td>\n",
" <td>20.0</td>\n",
" <td>57.0</td>\n",
" <td>170.0</td>\n",
" <td>23.0</td>\n",
" <td>20.0</td>\n",
" <td>43.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>746</th>\n",
" <td>3</td>\n",
" <td>Di Gregorio</td>\n",
" <td>Monza</td>\n",
" <td>Atalanta</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>-3</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>4.2</td>\n",
" <td>0.25</td>\n",
" <td>-0.8</td>\n",
" <td>7.0</td>\n",
" <td>32.0</td>\n",
" <td>111.0</td>\n",
" <td>16.0</td>\n",
" <td>22.0</td>\n",
" <td>45.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>762</th>\n",
" <td>3</td>\n",
" <td>Meret</td>\n",
" <td>Napoli</td>\n",
" <td>Lazio</td>\n",
" <td>1</td>\n",
" <td>5.5</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>3.5</td>\n",
" <td>...</td>\n",
" <td>2.2</td>\n",
" <td>0.31</td>\n",
" <td>-0.8</td>\n",
" <td>3.0</td>\n",
" <td>10.0</td>\n",
" <td>78.0</td>\n",
" <td>7.0</td>\n",
" <td>8.0</td>\n",
" <td>15.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>776</th>\n",
" <td>3</td>\n",
" <td>Rui Patricio</td>\n",
" <td>Roma</td>\n",
" <td>Milan</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.0</td>\n",
" <td>...</td>\n",
" <td>3.6</td>\n",
" <td>0.30</td>\n",
" <td>-2.4</td>\n",
" <td>6.0</td>\n",
" <td>13.0</td>\n",
" <td>47.0</td>\n",
" <td>6.0</td>\n",
" <td>12.0</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>791</th>\n",
" <td>3</td>\n",
" <td>Ochoa</td>\n",
" <td>Salernitana</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>3.7</td>\n",
" <td>0.19</td>\n",
" <td>-1.3</td>\n",
" <td>13.0</td>\n",
" <td>52.0</td>\n",
" <td>70.0</td>\n",
" <td>12.0</td>\n",
" <td>31.0</td>\n",
" <td>51.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>806</th>\n",
" <td>3</td>\n",
" <td>Consigli</td>\n",
" <td>Sassuolo</td>\n",
" <td>Verona</td>\n",
" <td>1</td>\n",
" <td>5.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>3.3</td>\n",
" <td>0.19</td>\n",
" <td>-1.7</td>\n",
" <td>11.0</td>\n",
" <td>46.0</td>\n",
" <td>95.0</td>\n",
" <td>10.0</td>\n",
" <td>34.0</td>\n",
" <td>46.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>821</th>\n",
" <td>3</td>\n",
" <td>Milinkovic-Savic V.</td>\n",
" <td>Torino</td>\n",
" <td>Genoa</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>3.9</td>\n",
" <td>0.17</td>\n",
" <td>-0.1</td>\n",
" <td>15.0</td>\n",
" <td>47.0</td>\n",
" <td>85.0</td>\n",
" <td>19.0</td>\n",
" <td>29.0</td>\n",
" <td>23.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>836</th>\n",
" <td>3</td>\n",
" <td>Silvestri</td>\n",
" <td>Udinese</td>\n",
" <td>Frosinone</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>3.8</td>\n",
" <td>0.31</td>\n",
" <td>-0.2</td>\n",
" <td>11.0</td>\n",
" <td>31.0</td>\n",
" <td>70.0</td>\n",
" <td>10.0</td>\n",
" <td>21.0</td>\n",
" <td>33.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>850</th>\n",
" <td>3</td>\n",
" <td>Montipo'</td>\n",
" <td>Verona</td>\n",
" <td>Sassuolo</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-3</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>3.5</td>\n",
" <td>...</td>\n",
" <td>4.3</td>\n",
" <td>0.20</td>\n",
" <td>0.3</td>\n",
" <td>27.0</td>\n",
" <td>72.0</td>\n",
" <td>84.0</td>\n",
" <td>7.0</td>\n",
" <td>28.0</td>\n",
" <td>44.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>60 rows × 102 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote \\\n",
"0 1 Musso Atalanta Sassuolo 0 6.5 \n",
"16 1 Skorupski Bologna Milan 1 6.0 \n",
"29 1 Radunovic Cagliari Torino 0 6.5 \n",
"44 1 Caprile Empoli Verona 1 5.0 \n",
"57 1 Terracciano Fiorentina Genoa 0 6.0 \n",
"69 1 Turati Frosinone Napoli 1 5.5 \n",
"84 1 Martinez Jo. Genoa Fiorentina 1 6.0 \n",
"98 1 Sommer Inter Monza 1 6.0 \n",
"112 1 Szczesny Juventus Udinese 0 7.0 \n",
"127 1 Provedel Lazio Lecce 0 6.0 \n",
"142 1 Falcone Lecce Lazio 1 7.0 \n",
"158 1 Maignan Milan Bologna 0 6.0 \n",
"173 1 Di Gregorio Monza Inter 0 6.0 \n",
"188 1 Meret Napoli Frosinone 0 6.0 \n",
"202 1 Rui Patricio Roma Salernitana 1 6.0 \n",
"217 1 Ochoa Salernitana Roma 0 6.5 \n",
"229 1 Consigli Sassuolo Atalanta 1 6.0 \n",
"242 1 Milinkovic-Savic V. Torino Cagliari 1 6.5 \n",
"257 1 Silvestri Udinese Juventus 1 5.0 \n",
"273 1 Montipo' Verona Empoli 0 6.5 \n",
"287 2 Musso Atalanta Frosinone 0 6.0 \n",
"302 2 Skorupski Bologna Juventus 0 6.5 \n",
"316 2 Radunovic Cagliari Inter 1 6.0 \n",
"330 2 Perisan Empoli Monza 0 5.0 \n",
"346 2 Christensen O. Fiorentina Lecce 1 6.0 \n",
"360 2 Cerofolini Frosinone Atalanta 1 6.5 \n",
"373 2 Martinez Jo. Genoa Lazio 0 6.0 \n",
"387 2 Sommer Inter Cagliari 0 6.0 \n",
"402 2 Perin Juventus Bologna 1 6.0 \n",
"416 2 Provedel Lazio Genoa 1 6.0 \n",
"430 2 Falcone Lecce Fiorentina 0 6.0 \n",
"444 2 Maignan Milan Torino 1 6.0 \n",
"458 2 Di Gregorio Monza Empoli 1 7.5 \n",
"471 2 Meret Napoli Sassuolo 1 6.0 \n",
"483 2 Rui Patricio Roma Verona 0 5.0 \n",
"499 2 Ochoa Salernitana Udinese 1 6.5 \n",
"513 2 Consigli Sassuolo Napoli 0 6.0 \n",
"529 2 Milinkovic-Savic V. Torino Milan 0 5.5 \n",
"544 2 Silvestri Udinese Salernitana 0 5.5 \n",
"557 2 Montipo' Verona Roma 1 6.0 \n",
"571 3 Musso Atalanta Monza 1 6.5 \n",
"584 3 Skorupski Bologna Cagliari 1 6.0 \n",
"598 3 Radunovic Cagliari Bologna 0 4.5 \n",
"614 3 Berisha Empoli Juventus 1 6.5 \n",
"629 3 Christensen O. Fiorentina Inter 0 5.5 \n",
"645 3 Turati Frosinone Udinese 0 6.0 \n",
"657 3 Martinez Jo. Genoa Torino 0 6.0 \n",
"672 3 Sommer Inter Fiorentina 1 6.0 \n",
"687 3 Perin Juventus Empoli 0 6.0 \n",
"701 3 Provedel Lazio Napoli 0 6.5 \n",
"715 3 Falcone Lecce Salernitana 1 6.5 \n",
"731 3 Maignan Milan Roma 0 6.0 \n",
"746 3 Di Gregorio Monza Atalanta 0 6.0 \n",
"762 3 Meret Napoli Lazio 1 5.5 \n",
"776 3 Rui Patricio Roma Milan 1 6.0 \n",
"791 3 Ochoa Salernitana Lecce 0 6.5 \n",
"806 3 Consigli Sassuolo Verona 1 5.5 \n",
"821 3 Milinkovic-Savic V. Torino Genoa 1 6.0 \n",
"836 3 Silvestri Udinese Frosinone 1 6.0 \n",
"850 3 Montipo' Verona Sassuolo 0 6.5 \n",
"\n",
" goals assists cards_malus fantavote ... gk_psxg \\\n",
"0 0 0 0.0 6.5 ... 2.1 \n",
"16 -2 0 0.0 4.0 ... 3.0 \n",
"29 0 0 0.0 6.5 ... 4.0 \n",
"44 -1 0 0.0 4.0 ... 0.4 \n",
"57 -1 0 0.0 5.0 ... 0.3 \n",
"69 -3 0 0.0 2.5 ... 3.6 \n",
"84 -4 0 0.0 2.0 ... 2.6 \n",
"98 0 0 0.0 6.0 ... 1.2 \n",
"112 0 0 0.0 7.0 ... 1.4 \n",
"127 -2 0 0.0 4.0 ... 2.5 \n",
"142 -1 0 0.0 6.0 ... 3.0 \n",
"158 0 0 0.0 6.0 ... 0.6 \n",
"173 -2 0 0.0 4.0 ... 4.2 \n",
"188 -1 0 0.0 5.0 ... 2.2 \n",
"202 -2 0 0.0 4.0 ... 3.6 \n",
"217 -2 0 0.0 4.5 ... 3.7 \n",
"229 -2 0 0.0 4.0 ... 3.3 \n",
"242 0 0 0.0 6.5 ... 3.9 \n",
"257 -3 0 0.0 2.0 ... 3.8 \n",
"273 0 0 0.0 6.5 ... 4.3 \n",
"287 -2 0 0.0 4.0 ... 2.1 \n",
"302 -1 0 0.0 5.5 ... 3.0 \n",
"316 -2 0 0.0 4.0 ... 4.0 \n",
"330 -2 0 0.0 3.0 ... 0.7 \n",
"346 -2 0 0.0 4.0 ... 3.2 \n",
"360 -1 0 0.0 5.5 ... 1.0 \n",
"373 0 0 0.0 6.0 ... 2.6 \n",
"387 0 0 0.0 6.0 ... 1.2 \n",
"402 -1 0 0.0 5.0 ... 1.2 \n",
"416 -1 0 0.0 5.0 ... 2.5 \n",
"430 -2 0 0.0 4.0 ... 3.0 \n",
"444 -1 0 0.0 5.0 ... 0.6 \n",
"458 0 0 0.0 7.5 ... 4.2 \n",
"471 0 0 0.0 6.0 ... 2.2 \n",
"483 -2 0 0.0 3.0 ... 3.6 \n",
"499 -1 0 0.0 5.5 ... 3.7 \n",
"513 -2 0 0.0 4.0 ... 3.3 \n",
"529 -4 0 0.5 1.0 ... 3.9 \n",
"544 -1 0 0.0 4.5 ... 3.8 \n",
"557 -1 0 0.0 5.0 ... 4.3 \n",
"571 0 0 0.0 6.5 ... 2.1 \n",
"584 -1 0 0.0 5.0 ... 3.0 \n",
"598 -2 0 0.0 2.5 ... 4.0 \n",
"614 -2 0 0.0 4.5 ... 1.8 \n",
"629 -4 0 0.0 1.5 ... 3.2 \n",
"645 0 0 0.0 6.0 ... 3.6 \n",
"657 -1 0 0.0 5.0 ... 2.6 \n",
"672 0 0 0.0 6.0 ... 1.2 \n",
"687 0 0 0.0 6.0 ... 1.2 \n",
"701 -1 0 0.0 5.5 ... 2.5 \n",
"715 0 0 0.0 6.5 ... 3.0 \n",
"731 -1 0 0.0 5.0 ... 0.6 \n",
"746 -3 0 0.0 3.0 ... 4.2 \n",
"762 -2 0 0.0 3.5 ... 2.2 \n",
"776 -2 0 0.0 4.0 ... 3.6 \n",
"791 -2 0 0.0 4.5 ... 3.7 \n",
"806 -1 0 0.0 4.5 ... 3.3 \n",
"821 0 0 0.0 6.0 ... 3.9 \n",
"836 0 0 0.0 6.0 ... 3.8 \n",
"850 -3 0 0.0 3.5 ... 4.3 \n",
"\n",
" gk_psnpxg_per_shot_on_target_against gk_psxg_net \\\n",
"0 0.21 0.1 \n",
"16 0.33 -1.0 \n",
"29 0.34 0.0 \n",
"44 0.11 -0.6 \n",
"57 0.13 -0.7 \n",
"69 0.26 0.6 \n",
"84 0.27 -2.4 \n",
"98 0.21 1.2 \n",
"112 0.30 1.4 \n",
"127 0.18 -1.5 \n",
"142 0.25 0.0 \n",
"158 0.08 -1.4 \n",
"173 0.25 -0.8 \n",
"188 0.31 -0.8 \n",
"202 0.30 -2.4 \n",
"217 0.19 -1.3 \n",
"229 0.19 -1.7 \n",
"242 0.17 -0.1 \n",
"257 0.31 -0.2 \n",
"273 0.20 0.3 \n",
"287 0.21 0.1 \n",
"302 0.33 -1.0 \n",
"316 0.34 0.0 \n",
"330 0.14 -1.3 \n",
"346 0.18 -2.8 \n",
"360 0.16 0.0 \n",
"373 0.27 -2.4 \n",
"387 0.21 1.2 \n",
"402 0.30 0.2 \n",
"416 0.18 -1.5 \n",
"430 0.25 0.0 \n",
"444 0.08 -1.4 \n",
"458 0.25 -0.8 \n",
"471 0.31 -0.8 \n",
"483 0.30 -2.4 \n",
"499 0.19 -1.3 \n",
"513 0.19 -1.7 \n",
"529 0.17 -0.1 \n",
"544 0.31 -0.2 \n",
"557 0.20 0.3 \n",
"571 0.21 0.1 \n",
"584 0.33 -1.0 \n",
"598 0.34 0.0 \n",
"614 0.18 -0.2 \n",
"629 0.18 -2.8 \n",
"645 0.26 0.6 \n",
"657 0.27 -2.4 \n",
"672 0.21 1.2 \n",
"687 0.30 0.2 \n",
"701 0.18 -1.5 \n",
"715 0.25 0.0 \n",
"731 0.08 -1.4 \n",
"746 0.25 -0.8 \n",
"762 0.31 -0.8 \n",
"776 0.30 -2.4 \n",
"791 0.19 -1.3 \n",
"806 0.19 -1.7 \n",
"821 0.17 -0.1 \n",
"836 0.31 -0.2 \n",
"850 0.20 0.3 \n",
"\n",
" gk_passes_completed_launched gk_passes_launched gk_passes \\\n",
"0 11.0 34.0 88.0 \n",
"16 11.0 31.0 63.0 \n",
"29 16.0 41.0 53.0 \n",
"44 4.0 20.0 37.0 \n",
"57 3.0 5.0 47.0 \n",
"69 5.0 19.0 61.0 \n",
"84 27.0 55.0 94.0 \n",
"98 19.0 32.0 81.0 \n",
"112 5.0 14.0 34.0 \n",
"127 6.0 16.0 89.0 \n",
"142 17.0 43.0 57.0 \n",
"158 20.0 57.0 170.0 \n",
"173 7.0 32.0 111.0 \n",
"188 3.0 10.0 78.0 \n",
"202 6.0 13.0 47.0 \n",
"217 13.0 52.0 70.0 \n",
"229 11.0 46.0 95.0 \n",
"242 15.0 47.0 85.0 \n",
"257 11.0 31.0 70.0 \n",
"273 27.0 72.0 84.0 \n",
"287 11.0 34.0 88.0 \n",
"302 11.0 31.0 63.0 \n",
"316 16.0 41.0 53.0 \n",
"330 1.0 8.0 22.0 \n",
"346 14.0 31.0 78.0 \n",
"360 2.0 18.0 27.0 \n",
"373 27.0 55.0 94.0 \n",
"387 19.0 32.0 81.0 \n",
"402 5.0 13.0 42.0 \n",
"416 6.0 16.0 89.0 \n",
"430 17.0 43.0 57.0 \n",
"444 20.0 57.0 170.0 \n",
"458 7.0 32.0 111.0 \n",
"471 3.0 10.0 78.0 \n",
"483 6.0 13.0 47.0 \n",
"499 13.0 52.0 70.0 \n",
"513 11.0 46.0 95.0 \n",
"529 15.0 47.0 85.0 \n",
"544 11.0 31.0 70.0 \n",
"557 27.0 72.0 84.0 \n",
"571 11.0 34.0 88.0 \n",
"584 11.0 31.0 63.0 \n",
"598 16.0 41.0 53.0 \n",
"614 2.0 12.0 32.0 \n",
"629 14.0 31.0 78.0 \n",
"645 5.0 19.0 61.0 \n",
"657 27.0 55.0 94.0 \n",
"672 19.0 32.0 81.0 \n",
"687 5.0 13.0 42.0 \n",
"701 6.0 16.0 89.0 \n",
"715 17.0 43.0 57.0 \n",
"731 20.0 57.0 170.0 \n",
"746 7.0 32.0 111.0 \n",
"762 3.0 10.0 78.0 \n",
"776 6.0 13.0 47.0 \n",
"791 13.0 52.0 70.0 \n",
"806 11.0 46.0 95.0 \n",
"821 15.0 47.0 85.0 \n",
"836 11.0 31.0 70.0 \n",
"850 27.0 72.0 84.0 \n",
"\n",
" gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n",
"0 18.0 18.0 28.0 2.0 \n",
"16 14.0 19.0 45.0 2.0 \n",
"29 14.0 28.0 49.0 2.0 \n",
"44 9.0 4.0 10.0 2.0 \n",
"57 3.0 4.0 11.0 0.0 \n",
"69 17.0 10.0 25.0 2.0 \n",
"84 9.0 14.0 64.0 8.0 \n",
"98 12.0 21.0 35.0 1.0 \n",
"112 6.0 3.0 16.0 1.0 \n",
"127 11.0 11.0 39.0 2.0 \n",
"142 14.0 24.0 32.0 2.0 \n",
"158 23.0 20.0 43.0 12.0 \n",
"173 16.0 22.0 45.0 2.0 \n",
"188 7.0 8.0 15.0 1.0 \n",
"202 6.0 12.0 15.0 0.0 \n",
"217 12.0 31.0 51.0 3.0 \n",
"229 10.0 34.0 46.0 2.0 \n",
"242 19.0 29.0 23.0 0.0 \n",
"257 10.0 21.0 33.0 0.0 \n",
"273 7.0 28.0 44.0 1.0 \n",
"287 18.0 18.0 28.0 2.0 \n",
"302 14.0 19.0 45.0 2.0 \n",
"316 14.0 28.0 49.0 2.0 \n",
"330 8.0 12.0 18.0 0.0 \n",
"346 7.0 8.0 15.0 0.0 \n",
"360 2.0 5.0 18.0 0.0 \n",
"373 9.0 14.0 64.0 8.0 \n",
"387 12.0 21.0 35.0 1.0 \n",
"402 9.0 11.0 26.0 2.0 \n",
"416 11.0 11.0 39.0 2.0 \n",
"430 14.0 24.0 32.0 2.0 \n",
"444 23.0 20.0 43.0 12.0 \n",
"458 16.0 22.0 45.0 2.0 \n",
"471 7.0 8.0 15.0 1.0 \n",
"483 6.0 12.0 15.0 0.0 \n",
"499 12.0 31.0 51.0 3.0 \n",
"513 10.0 34.0 46.0 2.0 \n",
"529 19.0 29.0 23.0 0.0 \n",
"544 10.0 21.0 33.0 0.0 \n",
"557 7.0 28.0 44.0 1.0 \n",
"571 18.0 18.0 28.0 2.0 \n",
"584 14.0 19.0 45.0 2.0 \n",
"598 14.0 28.0 49.0 2.0 \n",
"614 8.0 7.0 17.0 0.0 \n",
"629 7.0 8.0 15.0 0.0 \n",
"645 17.0 10.0 25.0 2.0 \n",
"657 9.0 14.0 64.0 8.0 \n",
"672 12.0 21.0 35.0 1.0 \n",
"687 9.0 11.0 26.0 2.0 \n",
"701 11.0 11.0 39.0 2.0 \n",
"715 14.0 24.0 32.0 2.0 \n",
"731 23.0 20.0 43.0 12.0 \n",
"746 16.0 22.0 45.0 2.0 \n",
"762 7.0 8.0 15.0 1.0 \n",
"776 6.0 12.0 15.0 0.0 \n",
"791 12.0 31.0 51.0 3.0 \n",
"806 10.0 34.0 46.0 2.0 \n",
"821 19.0 29.0 23.0 0.0 \n",
"836 10.0 21.0 33.0 0.0 \n",
"850 7.0 28.0 44.0 1.0 \n",
"\n",
"[60 rows x 102 columns]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db_gk"
]
},
{
"cell_type": "markdown",
"id": "8dbb7476",
"metadata": {},
"source": [
"Save goalkeepers players database to file."
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "d8b8b6da",
"metadata": {},
"outputs": [],
"source": [
"db_gk.to_excel('mid_outputs/database_entries_gk.xlsx')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "54519b24",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 - matchday\n",
"1 - player\n",
"2 - team\n",
"3 - oppteam\n",
"4 - home\n",
"5 - vote\n",
"6 - goals\n",
"7 - assists\n",
"8 - cards_malus\n",
"9 - fantavote\n",
"10 - gk_games\n",
"11 - gk_games_starts\n",
"12 - gk_minutes\n",
"13 - gk_goals_against_per90\n",
"14 - gk_save_pct\n",
"15 - gk_clean_sheets_pct\n",
"16 - gk_psxg_net_per90\n",
"17 - gk_passes_pct_launched\n",
"18 - gk_pct_passes_launched\n",
"19 - gk_passes_length_avg\n",
"20 - gk_pct_goal_kicks_launched\n",
"21 - gk_goal_kick_length_avg\n",
"22 - gk_crosses_stopped_pct\n",
"23 - gk_def_actions_outside_pen_area_per90\n",
"24 - gk_avg_distance_def_actions\n",
"25 - team_possession\n",
"26 - team_goals_assists_per90\n",
"27 - team_goals_pens_per90\n",
"28 - team_goals_assists_pens_per90\n",
"29 - team_xg_per90\n",
"30 - team_gk_goals_against_per90\n",
"31 - team_gk_save_pct\n",
"32 - team_gk_clean_sheets_pct\n",
"33 - team_passes_pct\n",
"34 - team_passes_pct_medium\n",
"35 - team_passes_pct_long\n",
"36 - team_sca_per90\n",
"37 - team_gca_per90\n",
"38 - team_aerials_won_pct\n",
"39 - vs_team_possession\n",
"40 - vs_team_goals_per90\n",
"41 - vs_team_assists_per90\n",
"42 - vs_team_xg_per90\n",
"43 - vs_team_gk_save_pct\n",
"44 - vs_team_gk_clean_sheets_pct\n",
"45 - vs_team_gk_pct_passes_launched\n",
"46 - vs_team_gk_crosses_stopped_pct\n",
"47 - vs_team_shots_on_target_per90\n",
"48 - vs_team_passes_pct\n",
"49 - vs_team_passes_pct_short\n",
"50 - vs_team_passes_pct_medium\n",
"51 - vs_team_passes_pct_long\n",
"52 - vs_team_sca_per90\n",
"53 - vs_team_gca_per90\n",
"54 - vs_team_aerials_won_pct\n",
"55 - opp_team_possession\n",
"56 - opp_team_goals_assists_per90\n",
"57 - opp_team_goals_pens_per90\n",
"58 - opp_team_goals_assists_pens_per90\n",
"59 - opp_team_xg_per90\n",
"60 - opp_team_gk_goals_against_per90\n",
"61 - opp_team_gk_save_pct\n",
"62 - opp_team_gk_clean_sheets_pct\n",
"63 - opp_team_passes_pct\n",
"64 - opp_team_passes_pct_medium\n",
"65 - opp_team_passes_pct_long\n",
"66 - opp_team_sca_per90\n",
"67 - opp_team_gca_per90\n",
"68 - opp_team_aerials_won_pct\n",
"69 - opp_vs_team_possession\n",
"70 - opp_vs_team_goals_per90\n",
"71 - opp_vs_team_assists_per90\n",
"72 - opp_vs_team_xg_per90\n",
"73 - opp_vs_team_gk_save_pct\n",
"74 - opp_vs_team_gk_clean_sheets_pct\n",
"75 - opp_vs_team_gk_pct_passes_launched\n",
"76 - opp_vs_team_gk_crosses_stopped_pct\n",
"77 - opp_vs_team_shots_on_target_per90\n",
"78 - opp_vs_team_passes_pct\n",
"79 - opp_vs_team_passes_pct_short\n",
"80 - opp_vs_team_passes_pct_medium\n",
"81 - opp_vs_team_passes_pct_long\n",
"82 - opp_vs_team_sca_per90\n",
"83 - opp_vs_team_gca_per90\n",
"84 - opp_vs_team_aerials_won_pct\n",
"85 - vote_avg\n",
"86 - vote_std\n",
"87 - gk_shots_on_target_against\n",
"88 - gk_saves\n",
"89 - gk_free_kick_goals_against\n",
"90 - gk_corner_kick_goals_against\n",
"91 - gk_own_goals_against\n",
"92 - gk_psxg\n",
"93 - gk_psnpxg_per_shot_on_target_against\n",
"94 - gk_psxg_net\n",
"95 - gk_passes_completed_launched\n",
"96 - gk_passes_launched\n",
"97 - gk_passes\n",
"98 - gk_passes_throws\n",
"99 - gk_goal_kicks\n",
"100 - gk_crosses\n",
"101 - gk_crosses_stopped\n"
]
}
],
"source": [
"for i in range(db_gk.columns.shape[0]):\n",
" print(str(i) + \" - \" + str(db_gk.columns[i]))"
]
}
],
"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
}