{ "cells": [ { "cell_type": "markdown", "id": "b22c6ee8", "metadata": {}, "source": [ "player_match_dataset_creation code for past seasons\n", "\n", "Select the season in season variable, and repeat the code if needed" ] }, { "cell_type": "code", "execution_count": 1, "id": "8a74364d", "metadata": {}, "outputs": [], "source": [ "season = '2223'" ] }, { "cell_type": "code", "execution_count": 2, "id": "8a6867a5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Peppe\\AppData\\Local\\Temp\\ipykernel_7752\\813865162.py:21: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " team_data['team_idx'][i] = team_data['team_idx'][i].split(' ')[-1]\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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
AtalantaAtalanta27.049.938.0418.03420.064.042.06.08.0...406.0438.050.01.08.02.02239.0483.0575.045.7
BolognaBologna27.054.738.0418.03420.052.041.06.06.0...451.0452.058.06.06.01.02005.0447.0369.054.8
CremoneseCremonese33.042.138.0418.03420.035.018.05.07.0...434.0432.072.04.07.01.02131.0730.0562.056.5
EmpoliEmpoli32.047.338.0418.03420.035.020.02.02.0...488.0422.075.04.02.02.01953.0519.0434.054.5
FiorentinaFiorentina30.056.138.0418.03420.051.037.04.06.0...542.0459.093.05.06.02.01910.0517.0588.046.8
VeronaHellas Verona36.041.238.0418.03420.029.022.01.01.0...410.0518.044.02.01.02.02125.0735.0810.047.6
InterInter25.055.738.0418.03420.068.050.04.05.0...436.0412.036.03.05.03.01767.0415.0500.045.4
JuventusJuventus29.049.638.0418.03420.056.041.03.06.0...427.0412.053.02.06.00.01893.0477.0486.049.5
LazioLazio24.052.138.0418.03420.059.037.06.08.0...500.0376.063.02.08.01.02041.0381.0399.048.8
LecceLecce29.041.338.0418.03420.031.021.04.06.0...461.0521.064.05.06.02.02030.0728.0567.056.2
MilanMilan30.055.638.0418.03420.061.049.05.05.0...462.0430.041.05.05.03.01972.0478.0561.046.0
MonzaMonza31.055.238.0418.03420.046.031.05.06.0...534.0466.055.01.06.02.01983.0441.0448.049.6
NapoliNapoli27.061.838.0418.03420.075.057.08.010.0...495.0363.050.01.010.02.01901.0403.0483.045.5
RomaRoma30.048.638.0418.03420.050.033.07.010.0...533.0417.022.02.09.00.01979.0429.0543.044.1
SalernitanaSalernitana30.044.938.0418.03420.046.034.02.02.0...478.0447.072.011.02.02.02106.0585.0528.052.6
SampdoriaSampdoria40.046.138.0418.03420.023.018.01.02.0...530.0480.090.08.02.01.02079.0636.0617.050.8
SassuoloSassuolo31.049.238.0418.03420.046.030.09.010.0...479.0376.0119.02.010.01.01928.0438.0375.053.9
SpeziaSpezia34.047.438.0418.03420.029.018.04.04.0...407.0478.076.05.04.02.02038.0570.0535.051.6
TorinoTorino28.053.238.0418.03420.041.034.02.02.0...413.0476.042.04.02.01.01940.0629.0590.051.6
UdineseUdinese30.048.038.0418.03420.046.041.01.02.0...505.0458.061.05.02.01.01933.0406.0477.046.0
\n", "

20 rows × 303 columns

\n", "
" ], "text/plain": [ " team team_players_used team_possession team_games \\\n", "team_idx \n", "Atalanta Atalanta 27.0 49.9 38.0 \n", "Bologna Bologna 27.0 54.7 38.0 \n", "Cremonese Cremonese 33.0 42.1 38.0 \n", "Empoli Empoli 32.0 47.3 38.0 \n", "Fiorentina Fiorentina 30.0 56.1 38.0 \n", "Verona Hellas Verona 36.0 41.2 38.0 \n", "Inter Inter 25.0 55.7 38.0 \n", "Juventus Juventus 29.0 49.6 38.0 \n", "Lazio Lazio 24.0 52.1 38.0 \n", "Lecce Lecce 29.0 41.3 38.0 \n", "Milan Milan 30.0 55.6 38.0 \n", "Monza Monza 31.0 55.2 38.0 \n", "Napoli Napoli 27.0 61.8 38.0 \n", "Roma Roma 30.0 48.6 38.0 \n", "Salernitana Salernitana 30.0 44.9 38.0 \n", "Sampdoria Sampdoria 40.0 46.1 38.0 \n", "Sassuolo Sassuolo 31.0 49.2 38.0 \n", "Spezia Spezia 34.0 47.4 38.0 \n", "Torino Torino 28.0 53.2 38.0 \n", "Udinese Udinese 30.0 48.0 38.0 \n", "\n", " team_games_starts team_minutes team_goals team_assists \\\n", "team_idx \n", "Atalanta 418.0 3420.0 64.0 42.0 \n", "Bologna 418.0 3420.0 52.0 41.0 \n", "Cremonese 418.0 3420.0 35.0 18.0 \n", "Empoli 418.0 3420.0 35.0 20.0 \n", "Fiorentina 418.0 3420.0 51.0 37.0 \n", "Verona 418.0 3420.0 29.0 22.0 \n", "Inter 418.0 3420.0 68.0 50.0 \n", "Juventus 418.0 3420.0 56.0 41.0 \n", "Lazio 418.0 3420.0 59.0 37.0 \n", "Lecce 418.0 3420.0 31.0 21.0 \n", "Milan 418.0 3420.0 61.0 49.0 \n", "Monza 418.0 3420.0 46.0 31.0 \n", "Napoli 418.0 3420.0 75.0 57.0 \n", "Roma 418.0 3420.0 50.0 33.0 \n", "Salernitana 418.0 3420.0 46.0 34.0 \n", "Sampdoria 418.0 3420.0 23.0 18.0 \n", "Sassuolo 418.0 3420.0 46.0 30.0 \n", "Spezia 418.0 3420.0 29.0 18.0 \n", "Torino 418.0 3420.0 41.0 34.0 \n", "Udinese 418.0 3420.0 46.0 41.0 \n", "\n", " team_pens_made team_pens_att ... vs_team_fouls \\\n", "team_idx ... \n", "Atalanta 6.0 8.0 ... 406.0 \n", "Bologna 6.0 6.0 ... 451.0 \n", "Cremonese 5.0 7.0 ... 434.0 \n", "Empoli 2.0 2.0 ... 488.0 \n", "Fiorentina 4.0 6.0 ... 542.0 \n", "Verona 1.0 1.0 ... 410.0 \n", "Inter 4.0 5.0 ... 436.0 \n", "Juventus 3.0 6.0 ... 427.0 \n", "Lazio 6.0 8.0 ... 500.0 \n", "Lecce 4.0 6.0 ... 461.0 \n", "Milan 5.0 5.0 ... 462.0 \n", "Monza 5.0 6.0 ... 534.0 \n", "Napoli 8.0 10.0 ... 495.0 \n", "Roma 7.0 10.0 ... 533.0 \n", "Salernitana 2.0 2.0 ... 478.0 \n", "Sampdoria 1.0 2.0 ... 530.0 \n", "Sassuolo 9.0 10.0 ... 479.0 \n", "Spezia 4.0 4.0 ... 407.0 \n", "Torino 2.0 2.0 ... 413.0 \n", "Udinese 1.0 2.0 ... 505.0 \n", "\n", " vs_team_fouled vs_team_offsides vs_team_pens_won \\\n", "team_idx \n", "Atalanta 438.0 50.0 1.0 \n", "Bologna 452.0 58.0 6.0 \n", "Cremonese 432.0 72.0 4.0 \n", "Empoli 422.0 75.0 4.0 \n", "Fiorentina 459.0 93.0 5.0 \n", "Verona 518.0 44.0 2.0 \n", "Inter 412.0 36.0 3.0 \n", "Juventus 412.0 53.0 2.0 \n", "Lazio 376.0 63.0 2.0 \n", "Lecce 521.0 64.0 5.0 \n", "Milan 430.0 41.0 5.0 \n", "Monza 466.0 55.0 1.0 \n", "Napoli 363.0 50.0 1.0 \n", "Roma 417.0 22.0 2.0 \n", "Salernitana 447.0 72.0 11.0 \n", "Sampdoria 480.0 90.0 8.0 \n", "Sassuolo 376.0 119.0 2.0 \n", "Spezia 478.0 76.0 5.0 \n", "Torino 476.0 42.0 4.0 \n", "Udinese 458.0 61.0 5.0 \n", "\n", " vs_team_pens_conceded vs_team_own_goals \\\n", "team_idx \n", "Atalanta 8.0 2.0 \n", "Bologna 6.0 1.0 \n", "Cremonese 7.0 1.0 \n", "Empoli 2.0 2.0 \n", "Fiorentina 6.0 2.0 \n", "Verona 1.0 2.0 \n", "Inter 5.0 3.0 \n", "Juventus 6.0 0.0 \n", "Lazio 8.0 1.0 \n", "Lecce 6.0 2.0 \n", "Milan 5.0 3.0 \n", "Monza 6.0 2.0 \n", "Napoli 10.0 2.0 \n", "Roma 9.0 0.0 \n", "Salernitana 2.0 2.0 \n", "Sampdoria 2.0 1.0 \n", "Sassuolo 10.0 1.0 \n", "Spezia 4.0 2.0 \n", "Torino 2.0 1.0 \n", "Udinese 2.0 1.0 \n", "\n", " vs_team_ball_recoveries vs_team_aerials_won \\\n", "team_idx \n", "Atalanta 2239.0 483.0 \n", "Bologna 2005.0 447.0 \n", "Cremonese 2131.0 730.0 \n", "Empoli 1953.0 519.0 \n", "Fiorentina 1910.0 517.0 \n", "Verona 2125.0 735.0 \n", "Inter 1767.0 415.0 \n", "Juventus 1893.0 477.0 \n", "Lazio 2041.0 381.0 \n", "Lecce 2030.0 728.0 \n", "Milan 1972.0 478.0 \n", "Monza 1983.0 441.0 \n", "Napoli 1901.0 403.0 \n", "Roma 1979.0 429.0 \n", "Salernitana 2106.0 585.0 \n", "Sampdoria 2079.0 636.0 \n", "Sassuolo 1928.0 438.0 \n", "Spezia 2038.0 570.0 \n", "Torino 1940.0 629.0 \n", "Udinese 1933.0 406.0 \n", "\n", " vs_team_aerials_lost vs_team_aerials_won_pct \n", "team_idx \n", "Atalanta 575.0 45.7 \n", "Bologna 369.0 54.8 \n", "Cremonese 562.0 56.5 \n", "Empoli 434.0 54.5 \n", "Fiorentina 588.0 46.8 \n", "Verona 810.0 47.6 \n", "Inter 500.0 45.4 \n", "Juventus 486.0 49.5 \n", "Lazio 399.0 48.8 \n", "Lecce 567.0 56.2 \n", "Milan 561.0 46.0 \n", "Monza 448.0 49.6 \n", "Napoli 483.0 45.5 \n", "Roma 543.0 44.1 \n", "Salernitana 528.0 52.6 \n", "Sampdoria 617.0 50.8 \n", "Sassuolo 375.0 53.9 \n", "Spezia 535.0 51.6 \n", "Torino 590.0 51.6 \n", "Udinese 477.0 46.0 \n", "\n", "[20 rows x 303 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "rcsv = pd.read_csv('fbref_data/season' + season + '/teams.csv') \n", "team = pd.DataFrame(rcsv)\n", "\n", "rcsv = pd.read_csv('fbref_data/season' + season + '/teams_vs.csv') \n", "vs_team = pd.DataFrame(rcsv)\n", "\n", "for i in range(1, team.shape[1]):\n", " team = team.rename(columns = {team.columns[i] : 'team_' + team.columns[i]})\n", " \n", "for i in range(1, vs_team.shape[1]):\n", " vs_team = vs_team.rename(columns = {vs_team.columns[i] : 'vs_team_' + vs_team.columns[i]})\n", " \n", "vs_team.pop('team')\n", "\n", "team_data = pd.concat([team, vs_team], axis = 1)\n", "\n", "team_data['team_idx'] = team_data['team']\n", "for i in range(team_data.shape[0]):\n", " team_data.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": 3, "id": "b6a3db98", "metadata": {}, "outputs": [], "source": [ "team_data.to_excel('mid_outputs/season' + season + '/team_data.xlsx')" ] }, { "cell_type": "code", "execution_count": 4, "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
Meret0572PNapoliMeretNaN6202519970...20.226.9335.011.03.339.01.1517.06.1764710.400043
Provedel12814PLazioProvedelNaN6322819940...33.333.2493.021.04.355.01.4516.56.2631580.409378
Vicario24964PEmpoliVicarioNaN6492519960...50.042.9606.034.05.622.00.7111.56.4032260.447562
Szczesny3453PJuventusSzczesnyNaN6443219900...43.138.3389.011.02.821.00.7614.76.1071430.309295
Falcone42134PLecceFalconeNaN6122719950...79.153.5534.023.04.342.01.1114.16.2500000.547122
..................................................................
De Luca5385512ASampdoriaLucaNaN1512419982...0.00.00.00.00.00.00.000.05.8712400.394770
Voelkerling Persson5395837ALeccePerssonNaN5651920039...0.00.00.00.00.00.00.000.06.1327480.474211
Montevago5406113ASampdoriaMontevagoNaN3651920036...0.00.00.00.00.00.00.000.05.7224820.229188
Krollis5416143ASpeziaKrollisNaN2882020014...0.00.00.00.00.00.00.000.06.3577310.405367
Vivaldo5426160AUdineseVivaldoNaN-1000...0.00.00.00.00.00.00.000.06.0066170.274006
\n", "

543 rows × 160 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 id r team surname initial fb_ID \\\n", "name \n", "Meret 0 572 P Napoli Meret NaN 620 \n", "Provedel 1 2814 P Lazio Provedel NaN 632 \n", "Vicario 2 4964 P Empoli Vicario NaN 649 \n", "Szczesny 3 453 P Juventus Szczesny NaN 644 \n", "Falcone 4 2134 P Lecce Falcone NaN 612 \n", "... ... ... .. ... ... ... ... \n", "De Luca 538 5512 A Sampdoria Luca NaN 151 \n", "Voelkerling Persson 539 5837 A Lecce Persson NaN 565 \n", "Montevago 540 6113 A Sampdoria Montevago NaN 365 \n", "Krollis 541 6143 A Spezia Krollis NaN 288 \n", "Vivaldo 542 6160 A Udinese Vivaldo NaN -1 \n", "\n", " age birth_year games ... gk_pct_goal_kicks_launched \\\n", "name ... \n", "Meret 25 1997 0 ... 20.2 \n", "Provedel 28 1994 0 ... 33.3 \n", "Vicario 25 1996 0 ... 50.0 \n", "Szczesny 32 1990 0 ... 43.1 \n", "Falcone 27 1995 0 ... 79.1 \n", "... ... ... ... ... ... \n", "De Luca 24 1998 2 ... 0.0 \n", "Voelkerling Persson 19 2003 9 ... 0.0 \n", "Montevago 19 2003 6 ... 0.0 \n", "Krollis 20 2001 4 ... 0.0 \n", "Vivaldo 0 0 0 ... 0.0 \n", "\n", " gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n", "name \n", "Meret 26.9 335.0 11.0 \n", "Provedel 33.2 493.0 21.0 \n", "Vicario 42.9 606.0 34.0 \n", "Szczesny 38.3 389.0 11.0 \n", "Falcone 53.5 534.0 23.0 \n", "... ... ... ... \n", "De Luca 0.0 0.0 0.0 \n", "Voelkerling Persson 0.0 0.0 0.0 \n", "Montevago 0.0 0.0 0.0 \n", "Krollis 0.0 0.0 0.0 \n", "Vivaldo 0.0 0.0 0.0 \n", "\n", " gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n", "name \n", "Meret 3.3 39.0 \n", "Provedel 4.3 55.0 \n", "Vicario 5.6 22.0 \n", "Szczesny 2.8 21.0 \n", "Falcone 4.3 42.0 \n", "... ... ... \n", "De Luca 0.0 0.0 \n", "Voelkerling Persson 0.0 0.0 \n", "Montevago 0.0 0.0 \n", "Krollis 0.0 0.0 \n", "Vivaldo 0.0 0.0 \n", "\n", " gk_def_actions_outside_pen_area_per90 \\\n", "name \n", "Meret 1.15 \n", "Provedel 1.45 \n", "Vicario 0.71 \n", "Szczesny 0.76 \n", "Falcone 1.11 \n", "... ... \n", "De Luca 0.00 \n", "Voelkerling Persson 0.00 \n", "Montevago 0.00 \n", "Krollis 0.00 \n", "Vivaldo 0.00 \n", "\n", " gk_avg_distance_def_actions vote_avg vote_std \n", "name \n", "Meret 17.0 6.176471 0.400043 \n", "Provedel 16.5 6.263158 0.409378 \n", "Vicario 11.5 6.403226 0.447562 \n", "Szczesny 14.7 6.107143 0.309295 \n", "Falcone 14.1 6.250000 0.547122 \n", "... ... ... ... \n", "De Luca 0.0 5.871240 0.394770 \n", "Voelkerling Persson 0.0 6.132748 0.474211 \n", "Montevago 0.0 5.722482 0.229188 \n", "Krollis 0.0 6.357731 0.405367 \n", "Vivaldo 0.0 6.006617 0.274006 \n", "\n", "[543 rows x 160 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rx = pd.read_excel('mid_outputs/season' + season + '/players_stats.xlsx', index_col = 3) \n", "players = pd.DataFrame(rx)\n", "\n", "players\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "f9f7f88c", "metadata": {}, "outputs": [], "source": [ "def player_match_data(player, pteam, oppteam):\n", " if(not(player in players.index)):\n", " return None\n", " \n", " pdata = players.loc[[player]]\n", " \n", " pteam_stats = team_data.loc[[pteam]].rename(index = {pteam : player})\n", " \n", " oppteam_stats = team_data.loc[[oppteam]].rename(index = {oppteam : player})\n", " \n", " oppteam_stats = oppteam_stats.rename(lambda x: 'opp_' + x, axis='columns')\n", " \n", " out = pd.concat([pdata, pteam_stats, oppteam_stats], axis = 1)\n", " \n", " return(out)\n", " " ] }, { "cell_type": "code", "execution_count": 6, "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
Immobile448785ALazioImmobileNaN26432199031...406.0438.050.01.08.02.02239.0483.0575.045.7
\n", "

1 rows × 766 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 id r team surname initial fb_ID age birth_year \\\n", "Immobile 448 785 A Lazio Immobile NaN 264 32 1990 \n", "\n", " games ... opp_vs_team_fouls opp_vs_team_fouled \\\n", "Immobile 31 ... 406.0 438.0 \n", "\n", " opp_vs_team_offsides opp_vs_team_pens_won \\\n", "Immobile 50.0 1.0 \n", "\n", " opp_vs_team_pens_conceded opp_vs_team_own_goals \\\n", "Immobile 8.0 2.0 \n", "\n", " opp_vs_team_ball_recoveries opp_vs_team_aerials_won \\\n", "Immobile 2239.0 483.0 \n", "\n", " opp_vs_team_aerials_lost opp_vs_team_aerials_won_pct \n", "Immobile 575.0 45.7 \n", "\n", "[1 rows x 766 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test = player_match_data('Immobile', 'Lazio', 'Atalanta')\n", "test.to_excel('tmp/playermatchdata.xlsx')\n", "\n", "test" ] }, { "cell_type": "code", "execution_count": 7, "id": "6b4c1b00", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Lazio'" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pteam = 'Lazio'\n", "pteam_stats = team_data.loc[[pteam]]\n", "pteam_stats.index[0]" ] }, { "cell_type": "code", "execution_count": 8, "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": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rx = pd.read_excel('tmp/playermatchdata_sel.xlsx', index_col = 0, header = None) \n", "\n", "out = list()\n", "\n", "for i in range(1, rx.shape[1]):\n", " if(rx[i][2] == \"x\"):\n", " out.append(rx[i][0])\n", " \n", "out" ] }, { "cell_type": "code", "execution_count": 9, "id": "47bc651f", "metadata": {}, "outputs": [], "source": [ "features_abs = ['r',\n", " 'games',\n", " 'games_starts', \n", " 'minutes',\n", " 'shots_on_target_pct',\n", " 'goals_per_shot',\n", " 'goals_per_shot_on_target',\n", " 'passes_pct',\n", " #'dribble_tackles_pct',\n", " #'dribbles_completed_pct',\n", " 'aerials_won_pct',\n", " 'team_possession',\n", " 'team_goals_assists_per90',\n", " 'team_goals_pens_per90',\n", " 'team_goals_assists_pens_per90',\n", " 'team_xg_per90',\n", " 'team_gk_goals_against_per90',\n", " 'team_gk_save_pct',\n", " 'team_gk_clean_sheets_pct',\n", " 'team_passes_pct',\n", " 'team_passes_pct_medium',\n", " 'team_passes_pct_long',\n", " 'team_sca_per90',\n", " 'team_gca_per90',\n", " #'team_dribble_tackles_pct',\n", " 'team_aerials_won_pct',\n", " 'vs_team_possession',\n", " 'vs_team_goals_per90',\n", " 'vs_team_assists_per90',\n", " 'vs_team_xg_per90',\n", " 'vs_team_gk_save_pct',\n", " 'vs_team_gk_clean_sheets_pct',\n", " 'vs_team_gk_pct_passes_launched',\n", " 'vs_team_gk_crosses_stopped_pct',\n", " 'vs_team_shots_on_target_per90',\n", " 'vs_team_passes_pct',\n", " 'vs_team_passes_pct_short',\n", " 'vs_team_passes_pct_medium',\n", " 'vs_team_passes_pct_long',\n", " 'vs_team_sca_per90',\n", " 'vs_team_gca_per90',\n", " #'vs_team_dribble_tackles_pct',\n", " #'vs_team_dribbles_completed_pct',\n", " 'vs_team_aerials_won_pct',\n", " 'opp_team_possession',\n", " 'opp_team_goals_assists_per90',\n", " 'opp_team_goals_pens_per90',\n", " 'opp_team_goals_assists_pens_per90',\n", " 'opp_team_xg_per90',\n", " 'opp_team_gk_goals_against_per90',\n", " 'opp_team_gk_save_pct',\n", " 'opp_team_gk_clean_sheets_pct',\n", " 'opp_team_passes_pct',\n", " 'opp_team_passes_pct_medium',\n", " 'opp_team_passes_pct_long',\n", " 'opp_team_sca_per90',\n", " 'opp_team_gca_per90',\n", " #'opp_team_dribble_tackles_pct',\n", " 'opp_team_aerials_won_pct',\n", " 'opp_vs_team_possession',\n", " 'opp_vs_team_goals_per90',\n", " 'opp_vs_team_assists_per90',\n", " 'opp_vs_team_xg_per90',\n", " 'opp_vs_team_gk_save_pct',\n", " 'opp_vs_team_gk_clean_sheets_pct',\n", " 'opp_vs_team_gk_pct_passes_launched',\n", " 'opp_vs_team_gk_crosses_stopped_pct',\n", " 'opp_vs_team_shots_on_target_per90',\n", " 'opp_vs_team_passes_pct',\n", " 'opp_vs_team_passes_pct_short',\n", " 'opp_vs_team_passes_pct_medium',\n", " 'opp_vs_team_passes_pct_long',\n", " 'opp_vs_team_sca_per90',\n", " 'opp_vs_team_gca_per90',\n", " #'opp_vs_team_dribble_tackles_pct',\n", " #'opp_vs_team_dribbles_completed_pct',\n", " 'opp_vs_team_aerials_won_pct',\n", " \n", " 'vote_avg',\n", " 'vote_std']\n", "\n", "features_rel = [\n", " 'goals',\n", " 'assists',\n", " 'cards_yellow',\n", " 'cards_red',\n", " 'xg',\n", " 'npxg',\n", " 'shots_on_target',\n", " 'passes_completed',\n", " 'passes_into_final_third',\n", " 'passes_into_penalty_area',\n", " 'progressive_passes',\n", " 'passes_live',\n", " 'passes_dead',\n", " 'through_balls',\n", " 'passes_switches',\n", " 'crosses',\n", " 'corner_kicks',\n", " #'dribble_tackles',\n", " #'dribbles_vs',\n", " #'dribbled_past',\n", " 'blocks',\n", " 'blocked_shots',\n", " 'blocked_passes',\n", " 'interceptions',\n", " 'clearances',\n", " 'errors',\n", " 'touches',\n", " 'touches_def_pen_area',\n", " 'touches_def_3rd',\n", " 'touches_mid_3rd',\n", " 'touches_att_3rd',\n", " 'touches_att_pen_area',\n", " 'touches_live_ball',\n", " #'dribbles_completed',\n", " #'dribbles',\n", " 'passes_received',\n", " 'miscontrols',\n", " 'dispossessed',\n", " 'fouls',\n", " 'fouled',\n", " 'aerials_won',\n", " 'aerials_lost',\n", " 'carries',\n", " 'progressive_carries',\n", " 'carries_into_final_third',\n", " 'carries_into_penalty_area']\n", "\n", "features_rel_gamecorr = [\n", " 'goals',\n", " 'assists',\n", " 'xg',\n", " 'npxg',\n", " 'cards_yellow',\n", " 'cards_red'\n", "]" ] }, { "cell_type": "code", "execution_count": 10, "id": "3f43d509", "metadata": {}, "outputs": [], "source": [ "def player_match_data_ext(player, pteam, oppteam):\n", " pdata = player_match_data(player, pteam, oppteam)\n", " \n", " if(not isinstance(pdata, pd.DataFrame)):\n", " return None\n", " \n", " out = pd.concat([pdata[features_abs], pdata[features_rel]], axis = 1)\n", " \n", " out[features_rel] = out[features_rel] / max(pdata['minutes'][0], 1)\n", " \n", " out[features_rel_gamecorr] = out[features_rel_gamecorr] * (pdata['minutes'][0] / max(pdata['games'][0], 1) / 90)\n", " \n", " return out\n", " " ] }, { "cell_type": "code", "execution_count": 11, "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
ImmobileA3127221941.70.110.2775.029.852.1...0.0283910.0099140.0094640.0108160.0063090.0148720.2266790.0180260.0094640.012168
\n", "

1 rows × 112 columns

\n", "
" ], "text/plain": [ " r games games_starts minutes shots_on_target_pct \\\n", "Immobile A 31 27 2219 41.7 \n", "\n", " goals_per_shot goals_per_shot_on_target passes_pct \\\n", "Immobile 0.11 0.27 75.0 \n", "\n", " aerials_won_pct team_possession ... miscontrols dispossessed \\\n", "Immobile 29.8 52.1 ... 0.028391 0.009914 \n", "\n", " fouls fouled aerials_won aerials_lost carries \\\n", "Immobile 0.009464 0.010816 0.006309 0.014872 0.226679 \n", "\n", " progressive_carries carries_into_final_third \\\n", "Immobile 0.018026 0.009464 \n", "\n", " carries_into_penalty_area \n", "Immobile 0.012168 \n", "\n", "[1 rows x 112 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test = player_match_data_ext('Immobile', 'Lazio', 'Atalanta')\n", "\n", "add_columns = test.columns\n", "\n", "test" ] }, { "cell_type": "code", "execution_count": 12, "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
01MussoAtalantaSampdoria06.0000.55.5
11ToloiAtalantaSampdoria07.0100.010.0
21DjimsitiAtalantaSampdoria06.0000.06.0
31HateboerAtalantaSampdoria06.0000.55.5
41OkoliAtalantaSampdoria05.5000.55.0
.................................
1080538Miguel VelosoVeronaMilan05.5000.05.5
1080638TamezeVeronaMilan05.5000.05.5
1080738Sulemana I.VeronaMilan06.0000.55.5
1080838DjuricVeronaMilan05.5000.05.5
1080938NgongeVeronaMilan05.5000.05.5
\n", "

10810 rows × 10 columns

\n", "
" ], "text/plain": [ " matchday player team oppteam home vote goals \\\n", "0 1 Musso Atalanta Sampdoria 0 6.0 0 \n", "1 1 Toloi Atalanta Sampdoria 0 7.0 1 \n", "2 1 Djimsiti Atalanta Sampdoria 0 6.0 0 \n", "3 1 Hateboer Atalanta Sampdoria 0 6.0 0 \n", "4 1 Okoli Atalanta Sampdoria 0 5.5 0 \n", "... ... ... ... ... ... ... ... \n", "10805 38 Miguel Veloso Verona Milan 0 5.5 0 \n", "10806 38 Tameze Verona Milan 0 5.5 0 \n", "10807 38 Sulemana I. Verona Milan 0 6.0 0 \n", "10808 38 Djuric Verona Milan 0 5.5 0 \n", "10809 38 Ngonge Verona Milan 0 5.5 0 \n", "\n", " assists cards_malus fantavote \n", "0 0 0.5 5.5 \n", "1 0 0.0 10.0 \n", "2 0 0.0 6.0 \n", "3 0 0.5 5.5 \n", "4 0 0.5 5.0 \n", "... ... ... ... \n", "10805 0 0.0 5.5 \n", "10806 0 0.0 5.5 \n", "10807 0 0.5 5.5 \n", "10808 0 0.0 5.5 \n", "10809 0 0.0 5.5 \n", "\n", "[10810 rows x 10 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "votes = pd.read_excel('mid_outputs/season' + season + '/players_votes.xlsx', index_col = 0)\n", "votes" ] }, { "cell_type": "code", "execution_count": 13, "id": "ec0bc56b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "100\n", "200\n", "300\n", "400\n", "500\n", "700\n", "800\n", "900\n", "1000\n", "1100\n", "1300\n", "1400\n", "1500\n", "1600\n", "1700\n", "1800\n", "1900\n", "2000\n", "2200\n", "2300\n", "2400\n", "2500\n", "2600\n", "2700\n", "2800\n", "2900\n", "3000\n", "3100\n", "3200\n", "3300\n", "3400\n", "3500\n", "3600\n", "3700\n", "3800\n", "3900\n", "4000\n", "4100\n", "4200\n", "4300\n", "4400\n", "4500\n", "4600\n", "4700\n", "4800\n", "4900\n", "5000\n", "5100\n", "5200\n", "5300\n", "5400\n", "5500\n", "5600\n", "5700\n", "5800\n", "5900\n", "6000\n", "6100\n", "6200\n", "6300\n", "6400\n", "6500\n", "6600\n", "6700\n", "6800\n", "6900\n", "7000\n", "7100\n", "7300\n", "7400\n", "7500\n", "7600\n", "7700\n", "7800\n", "7900\n", "8000\n", "8100\n", "8200\n", "8300\n", "8400\n", "8500\n", "8600\n", "8700\n", "8800\n", "8900\n", "9000\n", "9100\n", "9200\n", "9300\n", "9400\n", "9500\n", "9600\n", "9700\n", "9800\n", "9900\n", "10000\n", "10100\n", "10200\n", "10300\n", "10400\n", "10500\n", "10600\n", "10700\n", "10800\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": 14, "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
01MussoAtalantaSampdoria06.0000.55.5...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
11ToloiAtalantaSampdoria07.0100.010.0...0.0075430.0017960.0136490.0071840.0154450.0118530.3933190.0075430.0150860.000000
21DjimsitiAtalantaSampdoria06.0000.06.0...0.0055650.0027820.0083470.0044520.0328320.0233720.3895380.0038950.0038950.000556
31HateboerAtalantaSampdoria06.0000.55.5...0.0057270.0050110.0136010.0021470.0171800.0100210.2848960.0114530.0100210.000716
41OkoliAtalantaSampdoria05.5000.55.0...0.0125000.0052080.0156250.0083330.0447920.0260420.2760420.0041670.0052080.000000
..................................................................
1080538Miguel VelosoVeronaMilan05.5000.05.5...0.0060190.0060190.0171970.0068790.0120380.0120380.2656920.0146170.0111780.000860
1080638TamezeVeronaMilan05.5000.05.5...0.0128670.0112170.0105580.0102280.0089080.0102280.2352360.0105580.0112170.001320
1080738Sulemana I.VeronaMilan06.0000.55.5...0.0153610.0138250.0168970.0046080.0153610.0184330.2012290.0061440.0107530.000000
1080838DjuricVeronaMilan05.5000.05.5...0.0190340.0109810.0175700.0212300.1442170.0417280.1918010.0014640.0036600.002196
1080938NgongeVeronaMilan05.5000.05.5...0.0308720.0161070.0174500.0147650.0228190.0469800.2429530.0241610.0147650.012081
\n", "

10810 rows × 122 columns

\n", "
" ], "text/plain": [ " matchday player team oppteam home vote goals \\\n", "0 1 Musso Atalanta Sampdoria 0 6.0 0 \n", "1 1 Toloi Atalanta Sampdoria 0 7.0 1 \n", "2 1 Djimsiti Atalanta Sampdoria 0 6.0 0 \n", "3 1 Hateboer Atalanta Sampdoria 0 6.0 0 \n", "4 1 Okoli Atalanta Sampdoria 0 5.5 0 \n", "... ... ... ... ... ... ... ... \n", "10805 38 Miguel Veloso Verona Milan 0 5.5 0 \n", "10806 38 Tameze Verona Milan 0 5.5 0 \n", "10807 38 Sulemana I. Verona Milan 0 6.0 0 \n", "10808 38 Djuric Verona Milan 0 5.5 0 \n", "10809 38 Ngonge Verona Milan 0 5.5 0 \n", "\n", " assists cards_malus fantavote ... miscontrols dispossessed \\\n", "0 0 0.5 5.5 ... 0.000000 0.000000 \n", "1 0 0.0 10.0 ... 0.007543 0.001796 \n", "2 0 0.0 6.0 ... 0.005565 0.002782 \n", "3 0 0.5 5.5 ... 0.005727 0.005011 \n", "4 0 0.5 5.0 ... 0.012500 0.005208 \n", "... ... ... ... ... ... ... \n", "10805 0 0.0 5.5 ... 0.006019 0.006019 \n", "10806 0 0.0 5.5 ... 0.012867 0.011217 \n", "10807 0 0.5 5.5 ... 0.015361 0.013825 \n", "10808 0 0.0 5.5 ... 0.019034 0.010981 \n", "10809 0 0.0 5.5 ... 0.030872 0.016107 \n", "\n", " fouls fouled aerials_won aerials_lost carries \\\n", "0 0.000000 0.000000 0.000000 0.000000 0.000000 \n", "1 0.013649 0.007184 0.015445 0.011853 0.393319 \n", "2 0.008347 0.004452 0.032832 0.023372 0.389538 \n", "3 0.013601 0.002147 0.017180 0.010021 0.284896 \n", "4 0.015625 0.008333 0.044792 0.026042 0.276042 \n", "... ... ... ... ... ... \n", "10805 0.017197 0.006879 0.012038 0.012038 0.265692 \n", "10806 0.010558 0.010228 0.008908 0.010228 0.235236 \n", "10807 0.016897 0.004608 0.015361 0.018433 0.201229 \n", "10808 0.017570 0.021230 0.144217 0.041728 0.191801 \n", "10809 0.017450 0.014765 0.022819 0.046980 0.242953 \n", "\n", " progressive_carries carries_into_final_third \\\n", "0 0.000000 0.000000 \n", "1 0.007543 0.015086 \n", "2 0.003895 0.003895 \n", "3 0.011453 0.010021 \n", "4 0.004167 0.005208 \n", "... ... ... \n", "10805 0.014617 0.011178 \n", "10806 0.010558 0.011217 \n", "10807 0.006144 0.010753 \n", "10808 0.001464 0.003660 \n", "10809 0.024161 0.014765 \n", "\n", " carries_into_penalty_area \n", "0 0.000000 \n", "1 0.000000 \n", "2 0.000556 \n", "3 0.000716 \n", "4 0.000000 \n", "... ... \n", "10805 0.000860 \n", "10806 0.001320 \n", "10807 0.000000 \n", "10808 0.002196 \n", "10809 0.012081 \n", "\n", "[10810 rows x 122 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "db" ] }, { "cell_type": "code", "execution_count": 15, "id": "1db9f77f", "metadata": {}, "outputs": [], "source": [ "db = db.drop(db[db.r == 'P'].index) # remove goalkeepers\n", "db = db.drop(db[db.r != db.r].index) # remove non extisting players\n", "db = db.drop(db[db.r != db.r].index) # remove non extisting players\n", "db = db.drop(db[db.xg != db.xg].index) \n" ] }, { "cell_type": "code", "execution_count": 16, "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
11ToloiAtalantaSampdoria07.0100.010.0...0.0075430.0017960.0136490.0071840.0154450.0118530.3933190.0075430.0150860.000000
21DjimsitiAtalantaSampdoria06.0000.06.0...0.0055650.0027820.0083470.0044520.0328320.0233720.3895380.0038950.0038950.000556
31HateboerAtalantaSampdoria06.0000.55.5...0.0057270.0050110.0136010.0021470.0171800.0100210.2848960.0114530.0100210.000716
41OkoliAtalantaSampdoria05.5000.55.0...0.0125000.0052080.0156250.0083330.0447920.0260420.2760420.0041670.0052080.000000
51ZorteaAtalantaSampdoria06.0000.55.5...0.0182650.0076100.0167430.0091320.0091320.0121770.4200910.0365300.0289190.004566
..................................................................
1080538Miguel VelosoVeronaMilan05.5000.05.5...0.0060190.0060190.0171970.0068790.0120380.0120380.2656920.0146170.0111780.000860
1080638TamezeVeronaMilan05.5000.05.5...0.0128670.0112170.0105580.0102280.0089080.0102280.2352360.0105580.0112170.001320
1080738Sulemana I.VeronaMilan06.0000.55.5...0.0153610.0138250.0168970.0046080.0153610.0184330.2012290.0061440.0107530.000000
1080838DjuricVeronaMilan05.5000.05.5...0.0190340.0109810.0175700.0212300.1442170.0417280.1918010.0014640.0036600.002196
1080938NgongeVeronaMilan05.5000.05.5...0.0308720.0161070.0174500.0147650.0228190.0469800.2429530.0241610.0147650.012081
\n", "

9769 rows × 122 columns

\n", "
" ], "text/plain": [ " matchday player team oppteam home vote goals \\\n", "1 1 Toloi Atalanta Sampdoria 0 7.0 1 \n", "2 1 Djimsiti Atalanta Sampdoria 0 6.0 0 \n", "3 1 Hateboer Atalanta Sampdoria 0 6.0 0 \n", "4 1 Okoli Atalanta Sampdoria 0 5.5 0 \n", "5 1 Zortea Atalanta Sampdoria 0 6.0 0 \n", "... ... ... ... ... ... ... ... \n", "10805 38 Miguel Veloso Verona Milan 0 5.5 0 \n", "10806 38 Tameze Verona Milan 0 5.5 0 \n", "10807 38 Sulemana I. Verona Milan 0 6.0 0 \n", "10808 38 Djuric Verona Milan 0 5.5 0 \n", "10809 38 Ngonge Verona Milan 0 5.5 0 \n", "\n", " assists cards_malus fantavote ... miscontrols dispossessed \\\n", "1 0 0.0 10.0 ... 0.007543 0.001796 \n", "2 0 0.0 6.0 ... 0.005565 0.002782 \n", "3 0 0.5 5.5 ... 0.005727 0.005011 \n", "4 0 0.5 5.0 ... 0.012500 0.005208 \n", "5 0 0.5 5.5 ... 0.018265 0.007610 \n", "... ... ... ... ... ... ... \n", "10805 0 0.0 5.5 ... 0.006019 0.006019 \n", "10806 0 0.0 5.5 ... 0.012867 0.011217 \n", "10807 0 0.5 5.5 ... 0.015361 0.013825 \n", "10808 0 0.0 5.5 ... 0.019034 0.010981 \n", "10809 0 0.0 5.5 ... 0.030872 0.016107 \n", "\n", " fouls fouled aerials_won aerials_lost carries \\\n", "1 0.013649 0.007184 0.015445 0.011853 0.393319 \n", "2 0.008347 0.004452 0.032832 0.023372 0.389538 \n", "3 0.013601 0.002147 0.017180 0.010021 0.284896 \n", "4 0.015625 0.008333 0.044792 0.026042 0.276042 \n", "5 0.016743 0.009132 0.009132 0.012177 0.420091 \n", "... ... ... ... ... ... \n", "10805 0.017197 0.006879 0.012038 0.012038 0.265692 \n", "10806 0.010558 0.010228 0.008908 0.010228 0.235236 \n", "10807 0.016897 0.004608 0.015361 0.018433 0.201229 \n", "10808 0.017570 0.021230 0.144217 0.041728 0.191801 \n", "10809 0.017450 0.014765 0.022819 0.046980 0.242953 \n", "\n", " progressive_carries carries_into_final_third \\\n", "1 0.007543 0.015086 \n", "2 0.003895 0.003895 \n", "3 0.011453 0.010021 \n", "4 0.004167 0.005208 \n", "5 0.036530 0.028919 \n", "... ... ... \n", "10805 0.014617 0.011178 \n", "10806 0.010558 0.011217 \n", "10807 0.006144 0.010753 \n", "10808 0.001464 0.003660 \n", "10809 0.024161 0.014765 \n", "\n", " carries_into_penalty_area \n", "1 0.000000 \n", "2 0.000556 \n", "3 0.000716 \n", "4 0.000000 \n", "5 0.004566 \n", "... ... \n", "10805 0.000860 \n", "10806 0.001320 \n", "10807 0.000000 \n", "10808 0.002196 \n", "10809 0.012081 \n", "\n", "[9769 rows x 122 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "db" ] }, { "cell_type": "code", "execution_count": 17, "id": "df26c8e0", "metadata": {}, "outputs": [], "source": [ "db.to_excel('mid_outputs/season' + season + '/database_entries.xlsx')" ] }, { "cell_type": "markdown", "id": "626ba83b", "metadata": {}, "source": [ "Goalkeepers" ] }, { "cell_type": "code", "execution_count": 18, "id": "ba7b838c", "metadata": {}, "outputs": [], "source": [ "features_abs_gk = [\n", " 'gk_games',\n", " 'gk_games_starts',\n", " 'gk_minutes',\n", " 'gk_goals_against_per90', \n", " 'gk_save_pct',\n", " 'gk_clean_sheets_pct',\n", " 'gk_psxg_net_per90',\n", " 'gk_passes_pct_launched',\n", " 'gk_pct_passes_launched',\n", " 'gk_passes_length_avg',\n", " 'gk_pct_goal_kicks_launched',\n", " 'gk_goal_kick_length_avg',\n", " 'gk_crosses_stopped_pct',\n", " 'gk_def_actions_outside_pen_area_per90',\n", " 'gk_avg_distance_def_actions',\n", " \n", " 'team_possession',\n", " 'team_goals_assists_per90',\n", " 'team_goals_pens_per90',\n", " 'team_goals_assists_pens_per90',\n", " 'team_xg_per90',\n", " 'team_gk_goals_against_per90',\n", " 'team_gk_save_pct',\n", " 'team_gk_clean_sheets_pct',\n", " 'team_passes_pct',\n", " 'team_passes_pct_medium',\n", " 'team_passes_pct_long',\n", " 'team_sca_per90',\n", " 'team_gca_per90',\n", " #'team_dribble_tackles_pct',\n", " 'team_aerials_won_pct',\n", " 'vs_team_possession',\n", " 'vs_team_goals_per90',\n", " 'vs_team_assists_per90',\n", " 'vs_team_xg_per90',\n", " 'vs_team_gk_save_pct',\n", " 'vs_team_gk_clean_sheets_pct',\n", " 'vs_team_gk_pct_passes_launched',\n", " 'vs_team_gk_crosses_stopped_pct',\n", " 'vs_team_shots_on_target_per90',\n", " 'vs_team_passes_pct',\n", " 'vs_team_passes_pct_short',\n", " 'vs_team_passes_pct_medium',\n", " 'vs_team_passes_pct_long',\n", " 'vs_team_sca_per90',\n", " 'vs_team_gca_per90',\n", " #'vs_team_dribble_tackles_pct',\n", " #'vs_team_dribbles_completed_pct',\n", " 'vs_team_aerials_won_pct',\n", " 'opp_team_possession',\n", " 'opp_team_goals_assists_per90',\n", " 'opp_team_goals_pens_per90',\n", " 'opp_team_goals_assists_pens_per90',\n", " 'opp_team_xg_per90',\n", " 'opp_team_gk_goals_against_per90',\n", " 'opp_team_gk_save_pct',\n", " 'opp_team_gk_clean_sheets_pct',\n", " 'opp_team_passes_pct',\n", " 'opp_team_passes_pct_medium',\n", " 'opp_team_passes_pct_long',\n", " 'opp_team_sca_per90',\n", " 'opp_team_gca_per90',\n", " #'opp_team_dribble_tackles_pct',\n", " 'opp_team_aerials_won_pct',\n", " 'opp_vs_team_possession',\n", " 'opp_vs_team_goals_per90',\n", " 'opp_vs_team_assists_per90',\n", " 'opp_vs_team_xg_per90',\n", " 'opp_vs_team_gk_save_pct',\n", " 'opp_vs_team_gk_clean_sheets_pct',\n", " 'opp_vs_team_gk_pct_passes_launched',\n", " 'opp_vs_team_gk_crosses_stopped_pct',\n", " 'opp_vs_team_shots_on_target_per90',\n", " 'opp_vs_team_passes_pct',\n", " 'opp_vs_team_passes_pct_short',\n", " 'opp_vs_team_passes_pct_medium',\n", " 'opp_vs_team_passes_pct_long',\n", " 'opp_vs_team_sca_per90',\n", " 'opp_vs_team_gca_per90',\n", " #'opp_vs_team_dribble_tackles_pct',\n", " #'opp_vs_team_dribbles_completed_pct',\n", " 'opp_vs_team_aerials_won_pct',\n", " \n", " 'vote_avg',\n", " 'vote_std']\n", "\n", "features_rel_gk = [\n", " 'gk_shots_on_target_against',\n", " 'gk_saves',\n", " 'gk_free_kick_goals_against',\n", " 'gk_corner_kick_goals_against',\n", " 'gk_own_goals_against',\n", " 'gk_psxg',\n", " 'gk_psnpxg_per_shot_on_target_against',\n", " 'gk_psxg_net',\n", " 'gk_passes_completed_launched',\n", " 'gk_passes_launched',\n", " 'gk_passes',\n", " 'gk_passes_throws',\n", " 'gk_goal_kicks',\n", " 'gk_crosses',\n", " 'gk_crosses_stopped',\n", "]" ] }, { "cell_type": "code", "execution_count": 19, "id": "1d2682b9", "metadata": {}, "outputs": [], "source": [ "def player_match_data_ext_gk(player, pteam, oppteam):\n", " pdata = player_match_data(player, pteam, oppteam)\n", " \n", " if(not isinstance(pdata, pd.DataFrame)):\n", " return None\n", " \n", " if(pdata['gk_games'][0] <= 0):\n", " return None\n", " \n", " out = pd.concat([pdata[features_abs_gk], pdata[features_rel_gk]], axis = 1)\n", " \n", " out[features_rel_gk] = out[features_rel_gk] / max(pdata['minutes'][0], 1)\n", "\n", " return out\n", " " ] }, { "cell_type": "code", "execution_count": 20, "id": "bc6e9d52", "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
Consigli353531501.5755.625.7-0.4140.430.433.3...38.50.31-14.5176.0436.01140.0187.0285.0467.028.0
\n", "

1 rows × 92 columns

\n", "
" ], "text/plain": [ " gk_games gk_games_starts gk_minutes gk_goals_against_per90 \\\n", "Consigli 35 35 3150 1.57 \n", "\n", " gk_save_pct gk_clean_sheets_pct gk_psxg_net_per90 \\\n", "Consigli 55.6 25.7 -0.41 \n", "\n", " gk_passes_pct_launched gk_pct_passes_launched \\\n", "Consigli 40.4 30.4 \n", "\n", " gk_passes_length_avg ... gk_psxg \\\n", "Consigli 33.3 ... 38.5 \n", "\n", " gk_psnpxg_per_shot_on_target_against gk_psxg_net \\\n", "Consigli 0.31 -14.5 \n", "\n", " gk_passes_completed_launched gk_passes_launched gk_passes \\\n", "Consigli 176.0 436.0 1140.0 \n", "\n", " gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n", "Consigli 187.0 285.0 467.0 28.0 \n", "\n", "[1 rows x 92 columns]" ] }, "execution_count": 20, "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": 21, "id": "6f08e718", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "100\n", "200\n", "300\n", "400\n", "500\n", "600\n", "700\n", "800\n", "900\n", "1000\n", "1100\n", "1200\n", "1300\n", "1400\n", "1500\n", "1600\n", "1700\n", "1800\n", "1900\n", "2000\n", "2100\n", "2200\n", "2300\n", "2400\n", "2500\n", "2600\n", "2700\n", "2800\n", "2900\n", "3000\n", "3100\n", "3200\n", "3300\n", "3400\n", "3500\n", "3600\n", "3700\n", "3800\n", "3900\n", "4000\n", "4100\n", "4200\n", "4300\n", "4400\n", "4500\n", "4600\n", "4700\n", "4800\n", "4900\n", "5000\n", "5100\n", "5200\n", "5300\n", "5400\n", "5500\n", "5600\n", "5700\n", "5800\n", "5900\n", "6000\n", "6100\n", "6200\n", "6300\n", "6400\n", "6500\n", "6600\n", "6700\n", "6800\n", "6900\n", "7000\n", "7100\n", "7200\n", "7300\n", "7400\n", "7500\n", "7600\n", "7700\n", "7800\n", "7900\n", "8000\n", "8100\n", "8200\n", "8300\n", "8400\n", "8500\n", "8600\n", "8700\n", "8800\n", "8900\n", "9000\n", "9100\n", "9200\n", "9300\n", "9400\n", "9500\n", "9600\n", "9700\n", "9800\n", "9900\n", "10000\n", "10100\n", "10200\n", "10300\n", "10400\n", "10500\n", "10600\n", "10700\n", "10800\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": 22, "id": "2b540670", "metadata": {}, "outputs": [], "source": [ "db_gk = db_gk.drop(db_gk[db_gk.gk_games != db_gk.gk_games].index) # remove non extisting players" ] }, { "cell_type": "code", "execution_count": 23, "id": "35495581", "metadata": {}, "outputs": [], "source": [ "db_gk.to_excel('mid_outputs/season' + season + '/database_entries_gk.xlsx')" ] }, { "cell_type": "code", "execution_count": null, "id": "43b85925", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" } }, "nbformat": 4, "nbformat_minor": 5 }