8f7df5dd7f
- updated code for new FBRef stats; - updated players list; - players who changed team handled slightly better
3372 lines
115 KiB
Plaintext
3372 lines
115 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b22c6ee8",
|
||
"metadata": {},
|
||
"source": [
|
||
"player_match_dataset_creation code for past seasons\n",
|
||
"\n",
|
||
"Select the season in season variable, and repeat the code if needed"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "8a74364d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"season = '2021'"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "8a6867a5",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_5084\\813865162.py:21: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" team_data['team_idx'][i] = team_data['team_idx'][i].split(' ')[-1]\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>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>30.0</td>\n",
|
||
" <td>54.6</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>90.0</td>\n",
|
||
" <td>65.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>504.0</td>\n",
|
||
" <td>548.0</td>\n",
|
||
" <td>40.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>2251.0</td>\n",
|
||
" <td>506.0</td>\n",
|
||
" <td>633.0</td>\n",
|
||
" <td>44.4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Benevento</th>\n",
|
||
" <td>Benevento</td>\n",
|
||
" <td>29.0</td>\n",
|
||
" <td>42.6</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>40.0</td>\n",
|
||
" <td>26.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>621.0</td>\n",
|
||
" <td>463.0</td>\n",
|
||
" <td>94.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1854.0</td>\n",
|
||
" <td>615.0</td>\n",
|
||
" <td>496.0</td>\n",
|
||
" <td>55.4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Bologna</th>\n",
|
||
" <td>Bologna</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>50.8</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>49.0</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>495.0</td>\n",
|
||
" <td>495.0</td>\n",
|
||
" <td>71.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>2024.0</td>\n",
|
||
" <td>594.0</td>\n",
|
||
" <td>564.0</td>\n",
|
||
" <td>51.3</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Cagliari</th>\n",
|
||
" <td>Cagliari</td>\n",
|
||
" <td>32.0</td>\n",
|
||
" <td>44.8</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>43.0</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>507.0</td>\n",
|
||
" <td>496.0</td>\n",
|
||
" <td>83.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1920.0</td>\n",
|
||
" <td>602.0</td>\n",
|
||
" <td>637.0</td>\n",
|
||
" <td>48.6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Crotone</th>\n",
|
||
" <td>Crotone</td>\n",
|
||
" <td>31.0</td>\n",
|
||
" <td>46.3</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>44.0</td>\n",
|
||
" <td>27.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>524.0</td>\n",
|
||
" <td>499.0</td>\n",
|
||
" <td>103.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>2130.0</td>\n",
|
||
" <td>534.0</td>\n",
|
||
" <td>472.0</td>\n",
|
||
" <td>53.1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Fiorentina</th>\n",
|
||
" <td>Fiorentina</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" <td>46.3</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>44.0</td>\n",
|
||
" <td>31.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>545.0</td>\n",
|
||
" <td>500.0</td>\n",
|
||
" <td>94.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1915.0</td>\n",
|
||
" <td>544.0</td>\n",
|
||
" <td>538.0</td>\n",
|
||
" <td>50.3</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Genoa</th>\n",
|
||
" <td>Genoa</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>44.8</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>46.0</td>\n",
|
||
" <td>32.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>502.0</td>\n",
|
||
" <td>501.0</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>2197.0</td>\n",
|
||
" <td>643.0</td>\n",
|
||
" <td>505.0</td>\n",
|
||
" <td>56.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Verona</th>\n",
|
||
" <td>Hellas Verona</td>\n",
|
||
" <td>32.0</td>\n",
|
||
" <td>49.8</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>557.0</td>\n",
|
||
" <td>593.0</td>\n",
|
||
" <td>42.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>2102.0</td>\n",
|
||
" <td>832.0</td>\n",
|
||
" <td>749.0</td>\n",
|
||
" <td>52.6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Inter</th>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>25.0</td>\n",
|
||
" <td>52.5</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>84.0</td>\n",
|
||
" <td>62.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>444.0</td>\n",
|
||
" <td>439.0</td>\n",
|
||
" <td>32.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>1690.0</td>\n",
|
||
" <td>428.0</td>\n",
|
||
" <td>439.0</td>\n",
|
||
" <td>49.4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Juventus</th>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" <td>56.9</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>76.0</td>\n",
|
||
" <td>59.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>490.0</td>\n",
|
||
" <td>483.0</td>\n",
|
||
" <td>40.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1805.0</td>\n",
|
||
" <td>378.0</td>\n",
|
||
" <td>426.0</td>\n",
|
||
" <td>47.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Lazio</th>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" <td>53.0</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>59.0</td>\n",
|
||
" <td>40.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>454.0</td>\n",
|
||
" <td>480.0</td>\n",
|
||
" <td>43.0</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>2054.0</td>\n",
|
||
" <td>510.0</td>\n",
|
||
" <td>539.0</td>\n",
|
||
" <td>48.6</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Milan</th>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>29.0</td>\n",
|
||
" <td>51.7</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>72.0</td>\n",
|
||
" <td>47.0</td>\n",
|
||
" <td>15.0</td>\n",
|
||
" <td>20.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>502.0</td>\n",
|
||
" <td>486.0</td>\n",
|
||
" <td>44.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>20.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1977.0</td>\n",
|
||
" <td>539.0</td>\n",
|
||
" <td>567.0</td>\n",
|
||
" <td>48.7</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Napoli</th>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>25.0</td>\n",
|
||
" <td>55.1</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>83.0</td>\n",
|
||
" <td>56.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>580.0</td>\n",
|
||
" <td>362.0</td>\n",
|
||
" <td>72.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1811.0</td>\n",
|
||
" <td>404.0</td>\n",
|
||
" <td>414.0</td>\n",
|
||
" <td>49.4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Parma</th>\n",
|
||
" <td>Parma</td>\n",
|
||
" <td>42.0</td>\n",
|
||
" <td>47.8</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>39.0</td>\n",
|
||
" <td>26.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>508.0</td>\n",
|
||
" <td>486.0</td>\n",
|
||
" <td>64.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1950.0</td>\n",
|
||
" <td>474.0</td>\n",
|
||
" <td>630.0</td>\n",
|
||
" <td>42.9</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Roma</th>\n",
|
||
" <td>Roma</td>\n",
|
||
" <td>31.0</td>\n",
|
||
" <td>52.2</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>67.0</td>\n",
|
||
" <td>51.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>453.0</td>\n",
|
||
" <td>536.0</td>\n",
|
||
" <td>125.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1924.0</td>\n",
|
||
" <td>414.0</td>\n",
|
||
" <td>428.0</td>\n",
|
||
" <td>49.2</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Sampdoria</th>\n",
|
||
" <td>Sampdoria</td>\n",
|
||
" <td>27.0</td>\n",
|
||
" <td>45.2</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>52.0</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>520.0</td>\n",
|
||
" <td>473.0</td>\n",
|
||
" <td>111.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>2132.0</td>\n",
|
||
" <td>597.0</td>\n",
|
||
" <td>628.0</td>\n",
|
||
" <td>48.7</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Sassuolo</th>\n",
|
||
" <td>Sassuolo</td>\n",
|
||
" <td>28.0</td>\n",
|
||
" <td>60.3</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>61.0</td>\n",
|
||
" <td>36.0</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>14.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>502.0</td>\n",
|
||
" <td>468.0</td>\n",
|
||
" <td>91.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>14.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1843.0</td>\n",
|
||
" <td>450.0</td>\n",
|
||
" <td>408.0</td>\n",
|
||
" <td>52.4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Spezia</th>\n",
|
||
" <td>Spezia</td>\n",
|
||
" <td>35.0</td>\n",
|
||
" <td>51.9</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>52.0</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>556.0</td>\n",
|
||
" <td>548.0</td>\n",
|
||
" <td>140.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1985.0</td>\n",
|
||
" <td>568.0</td>\n",
|
||
" <td>537.0</td>\n",
|
||
" <td>51.4</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Torino</th>\n",
|
||
" <td>Torino</td>\n",
|
||
" <td>29.0</td>\n",
|
||
" <td>47.3</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>49.0</td>\n",
|
||
" <td>28.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>632.0</td>\n",
|
||
" <td>544.0</td>\n",
|
||
" <td>75.0</td>\n",
|
||
" <td>8.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1936.0</td>\n",
|
||
" <td>622.0</td>\n",
|
||
" <td>595.0</td>\n",
|
||
" <td>51.1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Udinese</th>\n",
|
||
" <td>Udinese</td>\n",
|
||
" <td>33.0</td>\n",
|
||
" <td>46.3</td>\n",
|
||
" <td>38.0</td>\n",
|
||
" <td>418.0</td>\n",
|
||
" <td>3420.0</td>\n",
|
||
" <td>40.0</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>559.0</td>\n",
|
||
" <td>474.0</td>\n",
|
||
" <td>42.0</td>\n",
|
||
" <td>9.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1867.0</td>\n",
|
||
" <td>442.0</td>\n",
|
||
" <td>491.0</td>\n",
|
||
" <td>47.4</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>20 rows × 321 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" team team_players_used team_possession team_games \\\n",
|
||
"team_idx \n",
|
||
"Atalanta Atalanta 30.0 54.6 38.0 \n",
|
||
"Benevento Benevento 29.0 42.6 38.0 \n",
|
||
"Bologna Bologna 37.0 50.8 38.0 \n",
|
||
"Cagliari Cagliari 32.0 44.8 38.0 \n",
|
||
"Crotone Crotone 31.0 46.3 38.0 \n",
|
||
"Fiorentina Fiorentina 30.0 46.3 38.0 \n",
|
||
"Genoa Genoa 34.0 44.8 38.0 \n",
|
||
"Verona Hellas Verona 32.0 49.8 38.0 \n",
|
||
"Inter Inter 25.0 52.5 38.0 \n",
|
||
"Juventus Juventus 30.0 56.9 38.0 \n",
|
||
"Lazio Lazio 30.0 53.0 38.0 \n",
|
||
"Milan Milan 29.0 51.7 38.0 \n",
|
||
"Napoli Napoli 25.0 55.1 38.0 \n",
|
||
"Parma Parma 42.0 47.8 38.0 \n",
|
||
"Roma Roma 31.0 52.2 38.0 \n",
|
||
"Sampdoria Sampdoria 27.0 45.2 38.0 \n",
|
||
"Sassuolo Sassuolo 28.0 60.3 38.0 \n",
|
||
"Spezia Spezia 35.0 51.9 38.0 \n",
|
||
"Torino Torino 29.0 47.3 38.0 \n",
|
||
"Udinese Udinese 33.0 46.3 38.0 \n",
|
||
"\n",
|
||
" team_games_starts team_minutes team_goals team_assists \\\n",
|
||
"team_idx \n",
|
||
"Atalanta 418.0 3420.0 90.0 65.0 \n",
|
||
"Benevento 418.0 3420.0 40.0 26.0 \n",
|
||
"Bologna 418.0 3420.0 49.0 38.0 \n",
|
||
"Cagliari 418.0 3420.0 43.0 30.0 \n",
|
||
"Crotone 418.0 3420.0 44.0 27.0 \n",
|
||
"Fiorentina 418.0 3420.0 44.0 31.0 \n",
|
||
"Genoa 418.0 3420.0 46.0 32.0 \n",
|
||
"Verona 418.0 3420.0 38.0 30.0 \n",
|
||
"Inter 418.0 3420.0 84.0 62.0 \n",
|
||
"Juventus 418.0 3420.0 76.0 59.0 \n",
|
||
"Lazio 418.0 3420.0 59.0 40.0 \n",
|
||
"Milan 418.0 3420.0 72.0 47.0 \n",
|
||
"Napoli 418.0 3420.0 83.0 56.0 \n",
|
||
"Parma 418.0 3420.0 39.0 26.0 \n",
|
||
"Roma 418.0 3420.0 67.0 51.0 \n",
|
||
"Sampdoria 418.0 3420.0 52.0 37.0 \n",
|
||
"Sassuolo 418.0 3420.0 61.0 36.0 \n",
|
||
"Spezia 418.0 3420.0 52.0 37.0 \n",
|
||
"Torino 418.0 3420.0 49.0 28.0 \n",
|
||
"Udinese 418.0 3420.0 40.0 30.0 \n",
|
||
"\n",
|
||
" team_pens_made team_pens_att ... vs_team_fouls vs_team_fouled \\\n",
|
||
"team_idx ... \n",
|
||
"Atalanta 6.0 7.0 ... 504.0 548.0 \n",
|
||
"Benevento 5.0 7.0 ... 621.0 463.0 \n",
|
||
"Bologna 3.0 4.0 ... 495.0 495.0 \n",
|
||
"Cagliari 4.0 5.0 ... 507.0 496.0 \n",
|
||
"Crotone 9.0 9.0 ... 524.0 499.0 \n",
|
||
"Fiorentina 6.0 6.0 ... 545.0 500.0 \n",
|
||
"Genoa 4.0 4.0 ... 502.0 501.0 \n",
|
||
"Verona 3.0 3.0 ... 557.0 593.0 \n",
|
||
"Inter 8.0 9.0 ... 444.0 439.0 \n",
|
||
"Juventus 8.0 10.0 ... 490.0 483.0 \n",
|
||
"Lazio 6.0 10.0 ... 454.0 480.0 \n",
|
||
"Milan 15.0 20.0 ... 502.0 486.0 \n",
|
||
"Napoli 7.0 8.0 ... 580.0 362.0 \n",
|
||
"Parma 5.0 5.0 ... 508.0 486.0 \n",
|
||
"Roma 7.0 8.0 ... 453.0 536.0 \n",
|
||
"Sampdoria 5.0 6.0 ... 520.0 473.0 \n",
|
||
"Sassuolo 13.0 14.0 ... 502.0 468.0 \n",
|
||
"Spezia 4.0 5.0 ... 556.0 548.0 \n",
|
||
"Torino 5.0 6.0 ... 632.0 544.0 \n",
|
||
"Udinese 4.0 4.0 ... 559.0 474.0 \n",
|
||
"\n",
|
||
" vs_team_offsides vs_team_pens_won vs_team_pens_conceded \\\n",
|
||
"team_idx \n",
|
||
"Atalanta 40.0 5.0 7.0 \n",
|
||
"Benevento 94.0 4.0 7.0 \n",
|
||
"Bologna 71.0 6.0 4.0 \n",
|
||
"Cagliari 83.0 4.0 5.0 \n",
|
||
"Crotone 103.0 4.0 9.0 \n",
|
||
"Fiorentina 94.0 9.0 6.0 \n",
|
||
"Genoa 37.0 7.0 4.0 \n",
|
||
"Verona 42.0 6.0 3.0 \n",
|
||
"Inter 32.0 5.0 9.0 \n",
|
||
"Juventus 40.0 6.0 10.0 \n",
|
||
"Lazio 43.0 10.0 10.0 \n",
|
||
"Milan 44.0 5.0 20.0 \n",
|
||
"Napoli 72.0 5.0 8.0 \n",
|
||
"Parma 64.0 3.0 5.0 \n",
|
||
"Roma 125.0 5.0 8.0 \n",
|
||
"Sampdoria 111.0 5.0 6.0 \n",
|
||
"Sassuolo 91.0 5.0 14.0 \n",
|
||
"Spezia 140.0 7.0 5.0 \n",
|
||
"Torino 75.0 8.0 6.0 \n",
|
||
"Udinese 42.0 9.0 4.0 \n",
|
||
"\n",
|
||
" vs_team_own_goals vs_team_ball_recoveries vs_team_aerials_won \\\n",
|
||
"team_idx \n",
|
||
"Atalanta 0.0 2251.0 506.0 \n",
|
||
"Benevento 0.0 1854.0 615.0 \n",
|
||
"Bologna 2.0 2024.0 594.0 \n",
|
||
"Cagliari 0.0 1920.0 602.0 \n",
|
||
"Crotone 1.0 2130.0 534.0 \n",
|
||
"Fiorentina 3.0 1915.0 544.0 \n",
|
||
"Genoa 1.0 2197.0 643.0 \n",
|
||
"Verona 5.0 2102.0 832.0 \n",
|
||
"Inter 5.0 1690.0 428.0 \n",
|
||
"Juventus 1.0 1805.0 378.0 \n",
|
||
"Lazio 2.0 2054.0 510.0 \n",
|
||
"Milan 2.0 1977.0 539.0 \n",
|
||
"Napoli 3.0 1811.0 404.0 \n",
|
||
"Parma 0.0 1950.0 474.0 \n",
|
||
"Roma 1.0 1924.0 414.0 \n",
|
||
"Sampdoria 0.0 2132.0 597.0 \n",
|
||
"Sassuolo 3.0 1843.0 450.0 \n",
|
||
"Spezia 0.0 1985.0 568.0 \n",
|
||
"Torino 1.0 1936.0 622.0 \n",
|
||
"Udinese 2.0 1867.0 442.0 \n",
|
||
"\n",
|
||
" vs_team_aerials_lost vs_team_aerials_won_pct \n",
|
||
"team_idx \n",
|
||
"Atalanta 633.0 44.4 \n",
|
||
"Benevento 496.0 55.4 \n",
|
||
"Bologna 564.0 51.3 \n",
|
||
"Cagliari 637.0 48.6 \n",
|
||
"Crotone 472.0 53.1 \n",
|
||
"Fiorentina 538.0 50.3 \n",
|
||
"Genoa 505.0 56.0 \n",
|
||
"Verona 749.0 52.6 \n",
|
||
"Inter 439.0 49.4 \n",
|
||
"Juventus 426.0 47.0 \n",
|
||
"Lazio 539.0 48.6 \n",
|
||
"Milan 567.0 48.7 \n",
|
||
"Napoli 414.0 49.4 \n",
|
||
"Parma 630.0 42.9 \n",
|
||
"Roma 428.0 49.2 \n",
|
||
"Sampdoria 628.0 48.7 \n",
|
||
"Sassuolo 408.0 52.4 \n",
|
||
"Spezia 537.0 51.4 \n",
|
||
"Torino 595.0 51.1 \n",
|
||
"Udinese 491.0 47.4 \n",
|
||
"\n",
|
||
"[20 rows x 321 columns]"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"rcsv = pd.read_csv('fbref_data/season' + season + '/teams.csv') \n",
|
||
"team = pd.DataFrame(rcsv)\n",
|
||
"\n",
|
||
"rcsv = pd.read_csv('fbref_data/season' + season + '/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['team_idx'][i] = team_data['team_idx'][i].split(' ')[-1]\n",
|
||
"\n",
|
||
"team_data = team_data.set_index('team_idx')\n",
|
||
"\n",
|
||
"team_data\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "b6a3db98",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"team_data.to_excel('mid_outputs/season' + season + '/team_data.xlsx')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"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>Donnarumma G.</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>350</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Milan</td>\n",
|
||
" <td>Donnarumma</td>\n",
|
||
" <td>G</td>\n",
|
||
" <td>629</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>1999</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>41.5</td>\n",
|
||
" <td>33.7</td>\n",
|
||
" <td>556.0</td>\n",
|
||
" <td>29.0</td>\n",
|
||
" <td>5.2</td>\n",
|
||
" <td>43.0</td>\n",
|
||
" <td>1.16</td>\n",
|
||
" <td>14.8</td>\n",
|
||
" <td>6.283784</td>\n",
|
||
" <td>0.394909</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Szczesny</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>453</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Szczesny</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>664</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>1990</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>10.6</td>\n",
|
||
" <td>22.0</td>\n",
|
||
" <td>399.0</td>\n",
|
||
" <td>12.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>1.24</td>\n",
|
||
" <td>16.2</td>\n",
|
||
" <td>6.216667</td>\n",
|
||
" <td>0.441273</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Handanovic</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>250</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Inter</td>\n",
|
||
" <td>Handanovic</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>635</td>\n",
|
||
" <td>36</td>\n",
|
||
" <td>1984</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>26.9</td>\n",
|
||
" <td>30.8</td>\n",
|
||
" <td>441.0</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>2.9</td>\n",
|
||
" <td>22.0</td>\n",
|
||
" <td>0.61</td>\n",
|
||
" <td>14.9</td>\n",
|
||
" <td>6.027027</td>\n",
|
||
" <td>0.505990</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Gollini</th>\n",
|
||
" <td>3</td>\n",
|
||
" <td>610</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Gollini</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>634</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>1995</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>63.8</td>\n",
|
||
" <td>49.7</td>\n",
|
||
" <td>234.0</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>2.6</td>\n",
|
||
" <td>39.0</td>\n",
|
||
" <td>1.63</td>\n",
|
||
" <td>17.4</td>\n",
|
||
" <td>6.100000</td>\n",
|
||
" <td>0.632456</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Audero</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>761</td>\n",
|
||
" <td>P</td>\n",
|
||
" <td>Sampdoria</td>\n",
|
||
" <td>Audero</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>620</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>1997</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>64.1</td>\n",
|
||
" <td>45.3</td>\n",
|
||
" <td>563.0</td>\n",
|
||
" <td>12.0</td>\n",
|
||
" <td>2.1</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>0.92</td>\n",
|
||
" <td>14.8</td>\n",
|
||
" <td>6.378378</td>\n",
|
||
" <td>0.409439</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>Rabbi</th>\n",
|
||
" <td>559</td>\n",
|
||
" <td>5361</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Bologna</td>\n",
|
||
" <td>Rabbi</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>464</td>\n",
|
||
" <td>18</td>\n",
|
||
" <td>2001</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.027304</td>\n",
|
||
" <td>0.472755</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Oddei</th>\n",
|
||
" <td>560</td>\n",
|
||
" <td>5378</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Sassuolo</td>\n",
|
||
" <td>Oddei</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>400</td>\n",
|
||
" <td>17</td>\n",
|
||
" <td>2002</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.207968</td>\n",
|
||
" <td>0.447162</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Karamoko Is.</th>\n",
|
||
" <td>561</td>\n",
|
||
" <td>5414</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Sassuolo</td>\n",
|
||
" <td>Karamoko</td>\n",
|
||
" <td>I</td>\n",
|
||
" <td>267</td>\n",
|
||
" <td>18</td>\n",
|
||
" <td>2002</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.186813</td>\n",
|
||
" <td>0.444240</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Correia</th>\n",
|
||
" <td>562</td>\n",
|
||
" <td>5419</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Juventus</td>\n",
|
||
" <td>Correia</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>113</td>\n",
|
||
" <td>19</td>\n",
|
||
" <td>2001</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.600386</td>\n",
|
||
" <td>0.396770</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Raimondo</th>\n",
|
||
" <td>563</td>\n",
|
||
" <td>5436</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Bologna</td>\n",
|
||
" <td>Raimondo</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>470</td>\n",
|
||
" <td>16</td>\n",
|
||
" <td>2004</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>6.209072</td>\n",
|
||
" <td>0.275318</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>564 rows × 169 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Unnamed: 0 id r team surname initial fb_ID age \\\n",
|
||
"name \n",
|
||
"Donnarumma G. 0 350 P Milan Donnarumma G 629 21 \n",
|
||
"Szczesny 1 453 P Juventus Szczesny NaN 664 30 \n",
|
||
"Handanovic 2 250 P Inter Handanovic NaN 635 36 \n",
|
||
"Gollini 3 610 P Atalanta Gollini NaN 634 25 \n",
|
||
"Audero 4 761 P Sampdoria Audero NaN 620 23 \n",
|
||
"... ... ... .. ... ... ... ... ... \n",
|
||
"Rabbi 559 5361 A Bologna Rabbi NaN 464 18 \n",
|
||
"Oddei 560 5378 A Sassuolo Oddei NaN 400 17 \n",
|
||
"Karamoko Is. 561 5414 A Sassuolo Karamoko I 267 18 \n",
|
||
"Correia 562 5419 A Juventus Correia NaN 113 19 \n",
|
||
"Raimondo 563 5436 A Bologna Raimondo NaN 470 16 \n",
|
||
"\n",
|
||
" birth_year games ... gk_pct_goal_kicks_launched \\\n",
|
||
"name ... \n",
|
||
"Donnarumma G. 1999 0 ... 41.5 \n",
|
||
"Szczesny 1990 0 ... 10.6 \n",
|
||
"Handanovic 1984 0 ... 26.9 \n",
|
||
"Gollini 1995 0 ... 63.8 \n",
|
||
"Audero 1997 0 ... 64.1 \n",
|
||
"... ... ... ... ... \n",
|
||
"Rabbi 2001 4 ... 0.0 \n",
|
||
"Oddei 2002 5 ... 0.0 \n",
|
||
"Karamoko Is. 2002 1 ... 0.0 \n",
|
||
"Correia 2001 1 ... 0.0 \n",
|
||
"Raimondo 2004 1 ... 0.0 \n",
|
||
"\n",
|
||
" gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n",
|
||
"name \n",
|
||
"Donnarumma G. 33.7 556.0 29.0 \n",
|
||
"Szczesny 22.0 399.0 12.0 \n",
|
||
"Handanovic 30.8 441.0 13.0 \n",
|
||
"Gollini 49.7 234.0 6.0 \n",
|
||
"Audero 45.3 563.0 12.0 \n",
|
||
"... ... ... ... \n",
|
||
"Rabbi 0.0 0.0 0.0 \n",
|
||
"Oddei 0.0 0.0 0.0 \n",
|
||
"Karamoko Is. 0.0 0.0 0.0 \n",
|
||
"Correia 0.0 0.0 0.0 \n",
|
||
"Raimondo 0.0 0.0 0.0 \n",
|
||
"\n",
|
||
" gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n",
|
||
"name \n",
|
||
"Donnarumma G. 5.2 43.0 \n",
|
||
"Szczesny 3.0 37.0 \n",
|
||
"Handanovic 2.9 22.0 \n",
|
||
"Gollini 2.6 39.0 \n",
|
||
"Audero 2.1 34.0 \n",
|
||
"... ... ... \n",
|
||
"Rabbi 0.0 0.0 \n",
|
||
"Oddei 0.0 0.0 \n",
|
||
"Karamoko Is. 0.0 0.0 \n",
|
||
"Correia 0.0 0.0 \n",
|
||
"Raimondo 0.0 0.0 \n",
|
||
"\n",
|
||
" gk_def_actions_outside_pen_area_per90 \\\n",
|
||
"name \n",
|
||
"Donnarumma G. 1.16 \n",
|
||
"Szczesny 1.24 \n",
|
||
"Handanovic 0.61 \n",
|
||
"Gollini 1.63 \n",
|
||
"Audero 0.92 \n",
|
||
"... ... \n",
|
||
"Rabbi 0.00 \n",
|
||
"Oddei 0.00 \n",
|
||
"Karamoko Is. 0.00 \n",
|
||
"Correia 0.00 \n",
|
||
"Raimondo 0.00 \n",
|
||
"\n",
|
||
" gk_avg_distance_def_actions vote_avg vote_std \n",
|
||
"name \n",
|
||
"Donnarumma G. 14.8 6.283784 0.394909 \n",
|
||
"Szczesny 16.2 6.216667 0.441273 \n",
|
||
"Handanovic 14.9 6.027027 0.505990 \n",
|
||
"Gollini 17.4 6.100000 0.632456 \n",
|
||
"Audero 14.8 6.378378 0.409439 \n",
|
||
"... ... ... ... \n",
|
||
"Rabbi 0.0 6.027304 0.472755 \n",
|
||
"Oddei 0.0 6.207968 0.447162 \n",
|
||
"Karamoko Is. 0.0 6.186813 0.444240 \n",
|
||
"Correia 0.0 6.600386 0.396770 \n",
|
||
"Raimondo 0.0 6.209072 0.275318 \n",
|
||
"\n",
|
||
"[564 rows x 169 columns]"
|
||
]
|
||
},
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"rx = pd.read_excel('mid_outputs/season' + season + '/players_stats.xlsx', index_col = 3) \n",
|
||
"players = pd.DataFrame(rx)\n",
|
||
"\n",
|
||
"players\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "f9f7f88c",
|
||
"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": "code",
|
||
"execution_count": 22,
|
||
"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>Immobile</th>\n",
|
||
" <td>452</td>\n",
|
||
" <td>785</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>Immobile</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>250</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>1990</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>504.0</td>\n",
|
||
" <td>548.0</td>\n",
|
||
" <td>40.0</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>2251.0</td>\n",
|
||
" <td>506.0</td>\n",
|
||
" <td>633.0</td>\n",
|
||
" <td>44.4</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1 rows × 811 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Unnamed: 0 id r team surname initial fb_ID age birth_year \\\n",
|
||
"Immobile 452 785 A Lazio Immobile NaN 250 30 1990 \n",
|
||
"\n",
|
||
" games ... opp_vs_team_fouls opp_vs_team_fouled \\\n",
|
||
"Immobile 35 ... 504.0 548.0 \n",
|
||
"\n",
|
||
" opp_vs_team_offsides opp_vs_team_pens_won \\\n",
|
||
"Immobile 40.0 5.0 \n",
|
||
"\n",
|
||
" opp_vs_team_pens_conceded opp_vs_team_own_goals \\\n",
|
||
"Immobile 7.0 0.0 \n",
|
||
"\n",
|
||
" opp_vs_team_ball_recoveries opp_vs_team_aerials_won \\\n",
|
||
"Immobile 2251.0 506.0 \n",
|
||
"\n",
|
||
" opp_vs_team_aerials_lost opp_vs_team_aerials_won_pct \n",
|
||
"Immobile 633.0 44.4 \n",
|
||
"\n",
|
||
"[1 rows x 811 columns]"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"test = player_match_data('Immobile', 'Lazio', 'Atalanta')\n",
|
||
"test.to_excel('tmp/playermatchdata.xlsx')\n",
|
||
"\n",
|
||
"test"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"id": "6b4c1b00",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Lazio'"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pteam = 'Lazio'\n",
|
||
"pteam_stats = team_data.loc[[pteam]]\n",
|
||
"pteam_stats.index[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"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": 24,
|
||
"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": "code",
|
||
"execution_count": 25,
|
||
"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": "code",
|
||
"execution_count": 26,
|
||
"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": "code",
|
||
"execution_count": 27,
|
||
"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>dribble_tackles_pct</th>\n",
|
||
" <th>dribbles_completed_pct</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>Immobile</th>\n",
|
||
" <td>A</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>34</td>\n",
|
||
" <td>2849</td>\n",
|
||
" <td>39.3</td>\n",
|
||
" <td>0.14</td>\n",
|
||
" <td>0.36</td>\n",
|
||
" <td>72.6</td>\n",
|
||
" <td>31.8</td>\n",
|
||
" <td>57.4</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.024921</td>\n",
|
||
" <td>0.011934</td>\n",
|
||
" <td>0.012987</td>\n",
|
||
" <td>0.015444</td>\n",
|
||
" <td>0.009126</td>\n",
|
||
" <td>0.018954</td>\n",
|
||
" <td>0.2457</td>\n",
|
||
" <td>0.025974</td>\n",
|
||
" <td>0.015093</td>\n",
|
||
" <td>0.013338</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1 rows × 125 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" r games games_starts minutes shots_on_target_pct \\\n",
|
||
"Immobile A 35 34 2849 39.3 \n",
|
||
"\n",
|
||
" goals_per_shot goals_per_shot_on_target passes_pct \\\n",
|
||
"Immobile 0.14 0.36 72.6 \n",
|
||
"\n",
|
||
" dribble_tackles_pct dribbles_completed_pct ... miscontrols \\\n",
|
||
"Immobile 31.8 57.4 ... 0.024921 \n",
|
||
"\n",
|
||
" dispossessed fouls fouled aerials_won aerials_lost \\\n",
|
||
"Immobile 0.011934 0.012987 0.015444 0.009126 0.018954 \n",
|
||
"\n",
|
||
" carries progressive_carries carries_into_final_third \\\n",
|
||
"Immobile 0.2457 0.025974 0.015093 \n",
|
||
"\n",
|
||
" carries_into_penalty_area \n",
|
||
"Immobile 0.013338 \n",
|
||
"\n",
|
||
"[1 rows x 125 columns]"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"test = player_match_data_ext('Immobile', 'Lazio', 'Atalanta')\n",
|
||
"\n",
|
||
"add_columns = test.columns\n",
|
||
"\n",
|
||
"test"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"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>Sportiello</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Toloi</td>\n",
|
||
" <td>Atalanta</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.5</td>\n",
|
||
" <td>5.5</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Djimsiti</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>6.5</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Hateboer</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>10.5</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Gosens</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>11.5</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>10569</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Bessa</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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>10570</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Zaccagni</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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>10571</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Ilic</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>6.5</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10572</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Lasagna</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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>10573</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Kalinic</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10574 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" matchday player team oppteam home vote goals assists \\\n",
|
||
"0 1 Sportiello Atalanta Lazio 0 6.5 -1 0 \n",
|
||
"1 1 Toloi Atalanta Lazio 0 6.0 0 0 \n",
|
||
"2 1 Djimsiti Atalanta Lazio 0 6.5 0 0 \n",
|
||
"3 1 Hateboer Atalanta Lazio 0 7.5 1 0 \n",
|
||
"4 1 Gosens Atalanta Lazio 0 7.5 1 1 \n",
|
||
"... ... ... ... ... ... ... ... ... \n",
|
||
"10569 38 Bessa Verona Napoli 0 6.0 0 0 \n",
|
||
"10570 38 Zaccagni Verona Napoli 0 6.5 0 0 \n",
|
||
"10571 38 Ilic Verona Napoli 0 6.5 0 0 \n",
|
||
"10572 38 Lasagna Verona Napoli 0 5.5 0 0 \n",
|
||
"10573 38 Kalinic Verona Napoli 0 5.5 0 0 \n",
|
||
"\n",
|
||
" cards_malus fantavote \n",
|
||
"0 0.0 5.5 \n",
|
||
"1 0.5 5.5 \n",
|
||
"2 0.5 6.0 \n",
|
||
"3 0.0 10.5 \n",
|
||
"4 0.0 11.5 \n",
|
||
"... ... ... \n",
|
||
"10569 0.0 6.0 \n",
|
||
"10570 0.0 6.5 \n",
|
||
"10571 0.5 6.0 \n",
|
||
"10572 0.0 5.5 \n",
|
||
"10573 0.0 5.5 \n",
|
||
"\n",
|
||
"[10574 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"votes = pd.read_excel('mid_outputs/season' + season + '/players_votes.xlsx', index_col = 0)\n",
|
||
"votes"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"id": "ec0bc56b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0\n",
|
||
"100\n",
|
||
"200\n",
|
||
"300\n",
|
||
"400\n",
|
||
"500\n",
|
||
"700\n",
|
||
"800\n",
|
||
"900\n",
|
||
"1000\n",
|
||
"1100\n",
|
||
"1300\n",
|
||
"1400\n",
|
||
"1500\n",
|
||
"1600\n",
|
||
"1700\n",
|
||
"1800\n",
|
||
"1900\n",
|
||
"2000\n",
|
||
"2100\n",
|
||
"2200\n",
|
||
"2300\n",
|
||
"2400\n",
|
||
"2500\n",
|
||
"2600\n",
|
||
"2700\n",
|
||
"2800\n",
|
||
"2900\n",
|
||
"3000\n",
|
||
"3100\n",
|
||
"3200\n",
|
||
"3300\n",
|
||
"3400\n",
|
||
"3500\n",
|
||
"3600\n",
|
||
"3700\n",
|
||
"3800\n",
|
||
"3900\n",
|
||
"4000\n",
|
||
"4100\n",
|
||
"4200\n",
|
||
"4300\n",
|
||
"4400\n",
|
||
"4500\n",
|
||
"4600\n",
|
||
"4700\n",
|
||
"4800\n",
|
||
"5000\n",
|
||
"5100\n",
|
||
"5200\n",
|
||
"5300\n",
|
||
"5400\n",
|
||
"5500\n",
|
||
"5600\n",
|
||
"5700\n",
|
||
"5800\n",
|
||
"5900\n",
|
||
"6000\n",
|
||
"6100\n",
|
||
"6200\n",
|
||
"6300\n",
|
||
"6400\n",
|
||
"6500\n",
|
||
"6600\n",
|
||
"6700\n",
|
||
"6800\n",
|
||
"6900\n",
|
||
"7000\n",
|
||
"7100\n",
|
||
"7200\n",
|
||
"7300\n",
|
||
"7400\n",
|
||
"7500\n",
|
||
"7600\n",
|
||
"7700\n",
|
||
"7800\n",
|
||
"7900\n",
|
||
"8000\n",
|
||
"8100\n",
|
||
"8200\n",
|
||
"8300\n",
|
||
"8400\n",
|
||
"8500\n",
|
||
"8600\n",
|
||
"8700\n",
|
||
"8800\n",
|
||
"8900\n",
|
||
"9000\n",
|
||
"9100\n",
|
||
"9200\n",
|
||
"9300\n",
|
||
"9400\n",
|
||
"9500\n",
|
||
"9600\n",
|
||
"9700\n",
|
||
"9800\n",
|
||
"9900\n",
|
||
"10000\n",
|
||
"10100\n",
|
||
"10200\n",
|
||
"10300\n",
|
||
"10400\n",
|
||
"10500\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": 30,
|
||
"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>Sportiello</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</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>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>Toloi</td>\n",
|
||
" <td>Atalanta</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.5</td>\n",
|
||
" <td>5.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.008672</td>\n",
|
||
" <td>0.005124</td>\n",
|
||
" <td>0.014978</td>\n",
|
||
" <td>0.005912</td>\n",
|
||
" <td>0.018132</td>\n",
|
||
" <td>0.011037</td>\n",
|
||
" <td>0.430430</td>\n",
|
||
" <td>0.015767</td>\n",
|
||
" <td>0.014190</td>\n",
|
||
" <td>0.001182</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Djimsiti</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>6.5</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.009524</td>\n",
|
||
" <td>0.003429</td>\n",
|
||
" <td>0.011810</td>\n",
|
||
" <td>0.009905</td>\n",
|
||
" <td>0.028952</td>\n",
|
||
" <td>0.011810</td>\n",
|
||
" <td>0.460571</td>\n",
|
||
" <td>0.016000</td>\n",
|
||
" <td>0.019810</td>\n",
|
||
" <td>0.001905</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Hateboer</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>10.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.015891</td>\n",
|
||
" <td>0.006810</td>\n",
|
||
" <td>0.011351</td>\n",
|
||
" <td>0.004540</td>\n",
|
||
" <td>0.013053</td>\n",
|
||
" <td>0.011351</td>\n",
|
||
" <td>0.386493</td>\n",
|
||
" <td>0.023269</td>\n",
|
||
" <td>0.017026</td>\n",
|
||
" <td>0.003973</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Gosens</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>11.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.016250</td>\n",
|
||
" <td>0.006342</td>\n",
|
||
" <td>0.019818</td>\n",
|
||
" <td>0.010305</td>\n",
|
||
" <td>0.014269</td>\n",
|
||
" <td>0.007927</td>\n",
|
||
" <td>0.417757</td>\n",
|
||
" <td>0.028141</td>\n",
|
||
" <td>0.022592</td>\n",
|
||
" <td>0.006342</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>10569</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Bessa</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.029268</td>\n",
|
||
" <td>0.019512</td>\n",
|
||
" <td>0.026016</td>\n",
|
||
" <td>0.009756</td>\n",
|
||
" <td>0.003252</td>\n",
|
||
" <td>0.026016</td>\n",
|
||
" <td>0.401626</td>\n",
|
||
" <td>0.030894</td>\n",
|
||
" <td>0.030894</td>\n",
|
||
" <td>0.006504</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10570</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Zaccagni</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.028363</td>\n",
|
||
" <td>0.024530</td>\n",
|
||
" <td>0.013798</td>\n",
|
||
" <td>0.041778</td>\n",
|
||
" <td>0.018015</td>\n",
|
||
" <td>0.021847</td>\n",
|
||
" <td>0.329628</td>\n",
|
||
" <td>0.045228</td>\n",
|
||
" <td>0.026447</td>\n",
|
||
" <td>0.017631</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10571</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Ilic</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>6.5</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.014169</td>\n",
|
||
" <td>0.007084</td>\n",
|
||
" <td>0.012534</td>\n",
|
||
" <td>0.015804</td>\n",
|
||
" <td>0.019074</td>\n",
|
||
" <td>0.013624</td>\n",
|
||
" <td>0.407084</td>\n",
|
||
" <td>0.020708</td>\n",
|
||
" <td>0.015804</td>\n",
|
||
" <td>0.000545</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10572</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Lasagna</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.040253</td>\n",
|
||
" <td>0.014207</td>\n",
|
||
" <td>0.025257</td>\n",
|
||
" <td>0.016575</td>\n",
|
||
" <td>0.020521</td>\n",
|
||
" <td>0.037885</td>\n",
|
||
" <td>0.183899</td>\n",
|
||
" <td>0.022099</td>\n",
|
||
" <td>0.014207</td>\n",
|
||
" <td>0.013418</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10573</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Kalinic</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.032926</td>\n",
|
||
" <td>0.012230</td>\n",
|
||
" <td>0.025400</td>\n",
|
||
" <td>0.031985</td>\n",
|
||
" <td>0.015992</td>\n",
|
||
" <td>0.047977</td>\n",
|
||
" <td>0.199436</td>\n",
|
||
" <td>0.006585</td>\n",
|
||
" <td>0.004704</td>\n",
|
||
" <td>0.002822</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>10574 rows × 135 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" matchday player team oppteam home vote goals assists \\\n",
|
||
"0 1 Sportiello Atalanta Lazio 0 6.5 -1 0 \n",
|
||
"1 1 Toloi Atalanta Lazio 0 6.0 0 0 \n",
|
||
"2 1 Djimsiti Atalanta Lazio 0 6.5 0 0 \n",
|
||
"3 1 Hateboer Atalanta Lazio 0 7.5 1 0 \n",
|
||
"4 1 Gosens Atalanta Lazio 0 7.5 1 1 \n",
|
||
"... ... ... ... ... ... ... ... ... \n",
|
||
"10569 38 Bessa Verona Napoli 0 6.0 0 0 \n",
|
||
"10570 38 Zaccagni Verona Napoli 0 6.5 0 0 \n",
|
||
"10571 38 Ilic Verona Napoli 0 6.5 0 0 \n",
|
||
"10572 38 Lasagna Verona Napoli 0 5.5 0 0 \n",
|
||
"10573 38 Kalinic Verona Napoli 0 5.5 0 0 \n",
|
||
"\n",
|
||
" cards_malus fantavote ... miscontrols dispossessed fouls \\\n",
|
||
"0 0.0 5.5 ... 0.000000 0.000000 0.000000 \n",
|
||
"1 0.5 5.5 ... 0.008672 0.005124 0.014978 \n",
|
||
"2 0.5 6.0 ... 0.009524 0.003429 0.011810 \n",
|
||
"3 0.0 10.5 ... 0.015891 0.006810 0.011351 \n",
|
||
"4 0.0 11.5 ... 0.016250 0.006342 0.019818 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"10569 0.0 6.0 ... 0.029268 0.019512 0.026016 \n",
|
||
"10570 0.0 6.5 ... 0.028363 0.024530 0.013798 \n",
|
||
"10571 0.5 6.0 ... 0.014169 0.007084 0.012534 \n",
|
||
"10572 0.0 5.5 ... 0.040253 0.014207 0.025257 \n",
|
||
"10573 0.0 5.5 ... 0.032926 0.012230 0.025400 \n",
|
||
"\n",
|
||
" fouled aerials_won aerials_lost carries progressive_carries \\\n",
|
||
"0 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
|
||
"1 0.005912 0.018132 0.011037 0.430430 0.015767 \n",
|
||
"2 0.009905 0.028952 0.011810 0.460571 0.016000 \n",
|
||
"3 0.004540 0.013053 0.011351 0.386493 0.023269 \n",
|
||
"4 0.010305 0.014269 0.007927 0.417757 0.028141 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"10569 0.009756 0.003252 0.026016 0.401626 0.030894 \n",
|
||
"10570 0.041778 0.018015 0.021847 0.329628 0.045228 \n",
|
||
"10571 0.015804 0.019074 0.013624 0.407084 0.020708 \n",
|
||
"10572 0.016575 0.020521 0.037885 0.183899 0.022099 \n",
|
||
"10573 0.031985 0.015992 0.047977 0.199436 0.006585 \n",
|
||
"\n",
|
||
" carries_into_final_third carries_into_penalty_area \n",
|
||
"0 0.000000 0.000000 \n",
|
||
"1 0.014190 0.001182 \n",
|
||
"2 0.019810 0.001905 \n",
|
||
"3 0.017026 0.003973 \n",
|
||
"4 0.022592 0.006342 \n",
|
||
"... ... ... \n",
|
||
"10569 0.030894 0.006504 \n",
|
||
"10570 0.026447 0.017631 \n",
|
||
"10571 0.015804 0.000545 \n",
|
||
"10572 0.014207 0.013418 \n",
|
||
"10573 0.004704 0.002822 \n",
|
||
"\n",
|
||
"[10574 rows x 135 columns]"
|
||
]
|
||
},
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"db"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"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 extisting players\n",
|
||
"db = db.drop(db[db.r != db.r].index) # remove non extisting players\n",
|
||
"db = db.drop(db[db.xg != db.xg].index) \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"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>Toloi</td>\n",
|
||
" <td>Atalanta</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.5</td>\n",
|
||
" <td>5.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.008672</td>\n",
|
||
" <td>0.005124</td>\n",
|
||
" <td>0.014978</td>\n",
|
||
" <td>0.005912</td>\n",
|
||
" <td>0.018132</td>\n",
|
||
" <td>0.011037</td>\n",
|
||
" <td>0.430430</td>\n",
|
||
" <td>0.015767</td>\n",
|
||
" <td>0.014190</td>\n",
|
||
" <td>0.001182</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Djimsiti</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>6.5</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.009524</td>\n",
|
||
" <td>0.003429</td>\n",
|
||
" <td>0.011810</td>\n",
|
||
" <td>0.009905</td>\n",
|
||
" <td>0.028952</td>\n",
|
||
" <td>0.011810</td>\n",
|
||
" <td>0.460571</td>\n",
|
||
" <td>0.016000</td>\n",
|
||
" <td>0.019810</td>\n",
|
||
" <td>0.001905</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Hateboer</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>10.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.015891</td>\n",
|
||
" <td>0.006810</td>\n",
|
||
" <td>0.011351</td>\n",
|
||
" <td>0.004540</td>\n",
|
||
" <td>0.013053</td>\n",
|
||
" <td>0.011351</td>\n",
|
||
" <td>0.386493</td>\n",
|
||
" <td>0.023269</td>\n",
|
||
" <td>0.017026</td>\n",
|
||
" <td>0.003973</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Gosens</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>7.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>11.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.016250</td>\n",
|
||
" <td>0.006342</td>\n",
|
||
" <td>0.019818</td>\n",
|
||
" <td>0.010305</td>\n",
|
||
" <td>0.014269</td>\n",
|
||
" <td>0.007927</td>\n",
|
||
" <td>0.417757</td>\n",
|
||
" <td>0.028141</td>\n",
|
||
" <td>0.022592</td>\n",
|
||
" <td>0.006342</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Palomino</td>\n",
|
||
" <td>Atalanta</td>\n",
|
||
" <td>Lazio</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.005354</td>\n",
|
||
" <td>0.002059</td>\n",
|
||
" <td>0.019769</td>\n",
|
||
" <td>0.006590</td>\n",
|
||
" <td>0.024300</td>\n",
|
||
" <td>0.018534</td>\n",
|
||
" <td>0.404448</td>\n",
|
||
" <td>0.006590</td>\n",
|
||
" <td>0.004942</td>\n",
|
||
" <td>0.000824</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>10569</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Bessa</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.029268</td>\n",
|
||
" <td>0.019512</td>\n",
|
||
" <td>0.026016</td>\n",
|
||
" <td>0.009756</td>\n",
|
||
" <td>0.003252</td>\n",
|
||
" <td>0.026016</td>\n",
|
||
" <td>0.401626</td>\n",
|
||
" <td>0.030894</td>\n",
|
||
" <td>0.030894</td>\n",
|
||
" <td>0.006504</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10570</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Zaccagni</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.028363</td>\n",
|
||
" <td>0.024530</td>\n",
|
||
" <td>0.013798</td>\n",
|
||
" <td>0.041778</td>\n",
|
||
" <td>0.018015</td>\n",
|
||
" <td>0.021847</td>\n",
|
||
" <td>0.329628</td>\n",
|
||
" <td>0.045228</td>\n",
|
||
" <td>0.026447</td>\n",
|
||
" <td>0.017631</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10571</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Ilic</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>6.5</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>6.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.014169</td>\n",
|
||
" <td>0.007084</td>\n",
|
||
" <td>0.012534</td>\n",
|
||
" <td>0.015804</td>\n",
|
||
" <td>0.019074</td>\n",
|
||
" <td>0.013624</td>\n",
|
||
" <td>0.407084</td>\n",
|
||
" <td>0.020708</td>\n",
|
||
" <td>0.015804</td>\n",
|
||
" <td>0.000545</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10572</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Lasagna</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.040253</td>\n",
|
||
" <td>0.014207</td>\n",
|
||
" <td>0.025257</td>\n",
|
||
" <td>0.016575</td>\n",
|
||
" <td>0.020521</td>\n",
|
||
" <td>0.037885</td>\n",
|
||
" <td>0.183899</td>\n",
|
||
" <td>0.022099</td>\n",
|
||
" <td>0.014207</td>\n",
|
||
" <td>0.013418</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>10573</th>\n",
|
||
" <td>38</td>\n",
|
||
" <td>Kalinic</td>\n",
|
||
" <td>Verona</td>\n",
|
||
" <td>Napoli</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.032926</td>\n",
|
||
" <td>0.012230</td>\n",
|
||
" <td>0.025400</td>\n",
|
||
" <td>0.031985</td>\n",
|
||
" <td>0.015992</td>\n",
|
||
" <td>0.047977</td>\n",
|
||
" <td>0.199436</td>\n",
|
||
" <td>0.006585</td>\n",
|
||
" <td>0.004704</td>\n",
|
||
" <td>0.002822</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>9663 rows × 135 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" matchday player team oppteam home vote goals assists \\\n",
|
||
"1 1 Toloi Atalanta Lazio 0 6.0 0 0 \n",
|
||
"2 1 Djimsiti Atalanta Lazio 0 6.5 0 0 \n",
|
||
"3 1 Hateboer Atalanta Lazio 0 7.5 1 0 \n",
|
||
"4 1 Gosens Atalanta Lazio 0 7.5 1 1 \n",
|
||
"5 1 Palomino Atalanta Lazio 0 6.5 0 0 \n",
|
||
"... ... ... ... ... ... ... ... ... \n",
|
||
"10569 38 Bessa Verona Napoli 0 6.0 0 0 \n",
|
||
"10570 38 Zaccagni Verona Napoli 0 6.5 0 0 \n",
|
||
"10571 38 Ilic Verona Napoli 0 6.5 0 0 \n",
|
||
"10572 38 Lasagna Verona Napoli 0 5.5 0 0 \n",
|
||
"10573 38 Kalinic Verona Napoli 0 5.5 0 0 \n",
|
||
"\n",
|
||
" cards_malus fantavote ... miscontrols dispossessed fouls \\\n",
|
||
"1 0.5 5.5 ... 0.008672 0.005124 0.014978 \n",
|
||
"2 0.5 6.0 ... 0.009524 0.003429 0.011810 \n",
|
||
"3 0.0 10.5 ... 0.015891 0.006810 0.011351 \n",
|
||
"4 0.0 11.5 ... 0.016250 0.006342 0.019818 \n",
|
||
"5 0.0 6.5 ... 0.005354 0.002059 0.019769 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"10569 0.0 6.0 ... 0.029268 0.019512 0.026016 \n",
|
||
"10570 0.0 6.5 ... 0.028363 0.024530 0.013798 \n",
|
||
"10571 0.5 6.0 ... 0.014169 0.007084 0.012534 \n",
|
||
"10572 0.0 5.5 ... 0.040253 0.014207 0.025257 \n",
|
||
"10573 0.0 5.5 ... 0.032926 0.012230 0.025400 \n",
|
||
"\n",
|
||
" fouled aerials_won aerials_lost carries progressive_carries \\\n",
|
||
"1 0.005912 0.018132 0.011037 0.430430 0.015767 \n",
|
||
"2 0.009905 0.028952 0.011810 0.460571 0.016000 \n",
|
||
"3 0.004540 0.013053 0.011351 0.386493 0.023269 \n",
|
||
"4 0.010305 0.014269 0.007927 0.417757 0.028141 \n",
|
||
"5 0.006590 0.024300 0.018534 0.404448 0.006590 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"10569 0.009756 0.003252 0.026016 0.401626 0.030894 \n",
|
||
"10570 0.041778 0.018015 0.021847 0.329628 0.045228 \n",
|
||
"10571 0.015804 0.019074 0.013624 0.407084 0.020708 \n",
|
||
"10572 0.016575 0.020521 0.037885 0.183899 0.022099 \n",
|
||
"10573 0.031985 0.015992 0.047977 0.199436 0.006585 \n",
|
||
"\n",
|
||
" carries_into_final_third carries_into_penalty_area \n",
|
||
"1 0.014190 0.001182 \n",
|
||
"2 0.019810 0.001905 \n",
|
||
"3 0.017026 0.003973 \n",
|
||
"4 0.022592 0.006342 \n",
|
||
"5 0.004942 0.000824 \n",
|
||
"... ... ... \n",
|
||
"10569 0.030894 0.006504 \n",
|
||
"10570 0.026447 0.017631 \n",
|
||
"10571 0.015804 0.000545 \n",
|
||
"10572 0.014207 0.013418 \n",
|
||
"10573 0.004704 0.002822 \n",
|
||
"\n",
|
||
"[9663 rows x 135 columns]"
|
||
]
|
||
},
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"db"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"id": "df26c8e0",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"db.to_excel('mid_outputs/season' + season + '/database_entries.xlsx')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "626ba83b",
|
||
"metadata": {},
|
||
"source": [
|
||
"Goalkeepers"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 56,
|
||
"id": "ba7b838c",
|
||
"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": 57,
|
||
"id": "1d2682b9",
|
||
"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": 58,
|
||
"id": "bc6e9d52",
|
||
"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>37.0</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>3322.0</td>\n",
|
||
" <td>1.71</td>\n",
|
||
" <td>67.8</td>\n",
|
||
" <td>8.1</td>\n",
|
||
" <td>-0.16</td>\n",
|
||
" <td>43.2</td>\n",
|
||
" <td>29.0</td>\n",
|
||
" <td>30.9</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>56.0</td>\n",
|
||
" <td>0.28</td>\n",
|
||
" <td>-6.0</td>\n",
|
||
" <td>186.0</td>\n",
|
||
" <td>431.0</td>\n",
|
||
" <td>1219.0</td>\n",
|
||
" <td>174.0</td>\n",
|
||
" <td>246.0</td>\n",
|
||
" <td>491.0</td>\n",
|
||
" <td>21.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1 rows × 98 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" gk_games gk_games_starts gk_minutes gk_goals_against_per90 \\\n",
|
||
"Consigli 37.0 37.0 3322.0 1.71 \n",
|
||
"\n",
|
||
" gk_save_pct gk_clean_sheets_pct gk_psxg_net_per90 \\\n",
|
||
"Consigli 67.8 8.1 -0.16 \n",
|
||
"\n",
|
||
" gk_passes_pct_launched gk_pct_passes_launched \\\n",
|
||
"Consigli 43.2 29.0 \n",
|
||
"\n",
|
||
" gk_passes_length_avg ... gk_psxg \\\n",
|
||
"Consigli 30.9 ... 56.0 \n",
|
||
"\n",
|
||
" gk_psnpxg_per_shot_on_target_against gk_psxg_net \\\n",
|
||
"Consigli 0.28 -6.0 \n",
|
||
"\n",
|
||
" gk_passes_completed_launched gk_passes_launched gk_passes \\\n",
|
||
"Consigli 186.0 431.0 1219.0 \n",
|
||
"\n",
|
||
" gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n",
|
||
"Consigli 174.0 246.0 491.0 21.0 \n",
|
||
"\n",
|
||
"[1 rows x 98 columns]"
|
||
]
|
||
},
|
||
"execution_count": 58,
|
||
"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": null,
|
||
"id": "6f08e718",
|
||
"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",
|
||
"900\n",
|
||
"1000\n",
|
||
"1100\n",
|
||
"1200\n",
|
||
"1300\n",
|
||
"1400\n",
|
||
"1500\n",
|
||
"1600\n",
|
||
"1700\n",
|
||
"1800\n",
|
||
"1900\n",
|
||
"2000\n",
|
||
"2100\n",
|
||
"2200\n",
|
||
"2300\n",
|
||
"2400\n",
|
||
"2500\n",
|
||
"2600\n",
|
||
"2700\n",
|
||
"2800\n",
|
||
"2900\n",
|
||
"3000\n",
|
||
"3100\n",
|
||
"3200\n",
|
||
"3300\n",
|
||
"3400\n",
|
||
"3500\n",
|
||
"3600\n",
|
||
"3700\n",
|
||
"3800\n",
|
||
"3900\n",
|
||
"4000\n",
|
||
"4100\n",
|
||
"4200\n",
|
||
"4300\n",
|
||
"4400\n",
|
||
"4500\n",
|
||
"4600\n",
|
||
"4700\n",
|
||
"4800\n",
|
||
"4900\n",
|
||
"5000\n",
|
||
"5100\n",
|
||
"5200\n",
|
||
"5300\n",
|
||
"5400\n",
|
||
"5500\n",
|
||
"5600\n",
|
||
"5700\n",
|
||
"5800\n",
|
||
"5900\n",
|
||
"6000\n",
|
||
"6100\n",
|
||
"6200\n",
|
||
"6300\n",
|
||
"6400\n",
|
||
"6500\n",
|
||
"6600\n",
|
||
"6700\n",
|
||
"6800\n",
|
||
"6900\n",
|
||
"7000\n",
|
||
"7100\n",
|
||
"7200\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": null,
|
||
"id": "2b540670",
|
||
"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": null,
|
||
"id": "35495581",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"db_gk.to_excel('mid_outputs/season' + season + '/database_entries_gk.xlsx')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "43b85925",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.13"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|