{ "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
teamteam_players_usedteam_possessionteam_gamesteam_games_startsteam_minutesteam_goalsteam_assiststeam_pens_madeteam_pens_att...vs_team_foulsvs_team_fouledvs_team_offsidesvs_team_pens_wonvs_team_pens_concededvs_team_own_goalsvs_team_ball_recoveriesvs_team_aerials_wonvs_team_aerials_lostvs_team_aerials_won_pct
team_idx
AtalantaAtalanta20.051.73.033.0270.06.06.00.00.0...28.033.02.00.00.00.0157.044.042.051.2
BolognaBologna20.055.33.033.0270.03.02.00.01.0...32.030.07.00.01.00.0157.023.029.044.2
CagliariCagliari19.035.03.033.0270.01.01.00.00.0...27.029.04.00.00.00.0165.044.037.054.3
EmpoliEmpoli26.048.03.033.0270.00.00.00.00.0...45.038.06.01.00.00.0152.042.030.058.3
FiorentinaFiorentina21.062.33.033.0270.06.05.00.00.0...42.036.03.01.00.00.0142.038.032.054.3
FrosinoneFrosinone21.046.03.033.0270.03.02.01.01.0...41.031.04.00.01.00.0168.046.042.052.3
GenoaGenoa18.033.03.033.0270.02.01.00.00.0...35.031.06.00.00.00.0148.032.044.042.1
VeronaHellas Verona19.044.73.033.0270.04.02.00.00.0...37.047.06.01.00.00.0138.054.071.043.2
InterInter18.051.33.033.0270.08.07.01.01.0...34.030.03.00.01.00.0128.024.036.040.0
JuventusJuventus21.053.03.033.0270.06.04.01.02.0...39.036.05.00.02.00.0134.022.026.045.8
LazioLazio19.053.33.033.0270.03.03.00.00.0...36.031.06.00.00.00.0155.039.026.060.0
LecceLecce18.045.03.033.0270.06.05.01.01.0...47.043.04.00.01.00.0150.033.046.041.8
MilanMilan18.054.03.033.0270.08.05.03.03.0...40.031.05.00.03.00.0145.034.027.055.7
MonzaMonza21.055.33.033.0270.02.02.00.00.0...26.035.06.00.00.00.0144.037.027.057.8
NapoliNapoli18.060.33.033.0270.06.03.01.02.0...33.033.06.01.02.00.0124.019.033.036.5
RomaRoma21.058.33.033.0270.04.03.00.00.0...41.036.02.01.00.00.0114.045.064.041.3
SalernitanaSalernitana21.050.03.033.0270.03.03.00.00.0...48.034.02.00.00.00.0151.068.037.064.8
SassuoloSassuolo22.043.03.033.0270.03.02.01.01.0...35.025.010.01.01.00.0159.040.030.057.1
TorinoTorino20.053.73.033.0270.02.02.00.00.0...32.033.05.01.00.00.0151.046.041.052.9
UdineseUdinese18.046.73.033.0270.01.01.00.00.0...31.041.07.00.00.00.0137.038.048.044.2
\n", "

20 rows × 303 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0idrteamsurnameinitialfb_IDagebirth_yeargames...gk_pct_goal_kicks_launchedgk_goal_kick_length_avggk_crossesgk_crosses_stoppedgk_crosses_stopped_pctgk_def_actions_outside_pen_areagk_def_actions_outside_pen_area_per90gk_avg_distance_def_actionsvote_avgvote_std
name
Maignan04312PMilanMaignanNaN40628-06819950...65.049.3431227.931.0010.36.0000000.000000
Meret1572PNapoliMeretNaN40826-17119970...0.021.41516.751.6718.15.8333330.235702
Sommer22428PInterSommerNaN42034-26619880...23.831.03512.900.006.86.0000000.000000
Szczesny3453PJuventusSzczesnyNaN42133-14419900...66.753.31616.300.0010.87.0000000.000000
Provedel42814PLazioProvedelNaN41629-17619940...27.331.63925.162.0016.36.1666670.235702
..................................................................
Bidaoui5306242AFrosinoneBidaouiNaN-1000...0.00.0000.000.000.06.4555010.000000
Burnete5316418ALecceBurneteNaN5119-22120041...0.00.0000.000.000.06.0000000.000000
Corfitzen5326419ALecceCorfitzenNaN-1000...0.00.0000.000.000.05.9005180.000000
Stewart5336427ASalernitanaStewartNaN-1000...0.00.0000.000.000.05.4178860.000000
Yildiz5346434AJuventusYildizNaN-1000...0.00.0000.000.000.05.8255800.000000
\n", "

535 rows × 160 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0idrteamsurnameinitialfb_IDagebirth_yeargames...opp_vs_team_foulsopp_vs_team_fouledopp_vs_team_offsidesopp_vs_team_pens_wonopp_vs_team_pens_concededopp_vs_team_own_goalsopp_vs_team_ball_recoveriesopp_vs_team_aerials_wonopp_vs_team_aerials_lostopp_vs_team_aerials_won_pct
Barella2591870CInterBarellaNaN2026-21419973...28.033.02.00.00.00.0157.044.042.051.2
\n", "

1 rows × 766 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rgamesgames_startsminutesshots_on_target_pctgoals_per_shotgoals_per_shot_on_targetpasses_pctaerials_won_pctteam_possession...miscontrolsdispossessedfoulsfouledaerials_wonaerials_lostcarriesprogressive_carriescarries_into_final_thirdcarries_into_penalty_area
BarellaC3321825.00.00.086.1100.051.3...0.00.00.0045870.0137610.0045870.00.5550460.032110.0275230.0
\n", "

1 rows × 112 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
matchdayplayerteamoppteamhomevotegoalsassistscards_malusfantavote
01MussoAtalantaSassuolo06.5000.06.5
11ZappacostaAtalantaSassuolo06.5000.06.5
21DjimsitiAtalantaSassuolo06.0000.06.0
31KolasinacAtalantaSassuolo06.5000.06.5
41ZorteaAtalantaSassuolo07.0100.010.0
.................................
8593FolorunshoVeronaSassuolo05.0000.05.0
8603SerdarVeronaSassuolo05.5000.05.5
8613BonazzoliVeronaSassuolo05.5000.05.5
8623DjuricVeronaSassuolo06.0000.06.0
8633NgongeVeronaSassuolo06.5100.09.5
\n", "

864 rows × 10 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
matchdayplayerteamoppteamhomevotegoalsassistscards_malusfantavote...miscontrolsdispossessedfoulsfouledaerials_wonaerials_lostcarriesprogressive_carriescarries_into_final_thirdcarries_into_penalty_area
01MussoAtalantaSassuolo06.5000.06.5...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
11ZappacostaAtalantaSassuolo06.5000.06.5...0.0263160.0157890.0105260.0210530.0052630.0210530.3947370.0473680.0263160.015789
21DjimsitiAtalantaSassuolo06.0000.06.0...0.0078740.0000000.0078740.0000000.0196850.0275590.3503940.0000000.0000000.000000
31KolasinacAtalantaSassuolo06.5000.06.5...0.0037170.0037170.0000000.0111520.0111520.0185870.4572490.0223050.0334570.003717
41ZorteaAtalantaSassuolo07.0100.010.0...0.0000000.0156250.0156250.0000000.0000000.0156250.5156250.0625000.0468750.015625
..................................................................
8593FolorunshoVeronaSassuolo05.0000.05.0...0.0244900.0081630.0163270.0408160.0163270.0530610.2040820.0163270.0244900.000000
8603SerdarVeronaSassuolo05.5000.05.5...0.0361450.0120480.0120480.0000000.0120480.0361450.2048190.0000000.0000000.000000
8613BonazzoliVeronaSassuolo05.5000.05.5...0.0459770.0114940.0000000.0344830.0000000.0344830.3448280.0229890.0229890.011494
8623DjuricVeronaSassuolo06.0000.06.0...0.0243900.0081300.0487800.0081300.1300810.0813010.1788620.0000000.0000000.000000
8633NgongeVeronaSassuolo06.5100.09.5...0.0227270.0090910.0409090.0136360.0136360.0181820.2272730.0409090.0136360.018182
\n", "

864 rows × 122 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
matchdayplayerteamoppteamhomevotegoalsassistscards_malusfantavote...miscontrolsdispossessedfoulsfouledaerials_wonaerials_lostcarriesprogressive_carriescarries_into_final_thirdcarries_into_penalty_area
11ZappacostaAtalantaSassuolo06.5000.06.5...0.0263160.0157890.0105260.0210530.0052630.0210530.3947370.0473680.0263160.015789
21DjimsitiAtalantaSassuolo06.0000.06.0...0.0078740.0000000.0078740.0000000.0196850.0275590.3503940.0000000.0000000.000000
31KolasinacAtalantaSassuolo06.5000.06.5...0.0037170.0037170.0000000.0111520.0111520.0185870.4572490.0223050.0334570.003717
41ZorteaAtalantaSassuolo07.0100.010.0...0.0000000.0156250.0156250.0000000.0000000.0156250.5156250.0625000.0468750.015625
51RuggeriAtalantaSassuolo06.5010.07.5...0.0122950.0040980.0163930.0000000.0040980.0245900.4344260.0163930.0163930.004098
..................................................................
8593FolorunshoVeronaSassuolo05.0000.05.0...0.0244900.0081630.0163270.0408160.0163270.0530610.2040820.0163270.0244900.000000
8603SerdarVeronaSassuolo05.5000.05.5...0.0361450.0120480.0120480.0000000.0120480.0361450.2048190.0000000.0000000.000000
8613BonazzoliVeronaSassuolo05.5000.05.5...0.0459770.0114940.0000000.0344830.0000000.0344830.3448280.0229890.0229890.011494
8623DjuricVeronaSassuolo06.0000.06.0...0.0243900.0081300.0487800.0081300.1300810.0813010.1788620.0000000.0000000.000000
8633NgongeVeronaSassuolo06.5100.09.5...0.0227270.0090910.0409090.0136360.0136360.0181820.2272730.0409090.0136360.018182
\n", "

795 rows × 122 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
gk_gamesgk_games_startsgk_minutesgk_goals_against_per90gk_save_pctgk_clean_sheets_pctgk_psxg_net_per90gk_passes_pct_launchedgk_pct_passes_launchedgk_passes_length_avg...gk_psxggk_psnpxg_per_shot_on_target_againstgk_psxg_netgk_passes_completed_launchedgk_passes_launchedgk_passesgk_passes_throwsgk_goal_kicksgk_crossesgk_crosses_stopped
Consigli332701.6766.70.0-0.5823.938.937.1...3.30.19-1.711.046.095.010.034.046.02.0
\n", "

1 rows × 92 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
matchdayplayerteamoppteamhomevotegoalsassistscards_malusfantavote...gk_psxggk_psnpxg_per_shot_on_target_againstgk_psxg_netgk_passes_completed_launchedgk_passes_launchedgk_passesgk_passes_throwsgk_goal_kicksgk_crossesgk_crosses_stopped
01MussoAtalantaSassuolo06.5000.06.5...2.10.210.111.034.088.018.018.028.02.0
11ZappacostaAtalantaSassuolo06.5000.06.5...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
21DjimsitiAtalantaSassuolo06.0000.06.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
31KolasinacAtalantaSassuolo06.5000.06.5...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
41ZorteaAtalantaSassuolo07.0100.010.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
8593FolorunshoVeronaSassuolo05.0000.05.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
8603SerdarVeronaSassuolo05.5000.05.5...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
8613BonazzoliVeronaSassuolo05.5000.05.5...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
8623DjuricVeronaSassuolo06.0000.06.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
8633NgongeVeronaSassuolo06.5100.09.5...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "

864 rows × 102 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
matchdayplayerteamoppteamhomevotegoalsassistscards_malusfantavote...gk_psxggk_psnpxg_per_shot_on_target_againstgk_psxg_netgk_passes_completed_launchedgk_passes_launchedgk_passesgk_passes_throwsgk_goal_kicksgk_crossesgk_crosses_stopped
01MussoAtalantaSassuolo06.5000.06.5...2.10.210.111.034.088.018.018.028.02.0
161SkorupskiBolognaMilan16.0-200.04.0...3.00.33-1.011.031.063.014.019.045.02.0
291RadunovicCagliariTorino06.5000.06.5...4.00.340.016.041.053.014.028.049.02.0
441CaprileEmpoliVerona15.0-100.04.0...0.40.11-0.64.020.037.09.04.010.02.0
571TerraccianoFiorentinaGenoa06.0-100.05.0...0.30.13-0.73.05.047.03.04.011.00.0
691TuratiFrosinoneNapoli15.5-300.02.5...3.60.260.65.019.061.017.010.025.02.0
841Martinez Jo.GenoaFiorentina16.0-400.02.0...2.60.27-2.427.055.094.09.014.064.08.0
981SommerInterMonza16.0000.06.0...1.20.211.219.032.081.012.021.035.01.0
1121SzczesnyJuventusUdinese07.0000.07.0...1.40.301.45.014.034.06.03.016.01.0
1271ProvedelLazioLecce06.0-200.04.0...2.50.18-1.56.016.089.011.011.039.02.0
1421FalconeLecceLazio17.0-100.06.0...3.00.250.017.043.057.014.024.032.02.0
1581MaignanMilanBologna06.0000.06.0...0.60.08-1.420.057.0170.023.020.043.012.0
1731Di GregorioMonzaInter06.0-200.04.0...4.20.25-0.87.032.0111.016.022.045.02.0
1881MeretNapoliFrosinone06.0-100.05.0...2.20.31-0.83.010.078.07.08.015.01.0
2021Rui PatricioRomaSalernitana16.0-200.04.0...3.60.30-2.46.013.047.06.012.015.00.0
2171OchoaSalernitanaRoma06.5-200.04.5...3.70.19-1.313.052.070.012.031.051.03.0
2291ConsigliSassuoloAtalanta16.0-200.04.0...3.30.19-1.711.046.095.010.034.046.02.0
2421Milinkovic-Savic V.TorinoCagliari16.5000.06.5...3.90.17-0.115.047.085.019.029.023.00.0
2571SilvestriUdineseJuventus15.0-300.02.0...3.80.31-0.211.031.070.010.021.033.00.0
2731Montipo'VeronaEmpoli06.5000.06.5...4.30.200.327.072.084.07.028.044.01.0
2872MussoAtalantaFrosinone06.0-200.04.0...2.10.210.111.034.088.018.018.028.02.0
3022SkorupskiBolognaJuventus06.5-100.05.5...3.00.33-1.011.031.063.014.019.045.02.0
3162RadunovicCagliariInter16.0-200.04.0...4.00.340.016.041.053.014.028.049.02.0
3302PerisanEmpoliMonza05.0-200.03.0...0.70.14-1.31.08.022.08.012.018.00.0
3462Christensen O.FiorentinaLecce16.0-200.04.0...3.20.18-2.814.031.078.07.08.015.00.0
3602CerofoliniFrosinoneAtalanta16.5-100.05.5...1.00.160.02.018.027.02.05.018.00.0
3732Martinez Jo.GenoaLazio06.0000.06.0...2.60.27-2.427.055.094.09.014.064.08.0
3872SommerInterCagliari06.0000.06.0...1.20.211.219.032.081.012.021.035.01.0
4022PerinJuventusBologna16.0-100.05.0...1.20.300.25.013.042.09.011.026.02.0
4162ProvedelLazioGenoa16.0-100.05.0...2.50.18-1.56.016.089.011.011.039.02.0
4302FalconeLecceFiorentina06.0-200.04.0...3.00.250.017.043.057.014.024.032.02.0
4442MaignanMilanTorino16.0-100.05.0...0.60.08-1.420.057.0170.023.020.043.012.0
4582Di GregorioMonzaEmpoli17.5000.07.5...4.20.25-0.87.032.0111.016.022.045.02.0
4712MeretNapoliSassuolo16.0000.06.0...2.20.31-0.83.010.078.07.08.015.01.0
4832Rui PatricioRomaVerona05.0-200.03.0...3.60.30-2.46.013.047.06.012.015.00.0
4992OchoaSalernitanaUdinese16.5-100.05.5...3.70.19-1.313.052.070.012.031.051.03.0
5132ConsigliSassuoloNapoli06.0-200.04.0...3.30.19-1.711.046.095.010.034.046.02.0
5292Milinkovic-Savic V.TorinoMilan05.5-400.51.0...3.90.17-0.115.047.085.019.029.023.00.0
5442SilvestriUdineseSalernitana05.5-100.04.5...3.80.31-0.211.031.070.010.021.033.00.0
5572Montipo'VeronaRoma16.0-100.05.0...4.30.200.327.072.084.07.028.044.01.0
5713MussoAtalantaMonza16.5000.06.5...2.10.210.111.034.088.018.018.028.02.0
5843SkorupskiBolognaCagliari16.0-100.05.0...3.00.33-1.011.031.063.014.019.045.02.0
5983RadunovicCagliariBologna04.5-200.02.5...4.00.340.016.041.053.014.028.049.02.0
6143BerishaEmpoliJuventus16.5-200.04.5...1.80.18-0.22.012.032.08.07.017.00.0
6293Christensen O.FiorentinaInter05.5-400.01.5...3.20.18-2.814.031.078.07.08.015.00.0
6453TuratiFrosinoneUdinese06.0000.06.0...3.60.260.65.019.061.017.010.025.02.0
6573Martinez Jo.GenoaTorino06.0-100.05.0...2.60.27-2.427.055.094.09.014.064.08.0
6723SommerInterFiorentina16.0000.06.0...1.20.211.219.032.081.012.021.035.01.0
6873PerinJuventusEmpoli06.0000.06.0...1.20.300.25.013.042.09.011.026.02.0
7013ProvedelLazioNapoli06.5-100.05.5...2.50.18-1.56.016.089.011.011.039.02.0
7153FalconeLecceSalernitana16.5000.06.5...3.00.250.017.043.057.014.024.032.02.0
7313MaignanMilanRoma06.0-100.05.0...0.60.08-1.420.057.0170.023.020.043.012.0
7463Di GregorioMonzaAtalanta06.0-300.03.0...4.20.25-0.87.032.0111.016.022.045.02.0
7623MeretNapoliLazio15.5-200.03.5...2.20.31-0.83.010.078.07.08.015.01.0
7763Rui PatricioRomaMilan16.0-200.04.0...3.60.30-2.46.013.047.06.012.015.00.0
7913OchoaSalernitanaLecce06.5-200.04.5...3.70.19-1.313.052.070.012.031.051.03.0
8063ConsigliSassuoloVerona15.5-100.04.5...3.30.19-1.711.046.095.010.034.046.02.0
8213Milinkovic-Savic V.TorinoGenoa16.0000.06.0...3.90.17-0.115.047.085.019.029.023.00.0
8363SilvestriUdineseFrosinone16.0000.06.0...3.80.31-0.211.031.070.010.021.033.00.0
8503Montipo'VeronaSassuolo06.5-300.03.5...4.30.200.327.072.084.07.028.044.01.0
\n", "

60 rows × 102 columns

\n", "
" ], "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 }