{ "cells": [ { "cell_type": "markdown", "id": "d065632b", "metadata": {}, "source": [ "Scraping from http://fbref.com\n", "\n", "Data:\n", "- outfield players stats\n", "- goalkeepers stats\n", "- team stats (of and against)\n", "\n", "Original code by parth1902:\n", "https://github.com/parth1902/Scrape-FBref-data" ] }, { "cell_type": "code", "execution_count": 1, "id": "3b8d2e7f", "metadata": {}, "outputs": [], "source": [ "import requests\n", "from bs4 import BeautifulSoup\n", "import pandas as pd\n", "import numpy as np\n", "import re\n", "import sys, getopt\n", "import csv\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "ab920c85", "metadata": {}, "outputs": [], "source": [ "#standard(stats)\n", "stats = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"games\",\"games_starts\",\"minutes\",\"goals\",\"assists\",\"pens_made\",\"pens_att\",\"cards_yellow\",\"cards_red\",\"goals_per90\",\"assists_per90\",\"goals_assists_per90\",\"goals_pens_per90\",\"goals_assists_pens_per90\",\"xg\",\"npxg\",\"xa\",\"xg_per90\",\"xa_per90\",\"xg_xa_per90\",\"npxg_per90\",\"npxg_xa_per90\"]\n", "stats3 = [\"players_used\",\"possession\",\"games\",\"games_starts\",\"minutes\",\"goals\",\"assists\",\"pens_made\",\"pens_att\",\"cards_yellow\",\"cards_red\",\"goals_per90\",\"assists_per90\",\"goals_assists_per90\",\"goals_pens_per90\",\"goals_assists_pens_per90\",\"xg\",\"npxg\",\"xa\",\"xg_per90\",\"xa_per90\",\"xg_xa_per90\",\"npxg_per90\",\"npxg_xa_per90\"] \n", "#goalkeeping(keepers)\n", "keepers = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"gk_games\",\"gk_games_starts\",\"gk_minutes\",\"gk_goals_against\",\"gk_goals_against_per90\",\"gk_shots_on_target_against\",\"gk_saves\",\"gk_save_pct\",\"gk_wins\",\"gk_ties\",\"gk_losses\",\"gk_clean_sheets\",\"gk_clean_sheets_pct\",\"gk_pens_att\",\"gk_pens_allowed\",\"gk_pens_saved\",\"gk_pens_missed\"]\n", "keepers3 = [\"players_used\",\"gk_games\",\"gk_games_starts\",\"gk_minutes\",\"gk_goals_against\",\"gk_goals_against_per90\",\"gk_shots_on_target_against\",\"gk_saves\",\"gk_save_pct\",\"gk_wins\",\"gk_ties\",\"gk_losses\",\"gk_clean_sheets\",\"gk_clean_sheets_pct\",\"gk_pens_att\",\"gk_pens_allowed\",\"gk_pens_saved\",\"gk_pens_missed\"]\n", "#advance goalkeeping(keepersadv)\n", "keepersadv = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"gk_goals_against\",\"gk_pens_allowed\",\"gk_free_kick_goals_against\",\"gk_corner_kick_goals_against\",\"gk_own_goals_against\",\"gk_psxg\",\"gk_psnpxg_per_shot_on_target_against\",\"gk_psxg_net\",\"gk_psxg_net_per90\",\"gk_passes_completed_launched\",\"gk_passes_launched\",\"gk_passes_pct_launched\",\"gk_passes\",\"gk_passes_throws\",\"gk_pct_passes_launched\",\"gk_passes_length_avg\",\"gk_goal_kicks\",\"gk_pct_goal_kicks_launched\",\"gk_goal_kick_length_avg\",\"gk_crosses\",\"gk_crosses_stopped\",\"gk_crosses_stopped_pct\",\"gk_def_actions_outside_pen_area\",\"gk_def_actions_outside_pen_area_per90\",\"gk_avg_distance_def_actions\"]\n", "keepersadv2 = [\"minutes_90s\",\"gk_goals_against\",\"gk_pens_allowed\",\"gk_free_kick_goals_against\",\"gk_corner_kick_goals_against\",\"gk_own_goals_against\",\"gk_psxg\",\"gk_psnpxg_per_shot_on_target_against\",\"gk_psxg_net\",\"gk_psxg_net_per90\",\"gk_passes_completed_launched\",\"gk_passes_launched\",\"gk_passes_pct_launched\",\"gk_passes\",\"gk_passes_throws\",\"gk_pct_passes_launched\",\"gk_passes_length_avg\",\"gk_goal_kicks\",\"gk_pct_goal_kicks_launched\",\"gk_goal_kick_length_avg\",\"gk_crosses\",\"gk_crosses_stopped\",\"gk_crosses_stopped_pct\",\"gk_def_actions_outside_pen_area\",\"gk_def_actions_outside_pen_area_per90\",\"gk_avg_distance_def_actions\"]\n", "#shooting(shooting)\n", "shooting = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"goals\",\"pens_made\",\"pens_att\",\"shots_total\",\"shots_on_target\",\"shots_free_kicks\",\"shots_on_target_pct\",\"shots_total_per90\",\"shots_on_target_per90\",\"goals_per_shot\",\"goals_per_shot_on_target\",\"xg\",\"npxg\",\"npxg_per_shot\",\"xg_net\",\"npxg_net\"]\n", "shooting2 = [\"minutes_90s\",\"goals\",\"pens_made\",\"pens_att\",\"shots_total\",\"shots_on_target\",\"shots_free_kicks\",\"shots_on_target_pct\",\"shots_total_per90\",\"shots_on_target_per90\",\"goals_per_shot\",\"goals_per_shot_on_target\",\"xg\",\"npxg\",\"npxg_per_shot\",\"xg_net\",\"npxg_net\"]\n", "shooting3 = [\"goals\",\"pens_made\",\"pens_att\",\"shots_total\",\"shots_on_target\",\"shots_free_kicks\",\"shots_on_target_pct\",\"shots_total_per90\",\"shots_on_target_per90\",\"goals_per_shot\",\"goals_per_shot_on_target\",\"xg\",\"npxg\",\"npxg_per_shot\",\"xg_net\",\"npxg_net\"]\n", "#passing(passing)\n", "passing = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"passes_completed\",\"passes\",\"passes_pct\",\"passes_total_distance\",\"passes_progressive_distance\",\"passes_completed_short\",\"passes_short\",\"passes_pct_short\",\"passes_completed_medium\",\"passes_medium\",\"passes_pct_medium\",\"passes_completed_long\",\"passes_long\",\"passes_pct_long\",\"assists\",\"xa\",\"xa_net\",\"assisted_shots\",\"passes_into_final_third\",\"passes_into_penalty_area\",\"crosses_into_penalty_area\",\"progressive_passes\"]\n", "passing2 = [\"passes_completed\",\"passes\",\"passes_pct\",\"passes_total_distance\",\"passes_progressive_distance\",\"passes_completed_short\",\"passes_short\",\"passes_pct_short\",\"passes_completed_medium\",\"passes_medium\",\"passes_pct_medium\",\"passes_completed_long\",\"passes_long\",\"passes_pct_long\",\"assists\",\"xa\",\"xa_net\",\"assisted_shots\",\"passes_into_final_third\",\"passes_into_penalty_area\",\"crosses_into_penalty_area\",\"progressive_passes\"]\n", "#passtypes(passing_types)\n", "passing_types = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"passes\",\"passes_live\",\"passes_dead\",\"passes_free_kicks\",\"through_balls\",\"passes_pressure\",\"passes_switches\",\"crosses\",\"corner_kicks\",\"corner_kicks_in\",\"corner_kicks_out\",\"corner_kicks_straight\",\"passes_ground\",\"passes_low\",\"passes_high\",\"passes_left_foot\",\"passes_right_foot\",\"passes_head\",\"throw_ins\",\"passes_other_body\",\"passes_completed\",\"passes_offsides\",\"passes_oob\",\"passes_intercepted\",\"passes_blocked\"]\n", "passing_types2 = [\"passes\",\"passes_live\",\"passes_dead\",\"passes_free_kicks\",\"through_balls\",\"passes_pressure\",\"passes_switches\",\"crosses\",\"corner_kicks\",\"corner_kicks_in\",\"corner_kicks_out\",\"corner_kicks_straight\",\"passes_ground\",\"passes_low\",\"passes_high\",\"passes_left_foot\",\"passes_right_foot\",\"passes_head\",\"throw_ins\",\"passes_other_body\",\"passes_completed\",\"passes_offsides\",\"passes_oob\",\"passes_intercepted\",\"passes_blocked\"]\n", "#goal and shot creation(gca)\n", "gca = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"sca\",\"sca_per90\",\"sca_passes_live\",\"sca_passes_dead\",\"sca_dribbles\",\"sca_shots\",\"sca_fouled\",\"gca\",\"gca_per90\",\"gca_passes_live\",\"gca_passes_dead\",\"gca_dribbles\",\"gca_shots\",\"gca_fouled\",\"gca_defense\"]\n", "gca2 = [\"sca\",\"sca_per90\",\"sca_passes_live\",\"sca_passes_dead\",\"sca_dribbles\",\"sca_shots\",\"sca_fouled\",\"gca\",\"gca_per90\",\"gca_passes_live\",\"gca_passes_dead\",\"gca_dribbles\",\"gca_shots\",\"gca_fouled\",\"gca_defense\"]\n", "#defensive actions(defense)\n", "defense = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"tackles\",\"tackles_won\",\"tackles_def_3rd\",\"tackles_mid_3rd\",\"tackles_att_3rd\",\"dribble_tackles\",\"dribbles_vs\",\"dribble_tackles_pct\",\"dribbled_past\",\"pressures\",\"pressure_regains\",\"pressure_regain_pct\",\"pressures_def_3rd\",\"pressures_mid_3rd\",\"pressures_att_3rd\",\"blocks\",\"blocked_shots\",\"blocked_shots_saves\",\"blocked_passes\",\"interceptions\",\"clearances\",\"errors\"]\n", "defense2 = [\"tackles\",\"tackles_won\",\"tackles_def_3rd\",\"tackles_mid_3rd\",\"tackles_att_3rd\",\"dribble_tackles\",\"dribbles_vs\",\"dribble_tackles_pct\",\"dribbled_past\",\"pressures\",\"pressure_regains\",\"pressure_regain_pct\",\"pressures_def_3rd\",\"pressures_mid_3rd\",\"pressures_att_3rd\",\"blocks\",\"blocked_shots\",\"blocked_shots_saves\",\"blocked_passes\",\"interceptions\",\"clearances\",\"errors\"]\n", "#possession(possession)\n", "possession = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"touches\",\"touches_def_pen_area\",\"touches_def_3rd\",\"touches_mid_3rd\",\"touches_att_3rd\",\"touches_att_pen_area\",\"touches_live_ball\",\"dribbles_completed\",\"dribbles\",\"dribbles_completed_pct\",\"players_dribbled_past\",\"nutmegs\",\"carries\",\"carry_distance\",\"carry_progressive_distance\",\"progressive_carries\",\"carries_into_final_third\",\"carries_into_penalty_area\",\"pass_targets\",\"passes_received\",\"passes_received_pct\",\"miscontrols\",\"dispossessed\"]\n", "possession2 = [\"touches\",\"touches_def_pen_area\",\"touches_def_3rd\",\"touches_mid_3rd\",\"touches_att_3rd\",\"touches_att_pen_area\",\"touches_live_ball\",\"dribbles_completed\",\"dribbles\",\"dribbles_completed_pct\",\"players_dribbled_past\",\"nutmegs\",\"carries\",\"carry_distance\",\"carry_progressive_distance\",\"progressive_carries\",\"carries_into_final_third\",\"carries_into_penalty_area\",\"pass_targets\",\"passes_received\",\"passes_received_pct\",\"miscontrols\",\"dispossessed\"]\n", "#playingtime(playingtime)\n", "playingtime = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"games\",\"minutes\",\"minutes_per_game\",\"minutes_pct\",\"games_starts\",\"minutes_per_start\",\"games_subs\",\"minutes_per_sub\",\"unused_subs\",\"points_per_match\",\"on_goals_for\",\"on_goals_against\",\"plus_minus\",\"plus_minus_per90\",\"plus_minus_wowy\",\"on_xg_for\",\"on_xg_against\",\"xg_plus_minus\",\"xg_plus_minus_per90\",\"xg_plus_minus_wowy\"]\n", "playingtime2 = [\"games\",\"minutes\",\"minutes_per_game\",\"minutes_pct\",\"games_starts\",\"minutes_per_start\",\"games_subs\",\"minutes_per_sub\",\"unused_subs\",\"points_per_match\",\"on_goals_for\",\"on_goals_against\",\"plus_minus\",\"plus_minus_per90\",\"plus_minus_wowy\",\"on_xg_for\",\"on_xg_against\",\"xg_plus_minus\",\"xg_plus_minus_per90\",\"xg_plus_minus_wowy\"]\n", "#miscallaneous(misc)\n", "misc = [\"player\",\"nationality\",\"position\",\"team\",\"age\",\"birth_year\",\"minutes_90s\",\"cards_yellow\",\"cards_red\",\"cards_yellow_red\",\"fouls\",\"fouled\",\"offsides\",\"crosses\",\"interceptions\",\"tackles_won\",\"pens_won\",\"pens_conceded\",\"own_goals\",\"ball_recoveries\",\"aerials_won\",\"aerials_lost\",\"aerials_won_pct\"]\n", "misc2 = [\"cards_yellow\",\"cards_red\",\"cards_yellow_red\",\"fouls\",\"fouled\",\"offsides\",\"crosses\",\"interceptions\",\"tackles_won\",\"pens_won\",\"pens_conceded\",\"own_goals\",\"ball_recoveries\",\"aerials_won\",\"aerials_lost\",\"aerials_won_pct\"]\n", "\n", "def get_tables(url,text):\n", " headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}\n", "\n", " res = requests.get(url, headers = headers)\n", " ## The next two lines get around the issue with comments breaking the parsing.\n", " comm = re.compile(\"\")\n", " soup = BeautifulSoup(comm.sub(\"\",res.text),'lxml')\n", " all_tables = soup.findAll(\"tbody\")\n", " \n", " team_table = all_tables[0]\n", " team_vs_table = all_tables[1]\n", " player_table = all_tables[2]\n", " if text == 'for':\n", " return player_table, team_table\n", " if text == 'vs':\n", " return player_table, team_vs_table\n", "\n", "def get_frame(features, player_table):\n", " pre_df_player = dict()\n", " features_wanted_player = features\n", " rows_player = player_table.find_all('tr')\n", " for row in rows_player:\n", " if(row.find('th',{\"scope\":\"row\"}) != None):\n", " \n", " for f in features_wanted_player:\n", " cell = row.find(\"td\",{\"data-stat\": f})\n", " if(cell == None):\n", " continue\n", " a = cell.text.strip().encode()\n", " text=a.decode(\"utf-8\")\n", " if(text == ''):\n", " text = '0'\n", " if((f!='player')&(f!='nationality')&(f!='position')&(f!='squad')&(f!='age')&(f!='birth_year')&(f!='team')):\n", " text = float(text.replace(',','')) \n", " if f in pre_df_player:\n", " pre_df_player[f].append(text)\n", " else:\n", " pre_df_player[f] = [text]\n", " df_player = pd.DataFrame.from_dict(pre_df_player)\n", " return df_player\n", "\n", "def get_frame_team(features, team_table):\n", " pre_df_squad = dict()\n", " #Note: features does not contain squad name, it requires special treatment\n", " features_wanted_squad = features\n", " rows_squad = team_table.find_all('tr')\n", " for row in rows_squad:\n", " if(row.find('th',{\"scope\":\"row\"}) != None):\n", " name = row.find('th',{\"data-stat\":\"team\"}).text.strip().encode().decode(\"utf-8\")\n", " if 'team' in pre_df_squad:\n", " pre_df_squad['team'].append(name)\n", " else:\n", " pre_df_squad['team'] = [name]\n", " for f in features_wanted_squad:\n", " cell = row.find(\"td\",{\"data-stat\": f})\n", " if(cell == None):\n", " continue\n", " a = cell.text.strip().encode()\n", " text=a.decode(\"utf-8\")\n", " if(text == ''):\n", " text = '0'\n", " if((f!='player')&(f!='nationality')&(f!='position')&(f!='squad')&(f!='age')&(f!='birth_year')&(f!='team')):\n", " text = float(text.replace(',',''))\n", " if f in pre_df_squad:\n", " pre_df_squad[f].append(text)\n", " else:\n", " pre_df_squad[f] = [text]\n", " df_squad = pd.DataFrame.from_dict(pre_df_squad)\n", " return df_squad\n", "\n", "def get_frame_team_2(features, team_table):\n", " pre_df_squad = dict()\n", " #Note: features does not contain squad name, it requires special treatment\n", " features_wanted_squad = features\n", " rows_squad = team_table.find_all('tr')\n", " for row in rows_squad:\n", " if(row.find('th',{\"scope\":\"row\"}) != None):\n", " name = row.find('th',{\"data-stat\":\"squad\"}).text.strip().encode().decode(\"utf-8\")\n", " if 'squad' in pre_df_squad:\n", " pre_df_squad['squad'].append(name)\n", " else:\n", " pre_df_squad['squad'] = [name]\n", " for f in features_wanted_squad:\n", " cell = row.find(\"td\",{\"data-stat\": f})\n", " a = cell.text.strip().encode()\n", " text=a.decode(\"utf-8\")\n", " if(text == ''):\n", " text = '0'\n", " if((f!='player')&(f!='nationality')&(f!='position')&(f!='squad')&(f!='age')&(f!='birth_year')&(f!='team')):\n", " text = float(text.replace(',',''))\n", " print(f)\n", " if f in pre_df_squad:\n", " pre_df_squad[f].append(text)\n", " else:\n", " pre_df_squad[f] = [text]\n", " df_squad = pd.DataFrame.from_dict(pre_df_squad)\n", " return df_squad\n", "\n", "def frame_for_category(category,top,end,features):\n", " url = (top + category + end)\n", " player_table, team_table = get_tables(url,'for')\n", " df_player = get_frame(features, player_table)\n", " return df_player\n", "\n", "def frame_for_category_team(category,top,end,features,text):\n", " url = (top + category + end)\n", " player_table, team_table = get_tables(url,text)\n", " df_team = get_frame_team(features, team_table)\n", " return df_team\n", "\n", "\n", "\n", "\n", "#Function to get the player data for outfield player, includes all categories - standard stats, shooting\n", "#passing, passing types, goal and shot creation, defensive actions, possession, and miscallaneous\n", "def get_outfield_data(top, end):\n", " df1 = frame_for_category('stats',top,end,stats)\n", " df2 = frame_for_category('shooting',top,end,shooting2)\n", " df3 = frame_for_category('passing',top,end,passing2)\n", " df4 = frame_for_category('passing_types',top,end,passing_types2)\n", " df5 = frame_for_category('gca',top,end,gca2)\n", " df6 = frame_for_category('defense',top,end,defense2)\n", " df7 = frame_for_category('possession',top,end,possession2)\n", " df8 = frame_for_category('misc',top,end,misc2)\n", " df = pd.concat([df1, df2, df3, df4, df5, df6, df7, df8], axis=1)\n", " df = df.loc[:,~df.columns.duplicated()]\n", " return df\n", "\n", "\n", "#Function to get keeping and advance goalkeeping data\n", "def get_keeper_data(top,end):\n", " df1 = frame_for_category('keepers',top,end,keepers)\n", " df2 = frame_for_category('keepersadv',top,end,keepersadv2)\n", " df = pd.concat([df1, df2], axis=1)\n", " df = df.loc[:,~df.columns.duplicated()]\n", " return df\n", "\n", "\n", "\n", "#Function to get team-wise data accross all categories as mentioned above\n", "def get_team_data(top,end,text):\n", " df1 = frame_for_category_team('stats',top,end,stats3,text)\n", " df2 = frame_for_category_team('keepers',top,end,keepers3,text)\n", " df3 = frame_for_category_team('keepersadv',top,end,keepersadv2,text)\n", " df4 = frame_for_category_team('shooting',top,end,shooting3,text)\n", " df5 = frame_for_category_team('passing',top,end,passing2,text)\n", " df6 = frame_for_category_team('passing_types',top,end,passing_types2,text)\n", " df7 = frame_for_category_team('gca',top,end,gca2,text)\n", " df8 = frame_for_category_team('defense',top,end,defense2,text)\n", " df9 = frame_for_category_team('possession',top,end,possession2,text)\n", " df10 = frame_for_category_team('misc',top,end,misc2,text)\n", " df = pd.concat([df1, df2, df3, df4, df5, df6, df7, df8, df9, df10], axis=1)\n", " df = df.loc[:,~df.columns.duplicated()]\n", " return df" ] }, { "cell_type": "code", "execution_count": 3, "id": "9141a9ec", "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", "
playernationalitypositionteamagebirth_yeargamesgames_startsminutesgoals...foulsfouledoffsidespens_wonpens_concededown_goalsball_recoveriesaerials_wonaerials_lostaerials_won_pct
0James Abankwahie IRLDFUdinese19-09920041.00.05.00.0...1.00.00.00.00.00.00.00.00.00.0
1Oliver Abildgaarddk DENMFHellas Verona26-31919966.02.0197.00.0...3.01.00.00.00.00.015.015.05.075.0
2Tammy Abrahameng ENGFWRoma25-205199731.022.01905.07.0...30.044.010.01.00.00.041.066.057.053.7
3Christian Acellait ITAMFCremonese20-29220021.00.015.00.0...0.00.00.00.00.00.01.00.00.00.0
4Francesco Acerbiit ITADFInter35-074198824.020.01915.00.0...12.010.01.00.00.00.0122.069.032.068.3
..................................................................
575Petar Zovkoba BIHGKSpezia21-03120021.00.074.00.0...0.00.00.00.00.00.02.00.00.00.0
576Szymon Żurkowskipl POLMFFiorentina25-21219972.00.032.00.0...1.00.00.00.00.00.02.01.01.050.0
577Szymon Żurkowskipl POLMFSpezia25-21219976.02.0240.00.0...8.05.00.00.00.00.018.03.02.060.0
578Milan Đurićba BIHFWHellas Verona32-338199021.08.0863.01.0...21.020.04.00.00.00.019.0132.035.079.0
579Filip Đuričićrs SRBMF,FWSampdoria31-085199228.024.01871.03.0...31.041.00.00.00.00.098.011.021.034.4
\n", "

580 rows × 115 columns

\n", "
" ], "text/plain": [ " player nationality position team age birth_year \\\n", "0 James Abankwah ie IRL DF Udinese 19-099 2004 \n", "1 Oliver Abildgaard dk DEN MF Hellas Verona 26-319 1996 \n", "2 Tammy Abraham eng ENG FW Roma 25-205 1997 \n", "3 Christian Acella it ITA MF Cremonese 20-292 2002 \n", "4 Francesco Acerbi it ITA DF Inter 35-074 1988 \n", ".. ... ... ... ... ... ... \n", "575 Petar Zovko ba BIH GK Spezia 21-031 2002 \n", "576 Szymon Żurkowski pl POL MF Fiorentina 25-212 1997 \n", "577 Szymon Żurkowski pl POL MF Spezia 25-212 1997 \n", "578 Milan Đurić ba BIH FW Hellas Verona 32-338 1990 \n", "579 Filip Đuričić rs SRB MF,FW Sampdoria 31-085 1992 \n", "\n", " games games_starts minutes goals ... fouls fouled offsides \\\n", "0 1.0 0.0 5.0 0.0 ... 1.0 0.0 0.0 \n", "1 6.0 2.0 197.0 0.0 ... 3.0 1.0 0.0 \n", "2 31.0 22.0 1905.0 7.0 ... 30.0 44.0 10.0 \n", "3 1.0 0.0 15.0 0.0 ... 0.0 0.0 0.0 \n", "4 24.0 20.0 1915.0 0.0 ... 12.0 10.0 1.0 \n", ".. ... ... ... ... ... ... ... ... \n", "575 1.0 0.0 74.0 0.0 ... 0.0 0.0 0.0 \n", "576 2.0 0.0 32.0 0.0 ... 1.0 0.0 0.0 \n", "577 6.0 2.0 240.0 0.0 ... 8.0 5.0 0.0 \n", "578 21.0 8.0 863.0 1.0 ... 21.0 20.0 4.0 \n", "579 28.0 24.0 1871.0 3.0 ... 31.0 41.0 0.0 \n", "\n", " pens_won pens_conceded own_goals ball_recoveries aerials_won \\\n", "0 0.0 0.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 15.0 15.0 \n", "2 1.0 0.0 0.0 41.0 66.0 \n", "3 0.0 0.0 0.0 1.0 0.0 \n", "4 0.0 0.0 0.0 122.0 69.0 \n", ".. ... ... ... ... ... \n", "575 0.0 0.0 0.0 2.0 0.0 \n", "576 0.0 0.0 0.0 2.0 1.0 \n", "577 0.0 0.0 0.0 18.0 3.0 \n", "578 0.0 0.0 0.0 19.0 132.0 \n", "579 0.0 0.0 0.0 98.0 11.0 \n", "\n", " aerials_lost aerials_won_pct \n", "0 0.0 0.0 \n", "1 5.0 75.0 \n", "2 57.0 53.7 \n", "3 0.0 0.0 \n", "4 32.0 68.3 \n", ".. ... ... \n", "575 0.0 0.0 \n", "576 1.0 50.0 \n", "577 2.0 60.0 \n", "578 35.0 79.0 \n", "579 21.0 34.4 \n", "\n", "[580 rows x 115 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_outfield = get_outfield_data('https://fbref.com/en/comps/11/','/Serie-A-Stats')\n", "\n", "df_outfield.to_csv('fbref_data/outfield_players.csv', index=False)\n", "\n", "df_outfield" ] }, { "cell_type": "code", "execution_count": 4, "id": "9a30e27c", "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", "
playernationalitypositionteamagebirth_yeargk_gamesgk_games_startsgk_minutesgk_goals_against...gk_passes_length_avggk_goal_kicksgk_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_actions
0Emil Auderoit ITAGKSampdoria26-097199725.025.02250.039.0...39.1200.057.044.2356.024.06.723.00.9213.9
1Francesco Bardiit ITAGKBologna31-09719921.01.090.00.0...35.69.044.433.410.00.00.00.00.000.0
2Marco Carnesecchiit ITAGKCremonese22-298200022.022.01980.038.0...40.9159.061.650.7305.023.07.521.00.9514.0
3Andrea Consigliit ITAGKSassuolo36-088198729.029.02610.043.0...34.2249.032.533.4409.024.05.926.00.9014.1
4Alessio Cragnoit ITAGKMonza28-30119941.01.090.03.0...22.66.016.733.37.00.00.02.02.0025.7
5Michele Di Gregorioit ITAGKMonza25-272199730.030.02700.040.0...32.6196.035.733.7430.013.03.023.00.7712.7
6Bartłomiej Drągowskipl POLGKSpezia25-249199728.028.02406.043.0...34.5169.062.748.0401.011.02.729.01.0814.2
7Wladimiro Falconeit ITAGKLecce28-013199531.031.02790.038.0...41.9225.077.352.4441.022.05.035.01.1313.7
8Pierluigi Golliniit ITAGKFiorentina28-03819953.03.0270.02.0...32.411.063.649.324.01.04.20.00.009.3
9Pierluigi Golliniit ITAGKNapoli28-03819951.01.090.00.0...31.75.00.015.412.01.08.30.00.002.0
10Samir Handanovićsi SVNGKInter38-285198411.011.0990.016.0...25.759.08.525.2112.02.01.810.00.9116.3
11Mike Maignanfr FRAGKMilan27-296199515.015.01350.015.0...31.354.033.335.3153.011.07.225.01.6718.1
12Federico Marchettiit ITAGKSpezia40-07719831.00.066.02.0...24.38.037.532.48.00.00.01.01.3622.0
13Luís Maximianopt PORGKLazio24-11019991.01.05.00.0...0.00.00.00.00.00.00.00.00.0019.0
14Alex Meretit ITAGKNapoli26-034199730.030.02700.021.0...26.2185.020.026.8308.010.03.232.01.0717.0
15Vanja Milinković-Savićrs SRBGKTorino26-064199731.031.02790.036.0...40.0236.091.569.8387.025.06.562.02.0017.1
16Lorenzo Montipòit ITAGKHellas Verona27-064199630.030.02700.044.0...43.9227.067.849.6401.022.05.551.01.7015.8
17Juan Mussoar ARGGKAtalanta28-354199423.023.01987.025.0...32.0149.062.448.5247.014.05.724.01.0915.6
18Guillermo Ochoamx MEXGKSalernitana37-286198514.014.01260.023.0...41.5134.070.150.0213.06.02.87.00.5013.1
19André Onanacm CMRGKInter27-023199620.020.01800.018.0...30.2130.032.335.8233.014.06.09.00.4512.5
20Rui Patríciopt PORGKRoma35-069198831.031.02790.029.0...33.6217.034.133.6356.012.03.423.00.7414.1
21Gianluca Pegoloit ITAGKSassuolo42-03119812.02.0180.03.0...29.716.031.328.328.02.07.10.00.009.0
22Simone Perilliit ITAGKHellas Verona28-10819951.01.090.00.0...57.313.0100.069.819.01.05.31.01.0012.0
23Mattia Perinit ITAGKJuventus30-166199210.09.0858.07.0...31.160.041.736.5148.04.02.711.01.1515.7
24Samuele Perisanit ITAGKEmpoli25-24719977.07.0630.09.0...32.775.034.734.3134.05.03.74.00.5711.6
25Ivan Provedelit ITAGKLazio29-039199431.030.02783.021.0...33.0161.036.034.7402.017.04.246.01.4916.4
26Ionuț Raduro ROUGKCremonese25-33219979.09.0810.019.0...37.367.050.746.3107.06.05.69.01.0014.5
27Nicola Ravagliait ITAGKSampdoria34-13419884.04.0360.08.0...35.553.045.335.472.04.05.61.00.2510.0
28Luigi Sepeit ITAGKSalernitana31-352199117.017.01530.027.0...35.9154.048.741.1222.016.07.213.00.7614.2
29Marco Silvestriit ITAGKUdinese32-054199131.031.02790.039.0...32.7237.037.135.5441.011.02.516.00.5212.1
30Salvatore Siriguit ITAGKFiorentina36-10319871.01.090.00.0...37.78.050.041.812.00.00.02.02.0026.3
31Łukasz Skorupskipl POLGKBologna31-355199130.030.02700.039.0...32.5219.038.835.4402.024.06.022.00.7313.4
32Marco Sportielloit ITAGKAtalanta30-35019929.08.0803.011.0...29.482.074.452.9126.013.010.314.01.5716.8
33Wojciech Szczęsnypl POLGKJuventus33-007199022.022.01932.019.0...34.3114.049.141.5301.09.03.019.00.8915.4
34Ciprian Tătărușanuro ROUGKMilan37-075198616.016.01440.022.0...32.983.051.841.8195.09.04.613.00.8114.4
35Pietro Terraccianoit ITAGKFiorentina33-048199027.027.02430.034.0...33.3184.044.639.9264.012.04.552.01.9318.6
36Martin Turksi SVNGKSampdoria19-24720032.02.0180.05.0...37.322.090.957.137.00.00.00.00.0011.5
37Guglielmo Vicarioit ITAGKEmpoli26-200199624.024.02160.031.0...33.3139.048.942.6489.028.05.715.00.6310.7
38Jeroen Zoetnl NEDGKSpezia32-10919914.03.0244.02.0...37.112.066.746.340.02.05.06.02.2017.2
39Petar Zovkoba BIHGKSpezia21-03120021.00.074.02.0...35.113.076.951.124.01.04.22.02.4717.0
\n", "

40 rows × 47 columns

\n", "
" ], "text/plain": [ " player nationality position team age \\\n", "0 Emil Audero it ITA GK Sampdoria 26-097 \n", "1 Francesco Bardi it ITA GK Bologna 31-097 \n", "2 Marco Carnesecchi it ITA GK Cremonese 22-298 \n", "3 Andrea Consigli it ITA GK Sassuolo 36-088 \n", "4 Alessio Cragno it ITA GK Monza 28-301 \n", "5 Michele Di Gregorio it ITA GK Monza 25-272 \n", "6 Bartłomiej Drągowski pl POL GK Spezia 25-249 \n", "7 Wladimiro Falcone it ITA GK Lecce 28-013 \n", "8 Pierluigi Gollini it ITA GK Fiorentina 28-038 \n", "9 Pierluigi Gollini it ITA GK Napoli 28-038 \n", "10 Samir Handanović si SVN GK Inter 38-285 \n", "11 Mike Maignan fr FRA GK Milan 27-296 \n", "12 Federico Marchetti it ITA GK Spezia 40-077 \n", "13 Luís Maximiano pt POR GK Lazio 24-110 \n", "14 Alex Meret it ITA GK Napoli 26-034 \n", "15 Vanja Milinković-Savić rs SRB GK Torino 26-064 \n", "16 Lorenzo Montipò it ITA GK Hellas Verona 27-064 \n", "17 Juan Musso ar ARG GK Atalanta 28-354 \n", "18 Guillermo Ochoa mx MEX GK Salernitana 37-286 \n", "19 André Onana cm CMR GK Inter 27-023 \n", "20 Rui Patrício pt POR GK Roma 35-069 \n", "21 Gianluca Pegolo it ITA GK Sassuolo 42-031 \n", "22 Simone Perilli it ITA GK Hellas Verona 28-108 \n", "23 Mattia Perin it ITA GK Juventus 30-166 \n", "24 Samuele Perisan it ITA GK Empoli 25-247 \n", "25 Ivan Provedel it ITA GK Lazio 29-039 \n", "26 Ionuț Radu ro ROU GK Cremonese 25-332 \n", "27 Nicola Ravaglia it ITA GK Sampdoria 34-134 \n", "28 Luigi Sepe it ITA GK Salernitana 31-352 \n", "29 Marco Silvestri it ITA GK Udinese 32-054 \n", "30 Salvatore Sirigu it ITA GK Fiorentina 36-103 \n", "31 Łukasz Skorupski pl POL GK Bologna 31-355 \n", "32 Marco Sportiello it ITA GK Atalanta 30-350 \n", "33 Wojciech Szczęsny pl POL GK Juventus 33-007 \n", "34 Ciprian Tătărușanu ro ROU GK Milan 37-075 \n", "35 Pietro Terracciano it ITA GK Fiorentina 33-048 \n", "36 Martin Turk si SVN GK Sampdoria 19-247 \n", "37 Guglielmo Vicario it ITA GK Empoli 26-200 \n", "38 Jeroen Zoet nl NED GK Spezia 32-109 \n", "39 Petar Zovko ba BIH GK Spezia 21-031 \n", "\n", " birth_year gk_games gk_games_starts gk_minutes gk_goals_against ... \\\n", "0 1997 25.0 25.0 2250.0 39.0 ... \n", "1 1992 1.0 1.0 90.0 0.0 ... \n", "2 2000 22.0 22.0 1980.0 38.0 ... \n", "3 1987 29.0 29.0 2610.0 43.0 ... \n", "4 1994 1.0 1.0 90.0 3.0 ... \n", "5 1997 30.0 30.0 2700.0 40.0 ... \n", "6 1997 28.0 28.0 2406.0 43.0 ... \n", "7 1995 31.0 31.0 2790.0 38.0 ... \n", "8 1995 3.0 3.0 270.0 2.0 ... \n", "9 1995 1.0 1.0 90.0 0.0 ... \n", "10 1984 11.0 11.0 990.0 16.0 ... \n", "11 1995 15.0 15.0 1350.0 15.0 ... \n", "12 1983 1.0 0.0 66.0 2.0 ... \n", "13 1999 1.0 1.0 5.0 0.0 ... \n", "14 1997 30.0 30.0 2700.0 21.0 ... \n", "15 1997 31.0 31.0 2790.0 36.0 ... \n", "16 1996 30.0 30.0 2700.0 44.0 ... \n", "17 1994 23.0 23.0 1987.0 25.0 ... \n", "18 1985 14.0 14.0 1260.0 23.0 ... \n", "19 1996 20.0 20.0 1800.0 18.0 ... \n", "20 1988 31.0 31.0 2790.0 29.0 ... \n", "21 1981 2.0 2.0 180.0 3.0 ... \n", "22 1995 1.0 1.0 90.0 0.0 ... \n", "23 1992 10.0 9.0 858.0 7.0 ... \n", "24 1997 7.0 7.0 630.0 9.0 ... \n", "25 1994 31.0 30.0 2783.0 21.0 ... \n", "26 1997 9.0 9.0 810.0 19.0 ... \n", "27 1988 4.0 4.0 360.0 8.0 ... \n", "28 1991 17.0 17.0 1530.0 27.0 ... \n", "29 1991 31.0 31.0 2790.0 39.0 ... \n", "30 1987 1.0 1.0 90.0 0.0 ... \n", "31 1991 30.0 30.0 2700.0 39.0 ... \n", "32 1992 9.0 8.0 803.0 11.0 ... \n", "33 1990 22.0 22.0 1932.0 19.0 ... \n", "34 1986 16.0 16.0 1440.0 22.0 ... \n", "35 1990 27.0 27.0 2430.0 34.0 ... \n", "36 2003 2.0 2.0 180.0 5.0 ... \n", "37 1996 24.0 24.0 2160.0 31.0 ... \n", "38 1991 4.0 3.0 244.0 2.0 ... \n", "39 2002 1.0 0.0 74.0 2.0 ... \n", "\n", " gk_passes_length_avg gk_goal_kicks gk_pct_goal_kicks_launched \\\n", "0 39.1 200.0 57.0 \n", "1 35.6 9.0 44.4 \n", "2 40.9 159.0 61.6 \n", "3 34.2 249.0 32.5 \n", "4 22.6 6.0 16.7 \n", "5 32.6 196.0 35.7 \n", "6 34.5 169.0 62.7 \n", "7 41.9 225.0 77.3 \n", "8 32.4 11.0 63.6 \n", "9 31.7 5.0 0.0 \n", "10 25.7 59.0 8.5 \n", "11 31.3 54.0 33.3 \n", "12 24.3 8.0 37.5 \n", "13 0.0 0.0 0.0 \n", "14 26.2 185.0 20.0 \n", "15 40.0 236.0 91.5 \n", "16 43.9 227.0 67.8 \n", "17 32.0 149.0 62.4 \n", "18 41.5 134.0 70.1 \n", "19 30.2 130.0 32.3 \n", "20 33.6 217.0 34.1 \n", "21 29.7 16.0 31.3 \n", "22 57.3 13.0 100.0 \n", "23 31.1 60.0 41.7 \n", "24 32.7 75.0 34.7 \n", "25 33.0 161.0 36.0 \n", "26 37.3 67.0 50.7 \n", "27 35.5 53.0 45.3 \n", "28 35.9 154.0 48.7 \n", "29 32.7 237.0 37.1 \n", "30 37.7 8.0 50.0 \n", "31 32.5 219.0 38.8 \n", "32 29.4 82.0 74.4 \n", "33 34.3 114.0 49.1 \n", "34 32.9 83.0 51.8 \n", "35 33.3 184.0 44.6 \n", "36 37.3 22.0 90.9 \n", "37 33.3 139.0 48.9 \n", "38 37.1 12.0 66.7 \n", "39 35.1 13.0 76.9 \n", "\n", " gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n", "0 44.2 356.0 24.0 \n", "1 33.4 10.0 0.0 \n", "2 50.7 305.0 23.0 \n", "3 33.4 409.0 24.0 \n", "4 33.3 7.0 0.0 \n", "5 33.7 430.0 13.0 \n", "6 48.0 401.0 11.0 \n", "7 52.4 441.0 22.0 \n", "8 49.3 24.0 1.0 \n", "9 15.4 12.0 1.0 \n", "10 25.2 112.0 2.0 \n", "11 35.3 153.0 11.0 \n", "12 32.4 8.0 0.0 \n", "13 0.0 0.0 0.0 \n", "14 26.8 308.0 10.0 \n", "15 69.8 387.0 25.0 \n", "16 49.6 401.0 22.0 \n", "17 48.5 247.0 14.0 \n", "18 50.0 213.0 6.0 \n", "19 35.8 233.0 14.0 \n", "20 33.6 356.0 12.0 \n", "21 28.3 28.0 2.0 \n", "22 69.8 19.0 1.0 \n", "23 36.5 148.0 4.0 \n", "24 34.3 134.0 5.0 \n", "25 34.7 402.0 17.0 \n", "26 46.3 107.0 6.0 \n", "27 35.4 72.0 4.0 \n", "28 41.1 222.0 16.0 \n", "29 35.5 441.0 11.0 \n", "30 41.8 12.0 0.0 \n", "31 35.4 402.0 24.0 \n", "32 52.9 126.0 13.0 \n", "33 41.5 301.0 9.0 \n", "34 41.8 195.0 9.0 \n", "35 39.9 264.0 12.0 \n", "36 57.1 37.0 0.0 \n", "37 42.6 489.0 28.0 \n", "38 46.3 40.0 2.0 \n", "39 51.1 24.0 1.0 \n", "\n", " gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n", "0 6.7 23.0 \n", "1 0.0 0.0 \n", "2 7.5 21.0 \n", "3 5.9 26.0 \n", "4 0.0 2.0 \n", "5 3.0 23.0 \n", "6 2.7 29.0 \n", "7 5.0 35.0 \n", "8 4.2 0.0 \n", "9 8.3 0.0 \n", "10 1.8 10.0 \n", "11 7.2 25.0 \n", "12 0.0 1.0 \n", "13 0.0 0.0 \n", "14 3.2 32.0 \n", "15 6.5 62.0 \n", "16 5.5 51.0 \n", "17 5.7 24.0 \n", "18 2.8 7.0 \n", "19 6.0 9.0 \n", "20 3.4 23.0 \n", "21 7.1 0.0 \n", "22 5.3 1.0 \n", "23 2.7 11.0 \n", "24 3.7 4.0 \n", "25 4.2 46.0 \n", "26 5.6 9.0 \n", "27 5.6 1.0 \n", "28 7.2 13.0 \n", "29 2.5 16.0 \n", "30 0.0 2.0 \n", "31 6.0 22.0 \n", "32 10.3 14.0 \n", "33 3.0 19.0 \n", "34 4.6 13.0 \n", "35 4.5 52.0 \n", "36 0.0 0.0 \n", "37 5.7 15.0 \n", "38 5.0 6.0 \n", "39 4.2 2.0 \n", "\n", " gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \n", "0 0.92 13.9 \n", "1 0.00 0.0 \n", "2 0.95 14.0 \n", "3 0.90 14.1 \n", "4 2.00 25.7 \n", "5 0.77 12.7 \n", "6 1.08 14.2 \n", "7 1.13 13.7 \n", "8 0.00 9.3 \n", "9 0.00 2.0 \n", "10 0.91 16.3 \n", "11 1.67 18.1 \n", "12 1.36 22.0 \n", "13 0.00 19.0 \n", "14 1.07 17.0 \n", "15 2.00 17.1 \n", "16 1.70 15.8 \n", "17 1.09 15.6 \n", "18 0.50 13.1 \n", "19 0.45 12.5 \n", "20 0.74 14.1 \n", "21 0.00 9.0 \n", "22 1.00 12.0 \n", "23 1.15 15.7 \n", "24 0.57 11.6 \n", "25 1.49 16.4 \n", "26 1.00 14.5 \n", "27 0.25 10.0 \n", "28 0.76 14.2 \n", "29 0.52 12.1 \n", "30 2.00 26.3 \n", "31 0.73 13.4 \n", "32 1.57 16.8 \n", "33 0.89 15.4 \n", "34 0.81 14.4 \n", "35 1.93 18.6 \n", "36 0.00 11.5 \n", "37 0.63 10.7 \n", "38 2.20 17.2 \n", "39 2.47 17.0 \n", "\n", "[40 rows x 47 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_keeper = get_keeper_data('https://fbref.com/en/comps/11/','/Serie-A-Stats')\n", "\n", "df_keeper.to_csv('fbref_data/keepers_players.csv', index=False)\n", "\n", "df_keeper" ] }, { "cell_type": "code", "execution_count": 5, "id": "b9924851", "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", "
teamplayers_usedpossessiongamesgames_startsminutesgoalsassistspens_madepens_att...foulsfouledoffsidespens_wonpens_concededown_goalsball_recoveriesaerials_wonaerials_lostaerials_won_pct
0Atalanta25.050.031.0341.02790.050.032.06.08.0...381.0320.044.06.03.02.01840.0472.0389.054.8
1Bologna27.053.431.0341.02790.039.032.04.04.0...384.0355.062.03.08.02.01732.0306.0379.044.7
2Cremonese32.043.231.0341.02790.027.013.04.06.0...393.0324.058.04.05.01.01708.0462.0594.043.8
3Empoli31.047.431.0341.02790.025.013.01.01.0...354.0365.039.01.04.01.01471.0330.0412.044.5
4Fiorentina29.056.631.0341.02790.035.025.04.06.0...392.0437.040.03.04.02.01684.0504.0425.054.3
5Hellas Verona36.042.031.0341.02790.024.018.01.01.0...456.0318.062.01.01.01.01861.0615.0619.049.8
6Inter24.056.231.0341.02790.050.035.04.05.0...366.0343.058.04.03.02.01609.0443.0344.056.3
7Juventus29.048.631.0341.02790.047.037.03.05.0...363.0334.052.05.02.00.01594.0390.0381.050.6
8Lazio22.051.931.0341.02790.048.029.05.07.0...320.0395.042.05.01.00.01631.0319.0319.050.0
9Lecce29.041.731.0341.02790.024.017.01.02.0...452.0362.054.02.05.03.01742.0466.0582.044.5
10Milan29.054.031.0341.02790.048.039.03.03.0...386.0359.050.01.05.01.01667.0456.0387.054.1
11Monza31.055.031.0341.02790.036.023.05.05.0...404.0409.059.05.01.01.01508.0357.0340.051.2
12Napoli26.061.831.0341.02790.065.051.06.07.0...311.0381.053.05.02.00.01657.0389.0322.054.7
13Roma27.049.231.0341.02790.043.030.06.09.0...368.0420.052.05.03.01.01631.0426.0331.056.3
14Salernitana28.044.631.0341.02790.035.025.01.01.0...379.0341.057.00.010.00.01614.0427.0448.048.8
15Sampdoria37.047.431.0341.02790.020.016.01.02.0...426.0432.047.01.08.02.01585.0517.0535.049.1
16Sassuolo29.048.931.0341.02790.037.024.06.07.0...336.0355.026.05.04.00.01456.0329.0385.046.1
17Spezia34.047.031.0341.02790.024.015.04.04.0...431.0298.045.02.06.02.01693.0424.0470.047.4
18Torino28.053.031.0341.02790.032.026.02.02.0...427.0318.070.02.06.00.01653.0474.0508.048.3
19Udinese27.048.131.0341.02790.041.036.01.02.0...375.0389.045.01.05.02.01594.0390.0326.054.5
\n", "

20 rows × 152 columns

\n", "
" ], "text/plain": [ " team players_used possession games games_starts minutes \\\n", "0 Atalanta 25.0 50.0 31.0 341.0 2790.0 \n", "1 Bologna 27.0 53.4 31.0 341.0 2790.0 \n", "2 Cremonese 32.0 43.2 31.0 341.0 2790.0 \n", "3 Empoli 31.0 47.4 31.0 341.0 2790.0 \n", "4 Fiorentina 29.0 56.6 31.0 341.0 2790.0 \n", "5 Hellas Verona 36.0 42.0 31.0 341.0 2790.0 \n", "6 Inter 24.0 56.2 31.0 341.0 2790.0 \n", "7 Juventus 29.0 48.6 31.0 341.0 2790.0 \n", "8 Lazio 22.0 51.9 31.0 341.0 2790.0 \n", "9 Lecce 29.0 41.7 31.0 341.0 2790.0 \n", "10 Milan 29.0 54.0 31.0 341.0 2790.0 \n", "11 Monza 31.0 55.0 31.0 341.0 2790.0 \n", "12 Napoli 26.0 61.8 31.0 341.0 2790.0 \n", "13 Roma 27.0 49.2 31.0 341.0 2790.0 \n", "14 Salernitana 28.0 44.6 31.0 341.0 2790.0 \n", "15 Sampdoria 37.0 47.4 31.0 341.0 2790.0 \n", "16 Sassuolo 29.0 48.9 31.0 341.0 2790.0 \n", "17 Spezia 34.0 47.0 31.0 341.0 2790.0 \n", "18 Torino 28.0 53.0 31.0 341.0 2790.0 \n", "19 Udinese 27.0 48.1 31.0 341.0 2790.0 \n", "\n", " goals assists pens_made pens_att ... fouls fouled offsides \\\n", "0 50.0 32.0 6.0 8.0 ... 381.0 320.0 44.0 \n", "1 39.0 32.0 4.0 4.0 ... 384.0 355.0 62.0 \n", "2 27.0 13.0 4.0 6.0 ... 393.0 324.0 58.0 \n", "3 25.0 13.0 1.0 1.0 ... 354.0 365.0 39.0 \n", "4 35.0 25.0 4.0 6.0 ... 392.0 437.0 40.0 \n", "5 24.0 18.0 1.0 1.0 ... 456.0 318.0 62.0 \n", "6 50.0 35.0 4.0 5.0 ... 366.0 343.0 58.0 \n", "7 47.0 37.0 3.0 5.0 ... 363.0 334.0 52.0 \n", "8 48.0 29.0 5.0 7.0 ... 320.0 395.0 42.0 \n", "9 24.0 17.0 1.0 2.0 ... 452.0 362.0 54.0 \n", "10 48.0 39.0 3.0 3.0 ... 386.0 359.0 50.0 \n", "11 36.0 23.0 5.0 5.0 ... 404.0 409.0 59.0 \n", "12 65.0 51.0 6.0 7.0 ... 311.0 381.0 53.0 \n", "13 43.0 30.0 6.0 9.0 ... 368.0 420.0 52.0 \n", "14 35.0 25.0 1.0 1.0 ... 379.0 341.0 57.0 \n", "15 20.0 16.0 1.0 2.0 ... 426.0 432.0 47.0 \n", "16 37.0 24.0 6.0 7.0 ... 336.0 355.0 26.0 \n", "17 24.0 15.0 4.0 4.0 ... 431.0 298.0 45.0 \n", "18 32.0 26.0 2.0 2.0 ... 427.0 318.0 70.0 \n", "19 41.0 36.0 1.0 2.0 ... 375.0 389.0 45.0 \n", "\n", " pens_won pens_conceded own_goals ball_recoveries aerials_won \\\n", "0 6.0 3.0 2.0 1840.0 472.0 \n", "1 3.0 8.0 2.0 1732.0 306.0 \n", "2 4.0 5.0 1.0 1708.0 462.0 \n", "3 1.0 4.0 1.0 1471.0 330.0 \n", "4 3.0 4.0 2.0 1684.0 504.0 \n", "5 1.0 1.0 1.0 1861.0 615.0 \n", "6 4.0 3.0 2.0 1609.0 443.0 \n", "7 5.0 2.0 0.0 1594.0 390.0 \n", "8 5.0 1.0 0.0 1631.0 319.0 \n", "9 2.0 5.0 3.0 1742.0 466.0 \n", "10 1.0 5.0 1.0 1667.0 456.0 \n", "11 5.0 1.0 1.0 1508.0 357.0 \n", "12 5.0 2.0 0.0 1657.0 389.0 \n", "13 5.0 3.0 1.0 1631.0 426.0 \n", "14 0.0 10.0 0.0 1614.0 427.0 \n", "15 1.0 8.0 2.0 1585.0 517.0 \n", "16 5.0 4.0 0.0 1456.0 329.0 \n", "17 2.0 6.0 2.0 1693.0 424.0 \n", "18 2.0 6.0 0.0 1653.0 474.0 \n", "19 1.0 5.0 2.0 1594.0 390.0 \n", "\n", " aerials_lost aerials_won_pct \n", "0 389.0 54.8 \n", "1 379.0 44.7 \n", "2 594.0 43.8 \n", "3 412.0 44.5 \n", "4 425.0 54.3 \n", "5 619.0 49.8 \n", "6 344.0 56.3 \n", "7 381.0 50.6 \n", "8 319.0 50.0 \n", "9 582.0 44.5 \n", "10 387.0 54.1 \n", "11 340.0 51.2 \n", "12 322.0 54.7 \n", "13 331.0 56.3 \n", "14 448.0 48.8 \n", "15 535.0 49.1 \n", "16 385.0 46.1 \n", "17 470.0 47.4 \n", "18 508.0 48.3 \n", "19 326.0 54.5 \n", "\n", "[20 rows x 152 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_team = get_team_data('https://fbref.com/en/comps/11/','/Serie-A-Stats', 'for')\n", "\n", "df_team.to_csv('fbref_data/teams.csv', index=False)\n", "\n", "df_team" ] }, { "cell_type": "code", "execution_count": 6, "id": "5868ec4a", "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", "
teamplayers_usedpossessiongamesgames_startsminutesgoalsassistspens_madepens_att...foulsfouledoffsidespens_wonpens_concededown_goalsball_recoveriesaerials_wonaerials_lostaerials_won_pct
0vs Atalanta25.050.031.0341.02790.034.026.03.03.0...338.0356.040.01.08.01.01865.0389.0472.045.2
1vs Bologna27.046.631.0341.02790.037.022.07.08.0...376.0365.052.05.04.01.01687.0379.0306.055.3
2vs Cremonese32.056.831.0341.02790.056.038.05.05.0...345.0372.052.04.06.00.01745.0594.0462.056.3
3vs Empoli31.052.631.0341.02790.039.027.02.04.0...384.0341.060.02.01.00.01607.0412.0330.055.5
4vs Fiorentina29.043.431.0341.02790.034.024.04.04.0...460.0371.078.02.06.02.01625.0425.0504.045.7
5vs Hellas Verona36.058.031.0341.02790.043.039.00.01.0...337.0438.032.01.01.02.01728.0619.0615.050.2
6vs Inter24.043.831.0341.02790.032.027.03.03.0...368.0336.029.03.05.01.01443.0344.0443.043.7
7vs Juventus29.051.431.0341.02790.026.022.01.02.0...348.0328.039.00.05.00.01556.0381.0390.049.4
8vs Lazio22.048.131.0341.02790.021.014.01.01.0...421.0304.055.01.07.01.01677.0319.0319.050.0
9vs Lecce29.058.331.0341.02790.035.025.05.05.0...378.0425.057.04.02.02.01694.0582.0466.055.5
10vs Milan29.046.031.0341.02790.036.028.04.05.0...378.0369.031.05.03.03.01617.0387.0456.045.9
11vs Monza31.045.031.0341.02790.042.027.01.01.0...437.0385.048.01.05.02.01608.0340.0357.048.8
12vs Napoli26.038.231.0341.02790.021.013.01.02.0...405.0287.039.01.06.02.01562.0322.0389.045.3
13vs Roma27.050.831.0341.02790.028.018.02.03.0...447.0344.021.02.09.00.01621.0331.0426.043.7
14vs Salernitana28.055.431.0341.02790.050.032.06.010.0...375.0357.064.010.01.02.01709.0448.0427.051.2
15vs Sampdoria37.052.631.0341.02790.050.036.06.09.0...449.0408.075.06.02.00.01693.0535.0517.050.9
16vs Sassuolo29.051.131.0341.02790.046.035.04.04.0...384.0307.094.02.07.01.01611.0385.0329.053.9
17vs Spezia34.053.031.0341.02790.047.033.04.06.0...321.0396.067.04.04.02.01708.0470.0424.052.6
18vs Torino28.047.031.0341.02790.036.023.05.06.0...341.0409.032.04.02.00.01597.0508.0474.051.7
19vs Udinese27.051.931.0341.02790.037.027.04.05.0...412.0357.050.03.02.01.01577.0326.0390.045.5
\n", "

20 rows × 152 columns

\n", "
" ], "text/plain": [ " team players_used possession games games_starts minutes \\\n", "0 vs Atalanta 25.0 50.0 31.0 341.0 2790.0 \n", "1 vs Bologna 27.0 46.6 31.0 341.0 2790.0 \n", "2 vs Cremonese 32.0 56.8 31.0 341.0 2790.0 \n", "3 vs Empoli 31.0 52.6 31.0 341.0 2790.0 \n", "4 vs Fiorentina 29.0 43.4 31.0 341.0 2790.0 \n", "5 vs Hellas Verona 36.0 58.0 31.0 341.0 2790.0 \n", "6 vs Inter 24.0 43.8 31.0 341.0 2790.0 \n", "7 vs Juventus 29.0 51.4 31.0 341.0 2790.0 \n", "8 vs Lazio 22.0 48.1 31.0 341.0 2790.0 \n", "9 vs Lecce 29.0 58.3 31.0 341.0 2790.0 \n", "10 vs Milan 29.0 46.0 31.0 341.0 2790.0 \n", "11 vs Monza 31.0 45.0 31.0 341.0 2790.0 \n", "12 vs Napoli 26.0 38.2 31.0 341.0 2790.0 \n", "13 vs Roma 27.0 50.8 31.0 341.0 2790.0 \n", "14 vs Salernitana 28.0 55.4 31.0 341.0 2790.0 \n", "15 vs Sampdoria 37.0 52.6 31.0 341.0 2790.0 \n", "16 vs Sassuolo 29.0 51.1 31.0 341.0 2790.0 \n", "17 vs Spezia 34.0 53.0 31.0 341.0 2790.0 \n", "18 vs Torino 28.0 47.0 31.0 341.0 2790.0 \n", "19 vs Udinese 27.0 51.9 31.0 341.0 2790.0 \n", "\n", " goals assists pens_made pens_att ... fouls fouled offsides \\\n", "0 34.0 26.0 3.0 3.0 ... 338.0 356.0 40.0 \n", "1 37.0 22.0 7.0 8.0 ... 376.0 365.0 52.0 \n", "2 56.0 38.0 5.0 5.0 ... 345.0 372.0 52.0 \n", "3 39.0 27.0 2.0 4.0 ... 384.0 341.0 60.0 \n", "4 34.0 24.0 4.0 4.0 ... 460.0 371.0 78.0 \n", "5 43.0 39.0 0.0 1.0 ... 337.0 438.0 32.0 \n", "6 32.0 27.0 3.0 3.0 ... 368.0 336.0 29.0 \n", "7 26.0 22.0 1.0 2.0 ... 348.0 328.0 39.0 \n", "8 21.0 14.0 1.0 1.0 ... 421.0 304.0 55.0 \n", "9 35.0 25.0 5.0 5.0 ... 378.0 425.0 57.0 \n", "10 36.0 28.0 4.0 5.0 ... 378.0 369.0 31.0 \n", "11 42.0 27.0 1.0 1.0 ... 437.0 385.0 48.0 \n", "12 21.0 13.0 1.0 2.0 ... 405.0 287.0 39.0 \n", "13 28.0 18.0 2.0 3.0 ... 447.0 344.0 21.0 \n", "14 50.0 32.0 6.0 10.0 ... 375.0 357.0 64.0 \n", "15 50.0 36.0 6.0 9.0 ... 449.0 408.0 75.0 \n", "16 46.0 35.0 4.0 4.0 ... 384.0 307.0 94.0 \n", "17 47.0 33.0 4.0 6.0 ... 321.0 396.0 67.0 \n", "18 36.0 23.0 5.0 6.0 ... 341.0 409.0 32.0 \n", "19 37.0 27.0 4.0 5.0 ... 412.0 357.0 50.0 \n", "\n", " pens_won pens_conceded own_goals ball_recoveries aerials_won \\\n", "0 1.0 8.0 1.0 1865.0 389.0 \n", "1 5.0 4.0 1.0 1687.0 379.0 \n", "2 4.0 6.0 0.0 1745.0 594.0 \n", "3 2.0 1.0 0.0 1607.0 412.0 \n", "4 2.0 6.0 2.0 1625.0 425.0 \n", "5 1.0 1.0 2.0 1728.0 619.0 \n", "6 3.0 5.0 1.0 1443.0 344.0 \n", "7 0.0 5.0 0.0 1556.0 381.0 \n", "8 1.0 7.0 1.0 1677.0 319.0 \n", "9 4.0 2.0 2.0 1694.0 582.0 \n", "10 5.0 3.0 3.0 1617.0 387.0 \n", "11 1.0 5.0 2.0 1608.0 340.0 \n", "12 1.0 6.0 2.0 1562.0 322.0 \n", "13 2.0 9.0 0.0 1621.0 331.0 \n", "14 10.0 1.0 2.0 1709.0 448.0 \n", "15 6.0 2.0 0.0 1693.0 535.0 \n", "16 2.0 7.0 1.0 1611.0 385.0 \n", "17 4.0 4.0 2.0 1708.0 470.0 \n", "18 4.0 2.0 0.0 1597.0 508.0 \n", "19 3.0 2.0 1.0 1577.0 326.0 \n", "\n", " aerials_lost aerials_won_pct \n", "0 472.0 45.2 \n", "1 306.0 55.3 \n", "2 462.0 56.3 \n", "3 330.0 55.5 \n", "4 504.0 45.7 \n", "5 615.0 50.2 \n", "6 443.0 43.7 \n", "7 390.0 49.4 \n", "8 319.0 50.0 \n", "9 466.0 55.5 \n", "10 456.0 45.9 \n", "11 357.0 48.8 \n", "12 389.0 45.3 \n", "13 426.0 43.7 \n", "14 427.0 51.2 \n", "15 517.0 50.9 \n", "16 329.0 53.9 \n", "17 424.0 52.6 \n", "18 474.0 51.7 \n", "19 390.0 45.5 \n", "\n", "[20 rows x 152 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vsteam = get_team_data('https://fbref.com/en/comps/11/','/Serie-A-Stats', 'vs')\n", "\n", "df_vsteam.to_csv('fbref_data/teams_vs.csv', index=False)\n", "\n", "df_vsteam" ] }, { "cell_type": "code", "execution_count": 7, "id": "11e51337", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Outfield player columns\n", "['player' 'nationality' 'position' 'team' 'age' 'birth_year' 'games'\n", " 'games_starts' 'minutes' 'goals' 'assists' 'pens_made' 'pens_att'\n", " 'cards_yellow' 'cards_red' 'goals_per90' 'assists_per90'\n", " 'goals_assists_per90' 'goals_pens_per90' 'goals_assists_pens_per90' 'xg'\n", " 'npxg' 'xg_per90' 'npxg_per90' 'minutes_90s' 'shots_on_target'\n", " 'shots_free_kicks' 'shots_on_target_pct' 'shots_on_target_per90'\n", " 'goals_per_shot' 'goals_per_shot_on_target' 'npxg_per_shot' 'xg_net'\n", " 'npxg_net' 'passes_completed' 'passes' 'passes_pct'\n", " 'passes_total_distance' 'passes_progressive_distance'\n", " 'passes_completed_short' 'passes_short' 'passes_pct_short'\n", " 'passes_completed_medium' 'passes_medium' 'passes_pct_medium'\n", " 'passes_completed_long' 'passes_long' 'passes_pct_long' 'assisted_shots'\n", " 'passes_into_final_third' 'passes_into_penalty_area'\n", " 'crosses_into_penalty_area' 'progressive_passes' 'passes_live'\n", " 'passes_dead' 'passes_free_kicks' 'through_balls' 'passes_switches'\n", " 'crosses' 'corner_kicks' 'corner_kicks_in' 'corner_kicks_out'\n", " 'corner_kicks_straight' 'throw_ins' 'passes_offsides' 'passes_blocked'\n", " 'sca' 'sca_per90' 'sca_passes_live' 'sca_passes_dead' 'sca_shots'\n", " 'sca_fouled' 'gca' 'gca_per90' 'gca_passes_live' 'gca_passes_dead'\n", " 'gca_shots' 'gca_fouled' 'gca_defense' 'tackles' 'tackles_won'\n", " 'tackles_def_3rd' 'tackles_mid_3rd' 'tackles_att_3rd' 'blocks'\n", " 'blocked_shots' 'blocked_passes' 'interceptions' 'clearances' 'errors'\n", " 'touches' 'touches_def_pen_area' 'touches_def_3rd' 'touches_mid_3rd'\n", " 'touches_att_3rd' 'touches_att_pen_area' 'touches_live_ball' 'carries'\n", " 'progressive_carries' 'carries_into_final_third'\n", " 'carries_into_penalty_area' 'passes_received' 'miscontrols'\n", " 'dispossessed' 'cards_yellow_red' 'fouls' 'fouled' 'offsides' 'pens_won'\n", " 'pens_conceded' 'own_goals' 'ball_recoveries' 'aerials_won'\n", " 'aerials_lost' 'aerials_won_pct']\n", "Keeper player columns\n", "['player' 'nationality' 'position' 'team' 'age' 'birth_year' 'gk_games'\n", " 'gk_games_starts' 'gk_minutes' 'gk_goals_against'\n", " 'gk_goals_against_per90' 'gk_shots_on_target_against' 'gk_saves'\n", " 'gk_save_pct' 'gk_wins' 'gk_ties' 'gk_losses' 'gk_clean_sheets'\n", " 'gk_clean_sheets_pct' 'gk_pens_att' 'gk_pens_allowed' 'gk_pens_saved'\n", " 'gk_pens_missed' 'minutes_90s' 'gk_free_kick_goals_against'\n", " 'gk_corner_kick_goals_against' 'gk_own_goals_against' 'gk_psxg'\n", " 'gk_psnpxg_per_shot_on_target_against' 'gk_psxg_net' 'gk_psxg_net_per90'\n", " 'gk_passes_completed_launched' 'gk_passes_launched'\n", " 'gk_passes_pct_launched' 'gk_passes' 'gk_passes_throws'\n", " 'gk_pct_passes_launched' 'gk_passes_length_avg' 'gk_goal_kicks'\n", " 'gk_pct_goal_kicks_launched' 'gk_goal_kick_length_avg' 'gk_crosses'\n", " 'gk_crosses_stopped' 'gk_crosses_stopped_pct'\n", " 'gk_def_actions_outside_pen_area' 'gk_def_actions_outside_pen_area_per90'\n", " 'gk_avg_distance_def_actions']\n", "Team columns\n", "['team' 'players_used' 'possession' 'games' 'games_starts' 'minutes'\n", " 'goals' 'assists' 'pens_made' 'pens_att' 'cards_yellow' 'cards_red'\n", " 'goals_per90' 'assists_per90' 'goals_assists_per90' 'goals_pens_per90'\n", " 'goals_assists_pens_per90' 'xg' 'npxg' 'xg_per90' 'npxg_per90' 'gk_games'\n", " 'gk_games_starts' 'gk_minutes' 'gk_goals_against'\n", " 'gk_goals_against_per90' 'gk_shots_on_target_against' 'gk_saves'\n", " 'gk_save_pct' 'gk_wins' 'gk_ties' 'gk_losses' 'gk_clean_sheets'\n", " 'gk_clean_sheets_pct' 'gk_pens_att' 'gk_pens_allowed' 'gk_pens_saved'\n", " 'gk_pens_missed' 'minutes_90s' 'gk_free_kick_goals_against'\n", " 'gk_corner_kick_goals_against' 'gk_own_goals_against' 'gk_psxg'\n", " 'gk_psnpxg_per_shot_on_target_against' 'gk_psxg_net' 'gk_psxg_net_per90'\n", " 'gk_passes_completed_launched' 'gk_passes_launched'\n", " 'gk_passes_pct_launched' 'gk_passes' 'gk_passes_throws'\n", " 'gk_pct_passes_launched' 'gk_passes_length_avg' 'gk_goal_kicks'\n", " 'gk_pct_goal_kicks_launched' 'gk_goal_kick_length_avg' 'gk_crosses'\n", " 'gk_crosses_stopped' 'gk_crosses_stopped_pct'\n", " 'gk_def_actions_outside_pen_area' 'gk_def_actions_outside_pen_area_per90'\n", " 'gk_avg_distance_def_actions' 'shots_on_target' 'shots_free_kicks'\n", " 'shots_on_target_pct' 'shots_on_target_per90' 'goals_per_shot'\n", " 'goals_per_shot_on_target' 'npxg_per_shot' 'xg_net' 'npxg_net'\n", " 'passes_completed' 'passes' 'passes_pct' 'passes_total_distance'\n", " 'passes_progressive_distance' 'passes_completed_short' 'passes_short'\n", " 'passes_pct_short' 'passes_completed_medium' 'passes_medium'\n", " 'passes_pct_medium' 'passes_completed_long' 'passes_long'\n", " 'passes_pct_long' 'assisted_shots' 'passes_into_final_third'\n", " 'passes_into_penalty_area' 'crosses_into_penalty_area'\n", " 'progressive_passes' 'passes_live' 'passes_dead' 'passes_free_kicks'\n", " 'through_balls' 'passes_switches' 'crosses' 'corner_kicks'\n", " 'corner_kicks_in' 'corner_kicks_out' 'corner_kicks_straight' 'throw_ins'\n", " 'passes_offsides' 'passes_blocked' 'sca' 'sca_per90' 'sca_passes_live'\n", " 'sca_passes_dead' 'sca_shots' 'sca_fouled' 'gca' 'gca_per90'\n", " 'gca_passes_live' 'gca_passes_dead' 'gca_shots' 'gca_fouled'\n", " 'gca_defense' 'tackles' 'tackles_won' 'tackles_def_3rd' 'tackles_mid_3rd'\n", " 'tackles_att_3rd' 'blocks' 'blocked_shots' 'blocked_passes'\n", " 'interceptions' 'clearances' 'errors' 'touches' 'touches_def_pen_area'\n", " 'touches_def_3rd' 'touches_mid_3rd' 'touches_att_3rd'\n", " 'touches_att_pen_area' 'touches_live_ball' 'carries'\n", " 'progressive_carries' 'carries_into_final_third'\n", " 'carries_into_penalty_area' 'passes_received' 'miscontrols'\n", " 'dispossessed' 'cards_yellow_red' 'fouls' 'fouled' 'offsides' 'pens_won'\n", " 'pens_conceded' 'own_goals' 'ball_recoveries' 'aerials_won'\n", " 'aerials_lost' 'aerials_won_pct']\n", "Vs Team columns\n", "['team' 'players_used' 'possession' 'games' 'games_starts' 'minutes'\n", " 'goals' 'assists' 'pens_made' 'pens_att' 'cards_yellow' 'cards_red'\n", " 'goals_per90' 'assists_per90' 'goals_assists_per90' 'goals_pens_per90'\n", " 'goals_assists_pens_per90' 'xg' 'npxg' 'xg_per90' 'npxg_per90' 'gk_games'\n", " 'gk_games_starts' 'gk_minutes' 'gk_goals_against'\n", " 'gk_goals_against_per90' 'gk_shots_on_target_against' 'gk_saves'\n", " 'gk_save_pct' 'gk_wins' 'gk_ties' 'gk_losses' 'gk_clean_sheets'\n", " 'gk_clean_sheets_pct' 'gk_pens_att' 'gk_pens_allowed' 'gk_pens_saved'\n", " 'gk_pens_missed' 'minutes_90s' 'gk_free_kick_goals_against'\n", " 'gk_corner_kick_goals_against' 'gk_own_goals_against' 'gk_psxg'\n", " 'gk_psnpxg_per_shot_on_target_against' 'gk_psxg_net' 'gk_psxg_net_per90'\n", " 'gk_passes_completed_launched' 'gk_passes_launched'\n", " 'gk_passes_pct_launched' 'gk_passes' 'gk_passes_throws'\n", " 'gk_pct_passes_launched' 'gk_passes_length_avg' 'gk_goal_kicks'\n", " 'gk_pct_goal_kicks_launched' 'gk_goal_kick_length_avg' 'gk_crosses'\n", " 'gk_crosses_stopped' 'gk_crosses_stopped_pct'\n", " 'gk_def_actions_outside_pen_area' 'gk_def_actions_outside_pen_area_per90'\n", " 'gk_avg_distance_def_actions' 'shots_on_target' 'shots_free_kicks'\n", " 'shots_on_target_pct' 'shots_on_target_per90' 'goals_per_shot'\n", " 'goals_per_shot_on_target' 'npxg_per_shot' 'xg_net' 'npxg_net'\n", " 'passes_completed' 'passes' 'passes_pct' 'passes_total_distance'\n", " 'passes_progressive_distance' 'passes_completed_short' 'passes_short'\n", " 'passes_pct_short' 'passes_completed_medium' 'passes_medium'\n", " 'passes_pct_medium' 'passes_completed_long' 'passes_long'\n", " 'passes_pct_long' 'assisted_shots' 'passes_into_final_third'\n", " 'passes_into_penalty_area' 'crosses_into_penalty_area'\n", " 'progressive_passes' 'passes_live' 'passes_dead' 'passes_free_kicks'\n", " 'through_balls' 'passes_switches' 'crosses' 'corner_kicks'\n", " 'corner_kicks_in' 'corner_kicks_out' 'corner_kicks_straight' 'throw_ins'\n", " 'passes_offsides' 'passes_blocked' 'sca' 'sca_per90' 'sca_passes_live'\n", " 'sca_passes_dead' 'sca_shots' 'sca_fouled' 'gca' 'gca_per90'\n", " 'gca_passes_live' 'gca_passes_dead' 'gca_shots' 'gca_fouled'\n", " 'gca_defense' 'tackles' 'tackles_won' 'tackles_def_3rd' 'tackles_mid_3rd'\n", " 'tackles_att_3rd' 'blocks' 'blocked_shots' 'blocked_passes'\n", " 'interceptions' 'clearances' 'errors' 'touches' 'touches_def_pen_area'\n", " 'touches_def_3rd' 'touches_mid_3rd' 'touches_att_3rd'\n", " 'touches_att_pen_area' 'touches_live_ball' 'carries'\n", " 'progressive_carries' 'carries_into_final_third'\n", " 'carries_into_penalty_area' 'passes_received' 'miscontrols'\n", " 'dispossessed' 'cards_yellow_red' 'fouls' 'fouled' 'offsides' 'pens_won'\n", " 'pens_conceded' 'own_goals' 'ball_recoveries' 'aerials_won'\n", " 'aerials_lost' 'aerials_won_pct']\n" ] } ], "source": [ "print('Outfield player columns')\n", "print(df_outfield.columns.values)\n", "\n", "print('Keeper player columns')\n", "print(df_keeper.columns.values)\n", "\n", "print('Team columns')\n", "print(df_team.columns.values)\n", "\n", "print('Vs Team columns')\n", "print(df_team.columns.values)" ] }, { "cell_type": "markdown", "id": "e4f13ae2", "metadata": {}, "source": [ "Scrape data for past seasons. \n", "\n", "Do not repeat if data is already present." ] }, { "cell_type": "code", "execution_count": null, "id": "2e1370cd", "metadata": {}, "outputs": [], "source": [ "df_outfield = get_outfield_data('https://fbref.com/en/comps/11/2021-2022/','/2021-2022-Serie-A-Stats')\n", "\n", "df_outfield.to_csv('fbref_data/season2122/outfield_players.csv', index=False)\n", "\n", "df_outfield" ] }, { "cell_type": "code", "execution_count": 9, "id": "36441b0e", "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", "
playernationalitypositionteamagebirth_yeargk_gamesgk_games_startsgk_minutesgk_goals_against...gk_passes_length_avggk_goal_kicksgk_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_actions
0Emil Auderoit ITAGKSampdoria24199729.029.02560.048.0...36.3212.067.947.6418.022.05.325.00.8813.5
1Nicola Bagnoliniit ITAGKBologna1720041.00.03.00.0...61.01.0100.060.03.00.00.00.00.000.0
2Francesco Bardiit ITAGKBologna2919922.02.0177.02.0...33.013.038.532.124.02.08.30.00.005.5
3Vid Belecsi SVNGKSalernitana31199023.021.01938.049.0...39.5182.073.149.9329.012.03.614.00.6512.7
4Alessandro Berardiit ITAGKHellas Verona3019911.01.090.03.0...39.77.0100.058.712.00.00.00.00.000.0
5Etrit Berishaal ALBGKTorino32198910.010.0900.08.0...39.478.087.258.6148.07.04.710.01.0014.6
6Andrea Consigliit ITAGKSassuolo34198737.037.03322.063.0...30.9246.031.728.8491.021.04.330.00.8113.4
7Alessio Cragnoit ITAGKCagliari27199435.035.03150.063.0...39.4316.073.448.2484.022.04.533.00.9415.0
8Bartłomiej Drągowskipl POLGKFiorentina2319977.07.0556.08.0...30.839.043.640.261.02.03.320.03.2422.3
9Wladimiro Falconeit ITAGKSampdoria26199510.09.0855.014.0...33.274.070.345.0164.07.04.32.00.2110.2
10Vincenzo Fiorilloit ITAGKSalernitana3119901.01.090.05.0...36.412.083.350.816.00.00.00.00.004.0
11Luca Gemelloit ITAGKTorino2120001.01.090.00.0...47.83.0100.056.310.00.00.01.01.0021.0
12Samir Handanovićsi SVNGKInter37198437.037.03330.030.0...28.1142.020.426.5393.015.03.810.00.2711.2
13Luca Lezzeriniit ITAGKVenezia2619956.06.0495.09.0...30.344.034.131.0100.02.02.03.00.5513.8
14Niki Mäenpääfi FINGKVenezia36198517.016.01485.027.0...36.0143.039.235.4275.06.02.210.00.6110.8
15Mike Maignanfr FRAGKMilan26199532.032.02880.021.0...33.0149.038.936.5347.025.07.245.01.4116.8
16Davide Marfellait ITAGKNapoli2119991.00.011.00.0...15.00.00.00.01.00.00.00.00.000.0
17Alex Meretit ITAGKNapoli2419977.07.0619.06.0...25.136.025.026.589.03.03.45.00.7314.6
18Vanja Milinković-Savićrs SRBGKTorino24199727.027.02430.033.0...44.4169.091.166.3290.018.06.222.00.8114.3
19Lorenzo Montipòit ITAGKHellas Verona25199634.034.03060.050.0...42.3231.068.446.5495.021.04.223.00.6813.1
20Juan Mussoar ARGGKAtalanta27199433.033.02932.042.0...31.3208.069.249.7308.028.09.139.01.2016.5
21David Ospinaco COLGKNapoli32198831.031.02790.025.0...28.6135.014.122.5353.018.05.131.01.0017.0
22Daniele Padelliit ITAGKUdinese3519853.03.0270.08.0...29.622.050.040.956.01.01.82.00.6713.2
23Ivor Pandurhr CROGKHellas Verona2120003.03.0270.06.0...33.115.053.337.122.01.04.51.00.3311.3
24Rui Patríciopt PORGKRoma33198838.038.03420.043.0...34.2222.032.031.5393.012.03.126.00.6814.3
25Gianluca Pegoloit ITAGKSassuolo4019811.01.090.03.0...26.78.012.519.88.01.012.50.00.006.0
26Mattia Perinit ITAGKJuventus2819925.05.0405.07.0...29.626.023.129.277.01.01.34.00.8912.6
27Carlo Pinsoglioit ITAGKJuventus3119901.00.045.01.0...29.61.00.037.012.00.00.00.00.000.0
28Ivan Provedelit ITAGKSpezia27199431.031.02761.052.0...40.1229.069.451.7476.028.05.925.00.8111.8
29Ionuț Raduro ROUGKInter2419971.01.090.02.0...33.34.025.029.84.00.00.01.01.0016.0
30Boris Radunovićrs SRBGKCagliari2519963.03.0270.05.0...41.528.082.151.142.01.02.41.00.3313.8
31Nicola Ravagliait ITAGKSampdoria3219881.00.05.01.0...57.02.0100.065.51.00.00.00.00.000.0
32Pepe Reinaes ESPGKLazio38198215.015.01350.029.0...29.899.029.330.1186.010.05.410.00.6713.7
33Sergio Romeroar ARGGKVenezia34198716.016.01440.033.0...34.6142.045.838.8265.014.05.311.00.6911.8
34Francesco Rossiit ITAGKAtalanta3019911.00.037.01.0...37.84.025.039.33.00.00.00.00.0018.0
35Giacomo Satalinoit ITAGKSassuolo2219991.00.08.00.0...0.01.00.022.01.00.00.00.00.000.0
36Adrian Šemperhr CROGKGenoa2319981.01.090.01.0...38.57.085.752.014.02.014.30.00.0011.2
37Luigi Sepeit ITAGKSalernitana30199116.016.01392.024.0...40.8130.063.846.4235.010.04.313.00.8416.0
38Marco Silvestriit ITAGKUdinese30199135.035.03150.050.0...36.7252.046.838.4462.016.03.510.00.2911.0
39Salvatore Siriguit ITAGKGenoa34198737.037.03330.059.0...36.6263.068.845.9476.014.02.920.00.5412.9
40Łukasz Skorupskipl POLGKBologna30199136.036.03240.053.0...34.0294.028.926.6498.027.05.414.00.3911.3
41Marco Sportielloit ITAGKAtalanta2919925.05.0450.05.0...26.028.064.347.045.01.02.24.00.8013.9
42Thomas Strakoshaal ALBGKLazio26199523.023.02070.029.0...28.5119.020.223.6283.011.03.916.00.7014.5
43Wojciech Szczęsnypl POLGKJuventus31199033.033.02970.029.0...30.8172.029.731.5481.024.05.025.00.7613.5
44Ciprian Tătărușanuro ROUGKMilan3519866.06.0540.010.0...33.336.036.135.082.06.07.33.00.5012.5
45Pietro Terraccianoit ITAGKFiorentina31199032.031.02862.043.0...32.2170.035.333.7291.022.07.651.01.6016.7
46Guglielmo Vicarioit ITAGKEmpoli24199638.038.03420.070.0...29.5257.041.637.5602.035.05.838.01.0013.9
47Jeroen Zoetnl NEDGKSpezia3019917.07.0630.019.0...30.754.037.037.495.02.02.16.00.8616.4
48Petar Zovkoba BIHGKSpezia1920021.00.029.00.0...35.92.050.035.04.00.00.02.06.2128.5
\n", "

49 rows × 47 columns

\n", "
" ], "text/plain": [ " player nationality position team age birth_year \\\n", "0 Emil Audero it ITA GK Sampdoria 24 1997 \n", "1 Nicola Bagnolini it ITA GK Bologna 17 2004 \n", "2 Francesco Bardi it ITA GK Bologna 29 1992 \n", "3 Vid Belec si SVN GK Salernitana 31 1990 \n", "4 Alessandro Berardi it ITA GK Hellas Verona 30 1991 \n", "5 Etrit Berisha al ALB GK Torino 32 1989 \n", "6 Andrea Consigli it ITA GK Sassuolo 34 1987 \n", "7 Alessio Cragno it ITA GK Cagliari 27 1994 \n", "8 Bartłomiej Drągowski pl POL GK Fiorentina 23 1997 \n", "9 Wladimiro Falcone it ITA GK Sampdoria 26 1995 \n", "10 Vincenzo Fiorillo it ITA GK Salernitana 31 1990 \n", "11 Luca Gemello it ITA GK Torino 21 2000 \n", "12 Samir Handanović si SVN GK Inter 37 1984 \n", "13 Luca Lezzerini it ITA GK Venezia 26 1995 \n", "14 Niki Mäenpää fi FIN GK Venezia 36 1985 \n", "15 Mike Maignan fr FRA GK Milan 26 1995 \n", "16 Davide Marfella it ITA GK Napoli 21 1999 \n", "17 Alex Meret it ITA GK Napoli 24 1997 \n", "18 Vanja Milinković-Savić rs SRB GK Torino 24 1997 \n", "19 Lorenzo Montipò it ITA GK Hellas Verona 25 1996 \n", "20 Juan Musso ar ARG GK Atalanta 27 1994 \n", "21 David Ospina co COL GK Napoli 32 1988 \n", "22 Daniele Padelli it ITA GK Udinese 35 1985 \n", "23 Ivor Pandur hr CRO GK Hellas Verona 21 2000 \n", "24 Rui Patrício pt POR GK Roma 33 1988 \n", "25 Gianluca Pegolo it ITA GK Sassuolo 40 1981 \n", "26 Mattia Perin it ITA GK Juventus 28 1992 \n", "27 Carlo Pinsoglio it ITA GK Juventus 31 1990 \n", "28 Ivan Provedel it ITA GK Spezia 27 1994 \n", "29 Ionuț Radu ro ROU GK Inter 24 1997 \n", "30 Boris Radunović rs SRB GK Cagliari 25 1996 \n", "31 Nicola Ravaglia it ITA GK Sampdoria 32 1988 \n", "32 Pepe Reina es ESP GK Lazio 38 1982 \n", "33 Sergio Romero ar ARG GK Venezia 34 1987 \n", "34 Francesco Rossi it ITA GK Atalanta 30 1991 \n", "35 Giacomo Satalino it ITA GK Sassuolo 22 1999 \n", "36 Adrian Šemper hr CRO GK Genoa 23 1998 \n", "37 Luigi Sepe it ITA GK Salernitana 30 1991 \n", "38 Marco Silvestri it ITA GK Udinese 30 1991 \n", "39 Salvatore Sirigu it ITA GK Genoa 34 1987 \n", "40 Łukasz Skorupski pl POL GK Bologna 30 1991 \n", "41 Marco Sportiello it ITA GK Atalanta 29 1992 \n", "42 Thomas Strakosha al ALB GK Lazio 26 1995 \n", "43 Wojciech Szczęsny pl POL GK Juventus 31 1990 \n", "44 Ciprian Tătărușanu ro ROU GK Milan 35 1986 \n", "45 Pietro Terracciano it ITA GK Fiorentina 31 1990 \n", "46 Guglielmo Vicario it ITA GK Empoli 24 1996 \n", "47 Jeroen Zoet nl NED GK Spezia 30 1991 \n", "48 Petar Zovko ba BIH GK Spezia 19 2002 \n", "\n", " gk_games gk_games_starts gk_minutes gk_goals_against ... \\\n", "0 29.0 29.0 2560.0 48.0 ... \n", "1 1.0 0.0 3.0 0.0 ... \n", "2 2.0 2.0 177.0 2.0 ... \n", "3 23.0 21.0 1938.0 49.0 ... \n", "4 1.0 1.0 90.0 3.0 ... \n", "5 10.0 10.0 900.0 8.0 ... \n", "6 37.0 37.0 3322.0 63.0 ... \n", "7 35.0 35.0 3150.0 63.0 ... \n", "8 7.0 7.0 556.0 8.0 ... \n", "9 10.0 9.0 855.0 14.0 ... \n", "10 1.0 1.0 90.0 5.0 ... \n", "11 1.0 1.0 90.0 0.0 ... \n", "12 37.0 37.0 3330.0 30.0 ... \n", "13 6.0 6.0 495.0 9.0 ... \n", "14 17.0 16.0 1485.0 27.0 ... \n", "15 32.0 32.0 2880.0 21.0 ... \n", "16 1.0 0.0 11.0 0.0 ... \n", "17 7.0 7.0 619.0 6.0 ... \n", "18 27.0 27.0 2430.0 33.0 ... \n", "19 34.0 34.0 3060.0 50.0 ... \n", "20 33.0 33.0 2932.0 42.0 ... \n", "21 31.0 31.0 2790.0 25.0 ... \n", "22 3.0 3.0 270.0 8.0 ... \n", "23 3.0 3.0 270.0 6.0 ... \n", "24 38.0 38.0 3420.0 43.0 ... \n", "25 1.0 1.0 90.0 3.0 ... \n", "26 5.0 5.0 405.0 7.0 ... \n", "27 1.0 0.0 45.0 1.0 ... \n", "28 31.0 31.0 2761.0 52.0 ... \n", "29 1.0 1.0 90.0 2.0 ... \n", "30 3.0 3.0 270.0 5.0 ... \n", "31 1.0 0.0 5.0 1.0 ... \n", "32 15.0 15.0 1350.0 29.0 ... \n", "33 16.0 16.0 1440.0 33.0 ... \n", "34 1.0 0.0 37.0 1.0 ... \n", "35 1.0 0.0 8.0 0.0 ... \n", "36 1.0 1.0 90.0 1.0 ... \n", "37 16.0 16.0 1392.0 24.0 ... \n", "38 35.0 35.0 3150.0 50.0 ... \n", "39 37.0 37.0 3330.0 59.0 ... \n", "40 36.0 36.0 3240.0 53.0 ... \n", "41 5.0 5.0 450.0 5.0 ... \n", "42 23.0 23.0 2070.0 29.0 ... \n", "43 33.0 33.0 2970.0 29.0 ... \n", "44 6.0 6.0 540.0 10.0 ... \n", "45 32.0 31.0 2862.0 43.0 ... \n", "46 38.0 38.0 3420.0 70.0 ... \n", "47 7.0 7.0 630.0 19.0 ... \n", "48 1.0 0.0 29.0 0.0 ... \n", "\n", " gk_passes_length_avg gk_goal_kicks gk_pct_goal_kicks_launched \\\n", "0 36.3 212.0 67.9 \n", "1 61.0 1.0 100.0 \n", "2 33.0 13.0 38.5 \n", "3 39.5 182.0 73.1 \n", "4 39.7 7.0 100.0 \n", "5 39.4 78.0 87.2 \n", "6 30.9 246.0 31.7 \n", "7 39.4 316.0 73.4 \n", "8 30.8 39.0 43.6 \n", "9 33.2 74.0 70.3 \n", "10 36.4 12.0 83.3 \n", "11 47.8 3.0 100.0 \n", "12 28.1 142.0 20.4 \n", "13 30.3 44.0 34.1 \n", "14 36.0 143.0 39.2 \n", "15 33.0 149.0 38.9 \n", "16 15.0 0.0 0.0 \n", "17 25.1 36.0 25.0 \n", "18 44.4 169.0 91.1 \n", "19 42.3 231.0 68.4 \n", "20 31.3 208.0 69.2 \n", "21 28.6 135.0 14.1 \n", "22 29.6 22.0 50.0 \n", "23 33.1 15.0 53.3 \n", "24 34.2 222.0 32.0 \n", "25 26.7 8.0 12.5 \n", "26 29.6 26.0 23.1 \n", "27 29.6 1.0 0.0 \n", "28 40.1 229.0 69.4 \n", "29 33.3 4.0 25.0 \n", "30 41.5 28.0 82.1 \n", "31 57.0 2.0 100.0 \n", "32 29.8 99.0 29.3 \n", "33 34.6 142.0 45.8 \n", "34 37.8 4.0 25.0 \n", "35 0.0 1.0 0.0 \n", "36 38.5 7.0 85.7 \n", "37 40.8 130.0 63.8 \n", "38 36.7 252.0 46.8 \n", "39 36.6 263.0 68.8 \n", "40 34.0 294.0 28.9 \n", "41 26.0 28.0 64.3 \n", "42 28.5 119.0 20.2 \n", "43 30.8 172.0 29.7 \n", "44 33.3 36.0 36.1 \n", "45 32.2 170.0 35.3 \n", "46 29.5 257.0 41.6 \n", "47 30.7 54.0 37.0 \n", "48 35.9 2.0 50.0 \n", "\n", " gk_goal_kick_length_avg gk_crosses gk_crosses_stopped \\\n", "0 47.6 418.0 22.0 \n", "1 60.0 3.0 0.0 \n", "2 32.1 24.0 2.0 \n", "3 49.9 329.0 12.0 \n", "4 58.7 12.0 0.0 \n", "5 58.6 148.0 7.0 \n", "6 28.8 491.0 21.0 \n", "7 48.2 484.0 22.0 \n", "8 40.2 61.0 2.0 \n", "9 45.0 164.0 7.0 \n", "10 50.8 16.0 0.0 \n", "11 56.3 10.0 0.0 \n", "12 26.5 393.0 15.0 \n", "13 31.0 100.0 2.0 \n", "14 35.4 275.0 6.0 \n", "15 36.5 347.0 25.0 \n", "16 0.0 1.0 0.0 \n", "17 26.5 89.0 3.0 \n", "18 66.3 290.0 18.0 \n", "19 46.5 495.0 21.0 \n", "20 49.7 308.0 28.0 \n", "21 22.5 353.0 18.0 \n", "22 40.9 56.0 1.0 \n", "23 37.1 22.0 1.0 \n", "24 31.5 393.0 12.0 \n", "25 19.8 8.0 1.0 \n", "26 29.2 77.0 1.0 \n", "27 37.0 12.0 0.0 \n", "28 51.7 476.0 28.0 \n", "29 29.8 4.0 0.0 \n", "30 51.1 42.0 1.0 \n", "31 65.5 1.0 0.0 \n", "32 30.1 186.0 10.0 \n", "33 38.8 265.0 14.0 \n", "34 39.3 3.0 0.0 \n", "35 22.0 1.0 0.0 \n", "36 52.0 14.0 2.0 \n", "37 46.4 235.0 10.0 \n", "38 38.4 462.0 16.0 \n", "39 45.9 476.0 14.0 \n", "40 26.6 498.0 27.0 \n", "41 47.0 45.0 1.0 \n", "42 23.6 283.0 11.0 \n", "43 31.5 481.0 24.0 \n", "44 35.0 82.0 6.0 \n", "45 33.7 291.0 22.0 \n", "46 37.5 602.0 35.0 \n", "47 37.4 95.0 2.0 \n", "48 35.0 4.0 0.0 \n", "\n", " gk_crosses_stopped_pct gk_def_actions_outside_pen_area \\\n", "0 5.3 25.0 \n", "1 0.0 0.0 \n", "2 8.3 0.0 \n", "3 3.6 14.0 \n", "4 0.0 0.0 \n", "5 4.7 10.0 \n", "6 4.3 30.0 \n", "7 4.5 33.0 \n", "8 3.3 20.0 \n", "9 4.3 2.0 \n", "10 0.0 0.0 \n", "11 0.0 1.0 \n", "12 3.8 10.0 \n", "13 2.0 3.0 \n", "14 2.2 10.0 \n", "15 7.2 45.0 \n", "16 0.0 0.0 \n", "17 3.4 5.0 \n", "18 6.2 22.0 \n", "19 4.2 23.0 \n", "20 9.1 39.0 \n", "21 5.1 31.0 \n", "22 1.8 2.0 \n", "23 4.5 1.0 \n", "24 3.1 26.0 \n", "25 12.5 0.0 \n", "26 1.3 4.0 \n", "27 0.0 0.0 \n", "28 5.9 25.0 \n", "29 0.0 1.0 \n", "30 2.4 1.0 \n", "31 0.0 0.0 \n", "32 5.4 10.0 \n", "33 5.3 11.0 \n", "34 0.0 0.0 \n", "35 0.0 0.0 \n", "36 14.3 0.0 \n", "37 4.3 13.0 \n", "38 3.5 10.0 \n", "39 2.9 20.0 \n", "40 5.4 14.0 \n", "41 2.2 4.0 \n", "42 3.9 16.0 \n", "43 5.0 25.0 \n", "44 7.3 3.0 \n", "45 7.6 51.0 \n", "46 5.8 38.0 \n", "47 2.1 6.0 \n", "48 0.0 2.0 \n", "\n", " gk_def_actions_outside_pen_area_per90 gk_avg_distance_def_actions \n", "0 0.88 13.5 \n", "1 0.00 0.0 \n", "2 0.00 5.5 \n", "3 0.65 12.7 \n", "4 0.00 0.0 \n", "5 1.00 14.6 \n", "6 0.81 13.4 \n", "7 0.94 15.0 \n", "8 3.24 22.3 \n", "9 0.21 10.2 \n", "10 0.00 4.0 \n", "11 1.00 21.0 \n", "12 0.27 11.2 \n", "13 0.55 13.8 \n", "14 0.61 10.8 \n", "15 1.41 16.8 \n", "16 0.00 0.0 \n", "17 0.73 14.6 \n", "18 0.81 14.3 \n", "19 0.68 13.1 \n", "20 1.20 16.5 \n", "21 1.00 17.0 \n", "22 0.67 13.2 \n", "23 0.33 11.3 \n", "24 0.68 14.3 \n", "25 0.00 6.0 \n", "26 0.89 12.6 \n", "27 0.00 0.0 \n", "28 0.81 11.8 \n", "29 1.00 16.0 \n", "30 0.33 13.8 \n", "31 0.00 0.0 \n", "32 0.67 13.7 \n", "33 0.69 11.8 \n", "34 0.00 18.0 \n", "35 0.00 0.0 \n", "36 0.00 11.2 \n", "37 0.84 16.0 \n", "38 0.29 11.0 \n", "39 0.54 12.9 \n", "40 0.39 11.3 \n", "41 0.80 13.9 \n", "42 0.70 14.5 \n", "43 0.76 13.5 \n", "44 0.50 12.5 \n", "45 1.60 16.7 \n", "46 1.00 13.9 \n", "47 0.86 16.4 \n", "48 6.21 28.5 \n", "\n", "[49 rows x 47 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_keeper = get_keeper_data('https://fbref.com/en/comps/11/2021-2022/','/2021-2022-Serie-A-Stats')\n", "\n", "df_keeper.to_csv('fbref_data/season2122/keepers_players.csv', index=False)\n", "\n", "df_keeper" ] }, { "cell_type": "code", "execution_count": 10, "id": "9172edae", "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", "
teamplayers_usedpossessiongamesgames_startsminutesgoalsassistspens_madepens_att...foulsfouledoffsidespens_wonpens_concededown_goalsball_recoveriesaerials_wonaerials_lostaerials_won_pct
0Atalanta32.055.038.0418.03420.062.048.05.06.0...513.0454.068.03.06.03.02292.0685.0518.056.9
1Bologna36.050.638.0418.03420.043.034.04.05.0...443.0497.056.03.09.02.01972.0492.0520.048.6
2Cagliari33.044.538.0418.03420.034.026.03.04.0...549.0490.070.03.010.01.01995.0696.0742.048.4
3Empoli28.047.438.0418.03420.047.027.07.07.0...506.0463.083.06.010.06.01998.0427.0549.043.8
4Fiorentina28.057.738.0418.03420.059.033.09.012.0...464.0565.057.08.05.02.01885.0469.0456.050.7
5Genoa40.043.938.0418.03420.026.019.06.07.0...566.0499.072.04.05.02.02228.0635.0743.046.1
6Hellas Verona31.050.638.0418.03420.063.044.07.08.0...560.0429.097.06.04.02.02413.0689.0733.048.5
7Inter27.056.538.0418.03420.083.057.07.011.0...466.0412.057.07.04.01.02004.0549.0476.053.6
8Juventus32.051.538.0418.03420.056.037.05.06.0...508.0503.074.05.07.01.02008.0550.0440.055.6
9Lazio27.055.438.0418.03420.074.048.07.09.0...441.0450.044.06.06.01.01941.0411.0427.049.0
10Milan28.054.038.0418.03420.066.039.05.08.0...465.0513.080.05.05.02.02167.0521.0517.050.2
11Napoli27.058.338.0418.03420.074.046.010.014.0...460.0482.067.09.01.01.01981.0393.0403.049.4
12Roma29.051.438.0418.03420.058.031.07.09.0...500.0474.060.05.06.02.01980.0524.0441.054.3
13Salernitana42.041.238.0418.03420.032.019.04.05.0...494.0522.041.04.08.02.01849.0657.0506.056.5
14Sampdoria34.046.138.0418.03420.042.029.02.04.0...495.0513.082.03.04.02.02044.0609.0506.054.6
15Sassuolo29.054.938.0418.03420.060.039.07.07.0...461.0479.043.06.09.01.01926.0343.0404.045.9
16Spezia30.042.738.0418.03420.038.025.03.05.0...508.0439.077.04.013.03.01994.0530.0589.047.4
17Torino31.053.338.0418.03420.043.027.06.06.0...636.0460.084.04.011.00.02113.0781.0891.046.7
18Udinese29.042.738.0418.03420.058.036.03.04.0...564.0461.078.04.07.01.02027.0453.0534.045.9
19Venezia39.042.338.0418.03420.034.023.03.05.0...522.0457.061.05.012.02.01942.0564.0583.049.2
\n", "

20 rows × 152 columns

\n", "
" ], "text/plain": [ " team players_used possession games games_starts minutes \\\n", "0 Atalanta 32.0 55.0 38.0 418.0 3420.0 \n", "1 Bologna 36.0 50.6 38.0 418.0 3420.0 \n", "2 Cagliari 33.0 44.5 38.0 418.0 3420.0 \n", "3 Empoli 28.0 47.4 38.0 418.0 3420.0 \n", "4 Fiorentina 28.0 57.7 38.0 418.0 3420.0 \n", "5 Genoa 40.0 43.9 38.0 418.0 3420.0 \n", "6 Hellas Verona 31.0 50.6 38.0 418.0 3420.0 \n", "7 Inter 27.0 56.5 38.0 418.0 3420.0 \n", "8 Juventus 32.0 51.5 38.0 418.0 3420.0 \n", "9 Lazio 27.0 55.4 38.0 418.0 3420.0 \n", "10 Milan 28.0 54.0 38.0 418.0 3420.0 \n", "11 Napoli 27.0 58.3 38.0 418.0 3420.0 \n", "12 Roma 29.0 51.4 38.0 418.0 3420.0 \n", "13 Salernitana 42.0 41.2 38.0 418.0 3420.0 \n", "14 Sampdoria 34.0 46.1 38.0 418.0 3420.0 \n", "15 Sassuolo 29.0 54.9 38.0 418.0 3420.0 \n", "16 Spezia 30.0 42.7 38.0 418.0 3420.0 \n", "17 Torino 31.0 53.3 38.0 418.0 3420.0 \n", "18 Udinese 29.0 42.7 38.0 418.0 3420.0 \n", "19 Venezia 39.0 42.3 38.0 418.0 3420.0 \n", "\n", " goals assists pens_made pens_att ... fouls fouled offsides \\\n", "0 62.0 48.0 5.0 6.0 ... 513.0 454.0 68.0 \n", "1 43.0 34.0 4.0 5.0 ... 443.0 497.0 56.0 \n", "2 34.0 26.0 3.0 4.0 ... 549.0 490.0 70.0 \n", "3 47.0 27.0 7.0 7.0 ... 506.0 463.0 83.0 \n", "4 59.0 33.0 9.0 12.0 ... 464.0 565.0 57.0 \n", "5 26.0 19.0 6.0 7.0 ... 566.0 499.0 72.0 \n", "6 63.0 44.0 7.0 8.0 ... 560.0 429.0 97.0 \n", "7 83.0 57.0 7.0 11.0 ... 466.0 412.0 57.0 \n", "8 56.0 37.0 5.0 6.0 ... 508.0 503.0 74.0 \n", "9 74.0 48.0 7.0 9.0 ... 441.0 450.0 44.0 \n", "10 66.0 39.0 5.0 8.0 ... 465.0 513.0 80.0 \n", "11 74.0 46.0 10.0 14.0 ... 460.0 482.0 67.0 \n", "12 58.0 31.0 7.0 9.0 ... 500.0 474.0 60.0 \n", "13 32.0 19.0 4.0 5.0 ... 494.0 522.0 41.0 \n", "14 42.0 29.0 2.0 4.0 ... 495.0 513.0 82.0 \n", "15 60.0 39.0 7.0 7.0 ... 461.0 479.0 43.0 \n", "16 38.0 25.0 3.0 5.0 ... 508.0 439.0 77.0 \n", "17 43.0 27.0 6.0 6.0 ... 636.0 460.0 84.0 \n", "18 58.0 36.0 3.0 4.0 ... 564.0 461.0 78.0 \n", "19 34.0 23.0 3.0 5.0 ... 522.0 457.0 61.0 \n", "\n", " pens_won pens_conceded own_goals ball_recoveries aerials_won \\\n", "0 3.0 6.0 3.0 2292.0 685.0 \n", "1 3.0 9.0 2.0 1972.0 492.0 \n", "2 3.0 10.0 1.0 1995.0 696.0 \n", "3 6.0 10.0 6.0 1998.0 427.0 \n", "4 8.0 5.0 2.0 1885.0 469.0 \n", "5 4.0 5.0 2.0 2228.0 635.0 \n", "6 6.0 4.0 2.0 2413.0 689.0 \n", "7 7.0 4.0 1.0 2004.0 549.0 \n", "8 5.0 7.0 1.0 2008.0 550.0 \n", "9 6.0 6.0 1.0 1941.0 411.0 \n", "10 5.0 5.0 2.0 2167.0 521.0 \n", "11 9.0 1.0 1.0 1981.0 393.0 \n", "12 5.0 6.0 2.0 1980.0 524.0 \n", "13 4.0 8.0 2.0 1849.0 657.0 \n", "14 3.0 4.0 2.0 2044.0 609.0 \n", "15 6.0 9.0 1.0 1926.0 343.0 \n", "16 4.0 13.0 3.0 1994.0 530.0 \n", "17 4.0 11.0 0.0 2113.0 781.0 \n", "18 4.0 7.0 1.0 2027.0 453.0 \n", "19 5.0 12.0 2.0 1942.0 564.0 \n", "\n", " aerials_lost aerials_won_pct \n", "0 518.0 56.9 \n", "1 520.0 48.6 \n", "2 742.0 48.4 \n", "3 549.0 43.8 \n", "4 456.0 50.7 \n", "5 743.0 46.1 \n", "6 733.0 48.5 \n", "7 476.0 53.6 \n", "8 440.0 55.6 \n", "9 427.0 49.0 \n", "10 517.0 50.2 \n", "11 403.0 49.4 \n", "12 441.0 54.3 \n", "13 506.0 56.5 \n", "14 506.0 54.6 \n", "15 404.0 45.9 \n", "16 589.0 47.4 \n", "17 891.0 46.7 \n", "18 534.0 45.9 \n", "19 583.0 49.2 \n", "\n", "[20 rows x 152 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_team = get_team_data('https://fbref.com/en/comps/11/2021-2022/','/2021-2022-Serie-A-Stats', 'for')\n", "\n", "df_team.to_csv('fbref_data/season2122/teams.csv', index=False)\n", "\n", "df_team" ] }, { "cell_type": "code", "execution_count": 11, "id": "fa6258db", "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", "
teamplayers_usedpossessiongamesgames_startsminutesgoalsassistspens_madepens_att...foulsfouledoffsidespens_wonpens_concededown_goalsball_recoveriesaerials_wonaerials_lostaerials_won_pct
0vs Atalanta32.044.938.0418.03420.045.029.05.06.0...491.0488.069.04.06.03.02240.0518.0685.043.1
1vs Bologna36.049.338.0418.03420.053.032.08.09.0...527.0416.088.08.05.01.02032.0520.0492.051.4
2vs Cagliari33.055.638.0418.03420.067.041.07.010.0...526.0524.076.06.04.00.02112.0742.0696.051.6
3vs Empoli28.052.938.0418.03420.064.044.05.010.0...488.0482.066.07.07.03.02051.0549.0427.056.3
4vs Fiorentina28.041.838.0418.03420.049.033.03.05.0...585.0441.0119.04.012.00.01825.0456.0469.049.3
5vs Genoa40.056.138.0418.03420.058.035.04.05.0...523.0530.059.04.07.01.02257.0743.0635.053.9
6vs Hellas Verona31.049.438.0418.03420.057.038.03.04.0...463.0534.032.03.08.02.02206.0733.0689.051.5
7vs Inter27.043.438.0418.03420.031.019.04.04.0...440.0441.034.03.011.01.01767.0476.0549.046.4
8vs Juventus32.048.338.0418.03420.036.021.04.07.0...525.0471.035.05.06.01.01894.0440.0550.044.4
9vs Lazio27.044.438.0418.03420.057.040.05.06.0...474.0418.073.06.09.03.01956.0427.0411.051.0
10vs Milan28.045.838.0418.03420.029.019.04.05.0...533.0440.063.03.08.03.02106.0517.0521.049.8
11vs Napoli27.041.538.0418.03420.030.019.01.01.0...517.0415.060.00.014.00.01963.0403.0393.050.6
12vs Roma29.048.638.0418.03420.041.023.05.06.0...497.0477.081.05.09.01.01970.0441.0524.045.7
13vs Salernitana42.059.038.0418.03420.076.058.06.08.0...546.0463.063.06.05.01.02043.0506.0657.043.5
14vs Sampdoria34.054.138.0418.03420.061.041.03.04.0...538.0471.064.01.04.04.02174.0506.0609.045.4
15vs Sassuolo29.044.838.0418.03420.065.048.08.09.0...519.0434.0142.06.07.04.02041.0404.0343.054.1
16vs Spezia30.057.338.0418.03420.068.044.010.013.0...474.0477.062.08.05.03.02064.0589.0530.052.6
17vs Torino31.046.438.0418.03420.041.025.09.011.0...485.0611.060.010.06.03.01989.0891.0781.053.3
18vs Udinese29.057.738.0418.03420.057.039.05.07.0...494.0537.057.06.04.03.02010.0534.0453.054.1
19vs Venezia39.057.938.0418.03420.067.039.011.012.0...476.0492.048.05.05.00.02059.0583.0564.050.8
\n", "

20 rows × 152 columns

\n", "
" ], "text/plain": [ " team players_used possession games games_starts minutes \\\n", "0 vs Atalanta 32.0 44.9 38.0 418.0 3420.0 \n", "1 vs Bologna 36.0 49.3 38.0 418.0 3420.0 \n", "2 vs Cagliari 33.0 55.6 38.0 418.0 3420.0 \n", "3 vs Empoli 28.0 52.9 38.0 418.0 3420.0 \n", "4 vs Fiorentina 28.0 41.8 38.0 418.0 3420.0 \n", "5 vs Genoa 40.0 56.1 38.0 418.0 3420.0 \n", "6 vs Hellas Verona 31.0 49.4 38.0 418.0 3420.0 \n", "7 vs Inter 27.0 43.4 38.0 418.0 3420.0 \n", "8 vs Juventus 32.0 48.3 38.0 418.0 3420.0 \n", "9 vs Lazio 27.0 44.4 38.0 418.0 3420.0 \n", "10 vs Milan 28.0 45.8 38.0 418.0 3420.0 \n", "11 vs Napoli 27.0 41.5 38.0 418.0 3420.0 \n", "12 vs Roma 29.0 48.6 38.0 418.0 3420.0 \n", "13 vs Salernitana 42.0 59.0 38.0 418.0 3420.0 \n", "14 vs Sampdoria 34.0 54.1 38.0 418.0 3420.0 \n", "15 vs Sassuolo 29.0 44.8 38.0 418.0 3420.0 \n", "16 vs Spezia 30.0 57.3 38.0 418.0 3420.0 \n", "17 vs Torino 31.0 46.4 38.0 418.0 3420.0 \n", "18 vs Udinese 29.0 57.7 38.0 418.0 3420.0 \n", "19 vs Venezia 39.0 57.9 38.0 418.0 3420.0 \n", "\n", " goals assists pens_made pens_att ... fouls fouled offsides \\\n", "0 45.0 29.0 5.0 6.0 ... 491.0 488.0 69.0 \n", "1 53.0 32.0 8.0 9.0 ... 527.0 416.0 88.0 \n", "2 67.0 41.0 7.0 10.0 ... 526.0 524.0 76.0 \n", "3 64.0 44.0 5.0 10.0 ... 488.0 482.0 66.0 \n", "4 49.0 33.0 3.0 5.0 ... 585.0 441.0 119.0 \n", "5 58.0 35.0 4.0 5.0 ... 523.0 530.0 59.0 \n", "6 57.0 38.0 3.0 4.0 ... 463.0 534.0 32.0 \n", "7 31.0 19.0 4.0 4.0 ... 440.0 441.0 34.0 \n", "8 36.0 21.0 4.0 7.0 ... 525.0 471.0 35.0 \n", "9 57.0 40.0 5.0 6.0 ... 474.0 418.0 73.0 \n", "10 29.0 19.0 4.0 5.0 ... 533.0 440.0 63.0 \n", "11 30.0 19.0 1.0 1.0 ... 517.0 415.0 60.0 \n", "12 41.0 23.0 5.0 6.0 ... 497.0 477.0 81.0 \n", "13 76.0 58.0 6.0 8.0 ... 546.0 463.0 63.0 \n", "14 61.0 41.0 3.0 4.0 ... 538.0 471.0 64.0 \n", "15 65.0 48.0 8.0 9.0 ... 519.0 434.0 142.0 \n", "16 68.0 44.0 10.0 13.0 ... 474.0 477.0 62.0 \n", "17 41.0 25.0 9.0 11.0 ... 485.0 611.0 60.0 \n", "18 57.0 39.0 5.0 7.0 ... 494.0 537.0 57.0 \n", "19 67.0 39.0 11.0 12.0 ... 476.0 492.0 48.0 \n", "\n", " pens_won pens_conceded own_goals ball_recoveries aerials_won \\\n", "0 4.0 6.0 3.0 2240.0 518.0 \n", "1 8.0 5.0 1.0 2032.0 520.0 \n", "2 6.0 4.0 0.0 2112.0 742.0 \n", "3 7.0 7.0 3.0 2051.0 549.0 \n", "4 4.0 12.0 0.0 1825.0 456.0 \n", "5 4.0 7.0 1.0 2257.0 743.0 \n", "6 3.0 8.0 2.0 2206.0 733.0 \n", "7 3.0 11.0 1.0 1767.0 476.0 \n", "8 5.0 6.0 1.0 1894.0 440.0 \n", "9 6.0 9.0 3.0 1956.0 427.0 \n", "10 3.0 8.0 3.0 2106.0 517.0 \n", "11 0.0 14.0 0.0 1963.0 403.0 \n", "12 5.0 9.0 1.0 1970.0 441.0 \n", "13 6.0 5.0 1.0 2043.0 506.0 \n", "14 1.0 4.0 4.0 2174.0 506.0 \n", "15 6.0 7.0 4.0 2041.0 404.0 \n", "16 8.0 5.0 3.0 2064.0 589.0 \n", "17 10.0 6.0 3.0 1989.0 891.0 \n", "18 6.0 4.0 3.0 2010.0 534.0 \n", "19 5.0 5.0 0.0 2059.0 583.0 \n", "\n", " aerials_lost aerials_won_pct \n", "0 685.0 43.1 \n", "1 492.0 51.4 \n", "2 696.0 51.6 \n", "3 427.0 56.3 \n", "4 469.0 49.3 \n", "5 635.0 53.9 \n", "6 689.0 51.5 \n", "7 549.0 46.4 \n", "8 550.0 44.4 \n", "9 411.0 51.0 \n", "10 521.0 49.8 \n", "11 393.0 50.6 \n", "12 524.0 45.7 \n", "13 657.0 43.5 \n", "14 609.0 45.4 \n", "15 343.0 54.1 \n", "16 530.0 52.6 \n", "17 781.0 53.3 \n", "18 453.0 54.1 \n", "19 564.0 50.8 \n", "\n", "[20 rows x 152 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_vsteam = get_team_data('https://fbref.com/en/comps/11/2021-2022/','/2021-2022-Serie-A-Stats', 'vs')\n", "\n", "df_vsteam.to_csv('fbref_data/season2122/teams_vs.csv', index=False)\n", "\n", "df_vsteam" ] }, { "cell_type": "code", "execution_count": 12, "id": "22ad9be5", "metadata": {}, "outputs": [], "source": [ "df_outfield = get_outfield_data('https://fbref.com/en/comps/11/2020-2021/','/2020-2021-Serie-A-Stats')\n", "df_outfield.to_csv('fbref_data/season2021/outfield_players.csv', index=False)\n", "\n", "df_keeper = get_keeper_data('https://fbref.com/en/comps/11/2020-2021/','/2020-2021-Serie-A-Stats')\n", "df_keeper.to_csv('fbref_data/season2021/keepers_players.csv', index=False)\n", "\n", "df_team = get_team_data('https://fbref.com/en/comps/11/2020-2021/','/2020-2021-Serie-A-Stats', 'for')\n", "df_team.to_csv('fbref_data/season2021/teams.csv', index=False)\n", "\n", "df_vsteam = get_team_data('https://fbref.com/en/comps/11/2020-2021/','/2020-2021-Serie-A-Stats', 'vs')\n", "df_vsteam.to_csv('fbref_data/season2021/teams_vs.csv', index=False)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "125223ae", "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 }