{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "e621e3ae", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_413602/2059154722.py:1: DeprecationWarning: \n", "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n", "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n", "but was not found to be installed on your system.\n", "If this would cause problems for you,\n", "please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n", " \n", " import pandas as pd\n" ] } ], "source": [ "import pandas as pd\n", "\n", "pd.set_option(\"display.max_columns\", None)" ] }, { "cell_type": "code", "execution_count": 2, "id": "0f792a6b", "metadata": { "nbsphinx": "hidden" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "env: SOCCERDATA_LOGLEVEL=ERROR\n", "env: SOCCERDATA_DIR=/cw/dtaijupiter/NoCsBack/dtai/pieterr/Projects/soccerdata\n" ] } ], "source": [ "%env SOCCERDATA_LOGLEVEL=ERROR\n", "# %env SOCCERDATA_NOCACHE=True\n", "# %env SOCCERDATA_NOSTORE=True\n", "%env SOCCERDATA_DIR=/cw/dtaijupiter/NoCsBack/dtai/pieterr/Projects/soccerdata" ] }, { "cell_type": "code", "execution_count": 3, "id": "2454afe6", "metadata": {}, "outputs": [], "source": [ "import soccerdata as sd" ] }, { "cell_type": "markdown", "id": "b5784f2d", "metadata": {}, "source": [ "# WhoScored" ] }, { "cell_type": "code", "execution_count": 4, "id": "8dab5be9", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/cw/dtaijupiter/NoCsBack/dtai/pieterr/Projects/soccerdata/soccerdata/_common.py:493: UserWarning: Season id \"2021\" is ambiguous: interpreting as \"20-21\"\n", " warnings.warn(msg, stacklevel=1)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Provides pd.DataFrames from data available at http://whoscored.com.\n", "\n", " Data will be downloaded as necessary and cached locally in\n", " ``~/soccerdata/data/WhoScored``.\n", "\n", " Parameters\n", " ----------\n", " leagues : string or iterable, optional\n", " IDs of Leagues to include.\n", " seasons : string, int or list, optional\n", " Seasons to include. Supports multiple formats.\n", " Examples: '16-17'; 2016; '2016-17'; [14, 15, 16]\n", " proxy : 'tor' or dict or list(dict) or callable, optional\n", " Use a proxy to hide your IP address. Valid options are:\n", " - \"tor\": Uses the Tor network. Tor should be running in\n", " the background on port 9050.\n", " - dict: A dictionary with the proxy to use. The dict should be\n", " a mapping of supported protocols to proxy addresses. For example::\n", "\n", " {\n", " 'http': 'http://10.10.1.10:3128',\n", " 'https': 'http://10.10.1.10:1080',\n", " }\n", "\n", " - list(dict): A list of proxies to choose from. A different proxy will\n", " be selected from this list after failed requests, allowing rotating\n", " proxies.\n", " - callable: A function that returns a valid proxy. This function will\n", " be called after failed requests, allowing rotating proxies.\n", " no_cache : bool\n", " If True, will not use cached data.\n", " no_store : bool\n", " If True, will not store downloaded data.\n", " data_dir : Path\n", " Path to directory where data will be cached.\n", " path_to_browser : Path, optional\n", " Path to the Chrome executable.\n", " headless : bool, default: True\n", " If True, will run Chrome in headless mode. Setting this to False might\n", " help to avoid getting blocked. Only supported for Selenium <4.13.\n", " \n" ] } ], "source": [ "ws = sd.WhoScored(leagues=\"ENG-Premier League\", seasons=2021)\n", "print(ws.__doc__)" ] }, { "cell_type": "markdown", "id": "3a4c2916", "metadata": {}, "source": [ "## Game schedule" ] }, { "cell_type": "code", "execution_count": 5, "id": "745be31a", "metadata": { "scrolled": true }, "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", "
stage_idgame_idstatusstart_timehome_team_idhome_teamhome_yellow_cardshome_red_cardsaway_team_idaway_teamaway_yellow_cardsaway_red_cardshas_incidents_summaryhas_previewscore_changed_atelapsedlast_scoreris_top_matchhome_team_country_codeaway_team_country_codecomment_countis_lineup_confirmedis_stream_availablematch_is_optahome_team_country_nameaway_team_country_namedatehome_scoreaway_scoreincidentsbetsaggregate_winner_fieldwinner_fieldperiodextra_result_fieldhome_extratime_scoreaway_extratime_scorehome_penalty_scoreaway_penalty_scorestarted_at_utcfirst_half_ended_at_utcsecond_half_started_at_utcstage
leagueseasongame
ENG-Premier League20212020-09-12 Crystal Palace-Southampton18685148518662020-09-12T15:00:00162Crystal Palace2018Southampton10TrueTrue2020-09-12 15:14:31ZFT0.0Falsegb-enggb-eng6TrueFalseFalseEnglandEngland2020-09-12 14:00:00+00:0010[{'minute': '13', 'type': 1, 'subType': 1, 'pl...NoneNone0.07NoneNoneNoneNoneNone2020-09-12T14:01:42ZNone2020-09-12T15:04:01ZNone
2020-09-12 Fulham-Arsenal18685148518762020-09-12T12:30:00170Fulham2013Arsenal20TrueTrue2020-09-12 13:48:13ZFT1.0Truegb-enggb-eng15TrueFalseFalseEnglandEngland2020-09-12 11:30:00+00:0003[{'minute': '8', 'type': 1, 'subType': 1, 'pla...NoneNone1.07NoneNoneNoneNoneNone2020-09-12T11:32:23ZNone2020-09-12T12:35:50ZNone
2020-09-12 Liverpool-Leeds United18685148518862020-09-12T17:30:0026Liverpool1019Leeds United00TrueTrue2020-09-12 19:15:39ZFT0.0Truegb-enggb-eng61TrueFalseFalseEnglandEngland2020-09-12 16:30:00+00:0043[{'minute': '4', 'type': 1, 'subType': 2, 'pla...NoneNone0.07NoneNoneNoneNoneNone2020-09-12T16:30:21ZNone2020-09-12T17:32:57ZNone
2020-09-12 West Ham United-Newcastle18685148519162020-09-12T20:00:0029West Ham United2023Newcastle20TrueTrue2020-09-12 21:45:39ZFT1.0Falsegb-enggb-eng10TrueFalseFalseEnglandEngland2020-09-12 19:00:00+00:0002[{'minute': '56', 'type': 1, 'subType': 1, 'pl...NoneNone1.07NoneNoneNoneNoneNone2020-09-12T19:00:32ZNone2020-09-12T20:03:20ZNone
2020-09-13 Tottenham-Everton18685148518962020-09-13T16:30:0030Tottenham1031Everton00TrueTrue2020-09-13 17:41:16ZFT1.0Truegb-enggb-eng32TrueFalseFalseEnglandEngland2020-09-13 15:30:00+00:0001[{'minute': '55', 'type': 1, 'subType': 1, 'pl...NoneNone1.07NoneNoneNoneNoneNone2020-09-13T15:30:20ZNone2020-09-13T16:31:33ZNone
\n", "
" ], "text/plain": [ " stage_id \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 18685 \n", " 2020-09-12 Fulham-Arsenal 18685 \n", " 2020-09-12 Liverpool-Leeds United 18685 \n", " 2020-09-12 West Ham United-Newcastle 18685 \n", " 2020-09-13 Tottenham-Everton 18685 \n", "\n", " game_id \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 1485186 \n", " 2020-09-12 Fulham-Arsenal 1485187 \n", " 2020-09-12 Liverpool-Leeds United 1485188 \n", " 2020-09-12 West Ham United-Newcastle 1485191 \n", " 2020-09-13 Tottenham-Everton 1485189 \n", "\n", " status \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 6 \n", " 2020-09-12 Fulham-Arsenal 6 \n", " 2020-09-12 Liverpool-Leeds United 6 \n", " 2020-09-12 West Ham United-Newcastle 6 \n", " 2020-09-13 Tottenham-Everton 6 \n", "\n", " start_time \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 2020-09-12T15:00:00 \n", " 2020-09-12 Fulham-Arsenal 2020-09-12T12:30:00 \n", " 2020-09-12 Liverpool-Leeds United 2020-09-12T17:30:00 \n", " 2020-09-12 West Ham United-Newcastle 2020-09-12T20:00:00 \n", " 2020-09-13 Tottenham-Everton 2020-09-13T16:30:00 \n", "\n", " home_team_id \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 162 \n", " 2020-09-12 Fulham-Arsenal 170 \n", " 2020-09-12 Liverpool-Leeds United 26 \n", " 2020-09-12 West Ham United-Newcastle 29 \n", " 2020-09-13 Tottenham-Everton 30 \n", "\n", " home_team \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton Crystal Palace \n", " 2020-09-12 Fulham-Arsenal Fulham \n", " 2020-09-12 Liverpool-Leeds United Liverpool \n", " 2020-09-12 West Ham United-Newcastle West Ham United \n", " 2020-09-13 Tottenham-Everton Tottenham \n", "\n", " home_yellow_cards \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 2 \n", " 2020-09-12 Fulham-Arsenal 2 \n", " 2020-09-12 Liverpool-Leeds United 1 \n", " 2020-09-12 West Ham United-Newcastle 2 \n", " 2020-09-13 Tottenham-Everton 1 \n", "\n", " home_red_cards \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 0 \n", " 2020-09-12 Fulham-Arsenal 0 \n", " 2020-09-12 Liverpool-Leeds United 0 \n", " 2020-09-12 West Ham United-Newcastle 0 \n", " 2020-09-13 Tottenham-Everton 0 \n", "\n", " away_team_id \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 18 \n", " 2020-09-12 Fulham-Arsenal 13 \n", " 2020-09-12 Liverpool-Leeds United 19 \n", " 2020-09-12 West Ham United-Newcastle 23 \n", " 2020-09-13 Tottenham-Everton 31 \n", "\n", " away_team \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton Southampton \n", " 2020-09-12 Fulham-Arsenal Arsenal \n", " 2020-09-12 Liverpool-Leeds United Leeds United \n", " 2020-09-12 West Ham United-Newcastle Newcastle \n", " 2020-09-13 Tottenham-Everton Everton \n", "\n", " away_yellow_cards \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 1 \n", " 2020-09-12 Fulham-Arsenal 2 \n", " 2020-09-12 Liverpool-Leeds United 0 \n", " 2020-09-12 West Ham United-Newcastle 2 \n", " 2020-09-13 Tottenham-Everton 0 \n", "\n", " away_red_cards \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 0 \n", " 2020-09-12 Fulham-Arsenal 0 \n", " 2020-09-12 Liverpool-Leeds United 0 \n", " 2020-09-12 West Ham United-Newcastle 0 \n", " 2020-09-13 Tottenham-Everton 0 \n", "\n", " has_incidents_summary \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton True \n", " 2020-09-12 Fulham-Arsenal True \n", " 2020-09-12 Liverpool-Leeds United True \n", " 2020-09-12 West Ham United-Newcastle True \n", " 2020-09-13 Tottenham-Everton True \n", "\n", " has_preview \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton True \n", " 2020-09-12 Fulham-Arsenal True \n", " 2020-09-12 Liverpool-Leeds United True \n", " 2020-09-12 West Ham United-Newcastle True \n", " 2020-09-13 Tottenham-Everton True \n", "\n", " score_changed_at \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 2020-09-12 15:14:31Z \n", " 2020-09-12 Fulham-Arsenal 2020-09-12 13:48:13Z \n", " 2020-09-12 Liverpool-Leeds United 2020-09-12 19:15:39Z \n", " 2020-09-12 West Ham United-Newcastle 2020-09-12 21:45:39Z \n", " 2020-09-13 Tottenham-Everton 2020-09-13 17:41:16Z \n", "\n", " elapsed \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton FT \n", " 2020-09-12 Fulham-Arsenal FT \n", " 2020-09-12 Liverpool-Leeds United FT \n", " 2020-09-12 West Ham United-Newcastle FT \n", " 2020-09-13 Tottenham-Everton FT \n", "\n", " last_scorer \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 0.0 \n", " 2020-09-12 Fulham-Arsenal 1.0 \n", " 2020-09-12 Liverpool-Leeds United 0.0 \n", " 2020-09-12 West Ham United-Newcastle 1.0 \n", " 2020-09-13 Tottenham-Everton 1.0 \n", "\n", " is_top_match \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton False \n", " 2020-09-12 Fulham-Arsenal True \n", " 2020-09-12 Liverpool-Leeds United True \n", " 2020-09-12 West Ham United-Newcastle False \n", " 2020-09-13 Tottenham-Everton True \n", "\n", " home_team_country_code \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton gb-eng \n", " 2020-09-12 Fulham-Arsenal gb-eng \n", " 2020-09-12 Liverpool-Leeds United gb-eng \n", " 2020-09-12 West Ham United-Newcastle gb-eng \n", " 2020-09-13 Tottenham-Everton gb-eng \n", "\n", " away_team_country_code \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton gb-eng \n", " 2020-09-12 Fulham-Arsenal gb-eng \n", " 2020-09-12 Liverpool-Leeds United gb-eng \n", " 2020-09-12 West Ham United-Newcastle gb-eng \n", " 2020-09-13 Tottenham-Everton gb-eng \n", "\n", " comment_count \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 6 \n", " 2020-09-12 Fulham-Arsenal 15 \n", " 2020-09-12 Liverpool-Leeds United 61 \n", " 2020-09-12 West Ham United-Newcastle 10 \n", " 2020-09-13 Tottenham-Everton 32 \n", "\n", " is_lineup_confirmed \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton True \n", " 2020-09-12 Fulham-Arsenal True \n", " 2020-09-12 Liverpool-Leeds United True \n", " 2020-09-12 West Ham United-Newcastle True \n", " 2020-09-13 Tottenham-Everton True \n", "\n", " is_stream_available \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton False \n", " 2020-09-12 Fulham-Arsenal False \n", " 2020-09-12 Liverpool-Leeds United False \n", " 2020-09-12 West Ham United-Newcastle False \n", " 2020-09-13 Tottenham-Everton False \n", "\n", " match_is_opta \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton False \n", " 2020-09-12 Fulham-Arsenal False \n", " 2020-09-12 Liverpool-Leeds United False \n", " 2020-09-12 West Ham United-Newcastle False \n", " 2020-09-13 Tottenham-Everton False \n", "\n", " home_team_country_name \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton England \n", " 2020-09-12 Fulham-Arsenal England \n", " 2020-09-12 Liverpool-Leeds United England \n", " 2020-09-12 West Ham United-Newcastle England \n", " 2020-09-13 Tottenham-Everton England \n", "\n", " away_team_country_name \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton England \n", " 2020-09-12 Fulham-Arsenal England \n", " 2020-09-12 Liverpool-Leeds United England \n", " 2020-09-12 West Ham United-Newcastle England \n", " 2020-09-13 Tottenham-Everton England \n", "\n", " date \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 2020-09-12 14:00:00+00:00 \n", " 2020-09-12 Fulham-Arsenal 2020-09-12 11:30:00+00:00 \n", " 2020-09-12 Liverpool-Leeds United 2020-09-12 16:30:00+00:00 \n", " 2020-09-12 West Ham United-Newcastle 2020-09-12 19:00:00+00:00 \n", " 2020-09-13 Tottenham-Everton 2020-09-13 15:30:00+00:00 \n", "\n", " home_score \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 1 \n", " 2020-09-12 Fulham-Arsenal 0 \n", " 2020-09-12 Liverpool-Leeds United 4 \n", " 2020-09-12 West Ham United-Newcastle 0 \n", " 2020-09-13 Tottenham-Everton 0 \n", "\n", " away_score \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 0 \n", " 2020-09-12 Fulham-Arsenal 3 \n", " 2020-09-12 Liverpool-Leeds United 3 \n", " 2020-09-12 West Ham United-Newcastle 2 \n", " 2020-09-13 Tottenham-Everton 1 \n", "\n", " incidents \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton [{'minute': '13', 'type': 1, 'subType': 1, 'pl... \n", " 2020-09-12 Fulham-Arsenal [{'minute': '8', 'type': 1, 'subType': 1, 'pla... \n", " 2020-09-12 Liverpool-Leeds United [{'minute': '4', 'type': 1, 'subType': 2, 'pla... \n", " 2020-09-12 West Ham United-Newcastle [{'minute': '56', 'type': 1, 'subType': 1, 'pl... \n", " 2020-09-13 Tottenham-Everton [{'minute': '55', 'type': 1, 'subType': 1, 'pl... \n", "\n", " bets \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " aggregate_winner_field \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " winner_field \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 0.0 \n", " 2020-09-12 Fulham-Arsenal 1.0 \n", " 2020-09-12 Liverpool-Leeds United 0.0 \n", " 2020-09-12 West Ham United-Newcastle 1.0 \n", " 2020-09-13 Tottenham-Everton 1.0 \n", "\n", " period \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 7 \n", " 2020-09-12 Fulham-Arsenal 7 \n", " 2020-09-12 Liverpool-Leeds United 7 \n", " 2020-09-12 West Ham United-Newcastle 7 \n", " 2020-09-13 Tottenham-Everton 7 \n", "\n", " extra_result_field \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " home_extratime_score \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " away_extratime_score \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " home_penalty_score \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " away_penalty_score \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " started_at_utc \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 2020-09-12T14:01:42Z \n", " 2020-09-12 Fulham-Arsenal 2020-09-12T11:32:23Z \n", " 2020-09-12 Liverpool-Leeds United 2020-09-12T16:30:21Z \n", " 2020-09-12 West Ham United-Newcastle 2020-09-12T19:00:32Z \n", " 2020-09-13 Tottenham-Everton 2020-09-13T15:30:20Z \n", "\n", " first_half_ended_at_utc \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None \n", "\n", " second_half_started_at_utc \\\n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton 2020-09-12T15:04:01Z \n", " 2020-09-12 Fulham-Arsenal 2020-09-12T12:35:50Z \n", " 2020-09-12 Liverpool-Leeds United 2020-09-12T17:32:57Z \n", " 2020-09-12 West Ham United-Newcastle 2020-09-12T20:03:20Z \n", " 2020-09-13 Tottenham-Everton 2020-09-13T16:31:33Z \n", "\n", " stage \n", "league season game \n", "ENG-Premier League 2021 2020-09-12 Crystal Palace-Southampton None \n", " 2020-09-12 Fulham-Arsenal None \n", " 2020-09-12 Liverpool-Leeds United None \n", " 2020-09-12 West Ham United-Newcastle None \n", " 2020-09-13 Tottenham-Everton None " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epl_schedule = ws.read_schedule()\n", "epl_schedule.head()" ] }, { "cell_type": "markdown", "id": "a12e6e81", "metadata": {}, "source": [ "## Injured and suspended players" ] }, { "cell_type": "code", "execution_count": 6, "id": "e860830f", "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", "
game_idplayer_idreasonstatus
leagueseasongameteamplayer
ENG-Premier League20212021-01-12 Burnley-Manchester UnitedBurnleyCharlie Taylor1485184107462injured doubtfulDoubtful
Dwight McNeil1485184357427injured doubtfulDoubtful
Jay Rodriguez148518433891injured doubtfulDoubtful
Jimmy Dunne1485184366743injured doubtfulDoubtful
Manchester UnitedEric Bailly1485184243814injured doubtfulDoubtful
\n", "
" ], "text/plain": [ " game_id \\\n", "league season game team player \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United Burnley Charlie Taylor 1485184 \n", " Dwight McNeil 1485184 \n", " Jay Rodriguez 1485184 \n", " Jimmy Dunne 1485184 \n", " Manchester United Eric Bailly 1485184 \n", "\n", " player_id \\\n", "league season game team player \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United Burnley Charlie Taylor 107462 \n", " Dwight McNeil 357427 \n", " Jay Rodriguez 33891 \n", " Jimmy Dunne 366743 \n", " Manchester United Eric Bailly 243814 \n", "\n", " reason \\\n", "league season game team player \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United Burnley Charlie Taylor injured doubtful \n", " Dwight McNeil injured doubtful \n", " Jay Rodriguez injured doubtful \n", " Jimmy Dunne injured doubtful \n", " Manchester United Eric Bailly injured doubtful \n", "\n", " status \n", "league season game team player \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United Burnley Charlie Taylor Doubtful \n", " Dwight McNeil Doubtful \n", " Jay Rodriguez Doubtful \n", " Jimmy Dunne Doubtful \n", " Manchester United Eric Bailly Doubtful " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_players = ws.read_missing_players(match_id=1485184)\n", "missing_players.head()" ] }, { "cell_type": "markdown", "id": "1e353086", "metadata": {}, "source": [ "## Match event stream data" ] }, { "cell_type": "code", "execution_count": 7, "id": "aa1d6daa", "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", "
game_idperiodminutesecondexpanded_minutetypeoutcome_typeteam_idteamplayer_idplayerxyend_xend_ygoal_mouth_ygoal_mouth_zblocked_xblocked_yqualifiersis_touchis_shotis_goalcard_typerelated_event_idrelated_player_id
leagueseasongameid
ENG-Premier League20212021-01-12 Burnley-Manchester United22534583171485184PreMatch00.00FormationSetSuccessful184BurnleyNaNNaN0.00.0NaNNaNNaNNaNNaNNaN[{'type': {'displayName': 'TeamPlayerFormation...FalseNaNNaNNaNNaNNaN
22534583751485184PreMatch00.00FormationSetSuccessful32Man UtdNaNNaN0.00.0NaNNaNNaNNaNNaNNaN[{'type': {'displayName': 'CaptainPlayerId', '...FalseNaNNaNNaNNaNNaN
22534874691485184FirstHalf00.00StartSuccessful184BurnleyNaNNaN0.00.0NaNNaNNaNNaNNaNNaN[]FalseNaNNaNNaNNaNNaN
22534874731485184FirstHalf00.00StartSuccessful32Man UtdNaNNaN0.00.0NaNNaNNaNNaNNaNNaN[]FalseNaNNaNNaNNaNNaN
22534876251485184FirstHalf00.00PassSuccessful184Burnley79050.0Ashley Westwood50.350.330.550.3NaNNaNNaNNaN[{'type': {'displayName': 'Angle', 'value': 21...TrueNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " game_id \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 1485184 \n", " 2253458375 1485184 \n", " 2253487469 1485184 \n", " 2253487473 1485184 \n", " 2253487625 1485184 \n", "\n", " period \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 PreMatch \n", " 2253458375 PreMatch \n", " 2253487469 FirstHalf \n", " 2253487473 FirstHalf \n", " 2253487625 FirstHalf \n", "\n", " minute \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 0 \n", " 2253458375 0 \n", " 2253487469 0 \n", " 2253487473 0 \n", " 2253487625 0 \n", "\n", " second \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 0.0 \n", " 2253458375 0.0 \n", " 2253487469 0.0 \n", " 2253487473 0.0 \n", " 2253487625 0.0 \n", "\n", " expanded_minute \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 0 \n", " 2253458375 0 \n", " 2253487469 0 \n", " 2253487473 0 \n", " 2253487625 0 \n", "\n", " type \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 FormationSet \n", " 2253458375 FormationSet \n", " 2253487469 Start \n", " 2253487473 Start \n", " 2253487625 Pass \n", "\n", " outcome_type \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 Successful \n", " 2253458375 Successful \n", " 2253487469 Successful \n", " 2253487473 Successful \n", " 2253487625 Successful \n", "\n", " team_id \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 184 \n", " 2253458375 32 \n", " 2253487469 184 \n", " 2253487473 32 \n", " 2253487625 184 \n", "\n", " team \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 Burnley \n", " 2253458375 Man Utd \n", " 2253487469 Burnley \n", " 2253487473 Man Utd \n", " 2253487625 Burnley \n", "\n", " player_id \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 79050.0 \n", "\n", " player \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 Ashley Westwood \n", "\n", " x \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 0.0 \n", " 2253458375 0.0 \n", " 2253487469 0.0 \n", " 2253487473 0.0 \n", " 2253487625 50.3 \n", "\n", " y \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 0.0 \n", " 2253458375 0.0 \n", " 2253487469 0.0 \n", " 2253487473 0.0 \n", " 2253487625 50.3 \n", "\n", " end_x \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 30.5 \n", "\n", " end_y \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 50.3 \n", "\n", " goal_mouth_y \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " goal_mouth_z \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " blocked_x \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " blocked_y \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " qualifiers \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 [{'type': {'displayName': 'TeamPlayerFormation... \n", " 2253458375 [{'type': {'displayName': 'CaptainPlayerId', '... \n", " 2253487469 [] \n", " 2253487473 [] \n", " 2253487625 [{'type': {'displayName': 'Angle', 'value': 21... \n", "\n", " is_touch \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 False \n", " 2253458375 False \n", " 2253487469 False \n", " 2253487473 False \n", " 2253487625 True \n", "\n", " is_shot \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " is_goal \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " card_type \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " related_event_id \\\n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN \n", "\n", " related_player_id \n", "league season game id \n", "ENG-Premier League 2021 2021-01-12 Burnley-Manchester United 2253458317 NaN \n", " 2253458375 NaN \n", " 2253487469 NaN \n", " 2253487473 NaN \n", " 2253487625 NaN " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events = ws.read_events(match_id=1485184)\n", "events.head()" ] }, { "cell_type": "markdown", "id": "74dbf6fc", "metadata": {}, "source": [ "Match event stream data can be returned in various formats, which can be selected with the \"output_fmt\" parameter.\n", "\n", "- `events` (default): Returns a dataframe with all events.\n", "- `raw`: Returns the original unformatted WhoScored JSON.\n", "- `spadl`: Returns a dataframe with the [SPADL representation](https://socceraction.readthedocs.io/en/latest/documentation/SPADL.html#spadl)\n", " of the original events.\n", "- `atomic-spadl`: Returns a dataframe with the [Atomic-SPADL representation](https://socceraction.readthedocs.io/en/latest/documentation/SPADL.html#atomic-spadl)\n", " of the original events.\n", "- `loader`: Returns a `socceration.data.opta.OptaLoader` instance" ] }, { "cell_type": "code", "execution_count": 8, "id": "dfd8f019", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"eventId\": 2,\n", " \"expandedMinute\": 0,\n", " \"id\": 2253487473,\n", " \"isTouch\": false,\n", " \"minute\": 0,\n", " \"outcomeType\": {\n", " \"displayName\": \"Successful\",\n", " \"value\": 1\n", " },\n", " \"period\": {\n", " \"displayName\": \"FirstHalf\",\n", " \"value\": 1\n", " },\n", " \"qualifiers\": [],\n", " \"satisfiedEventsTypes\": [],\n", " \"second\": 0,\n", " \"teamId\": 32,\n", " \"type\": {\n", " \"displayName\": \"Start\",\n", " \"value\": 32\n", " },\n", " \"x\": 0,\n", " \"y\": 0\n", "}\n" ] } ], "source": [ "events = ws.read_events(match_id=1485184, output_fmt=\"raw\")\n", "\n", "import json # noqa\n", "\n", "print(json.dumps(events[1485184][0], indent=2))" ] }, { "cell_type": "code", "execution_count": 9, "id": "2078b018", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/cw/dtaijupiter/NoCsBack/dtai/pieterr/Projects/soccerdata/.venv/lib/python3.11/site-packages/socceraction/spadl/opta.py:219: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", " ).bfill()\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
game_idoriginal_event_idperiod_idtime_secondsteam_idplayer_idstart_xend_xstart_yend_ytype_idresult_idbodypart_idaction_idplayerteam
01485184225348762510.018479050.052.81532.02534.20434.2040100Ashley WestwoodBurnley
11485184225348763912.0184131464.031.08038.22036.31215.8440101James TarkowskiBurnley
21485184NaN14.518480067.038.22043.36515.84412.51221102Matthew LowtonBurnley
31485184225348768517.018480067.043.36590.30012.51249.7080103Matthew LowtonBurnley
414851842253487689111.018493473.090.300105.00049.70838.82811044Robbie BradyBurnley
\n", "
" ], "text/plain": [ " game_id original_event_id period_id time_seconds team_id player_id \\\n", "0 1485184 2253487625 1 0.0 184 79050.0 \n", "1 1485184 2253487639 1 2.0 184 131464.0 \n", "2 1485184 NaN 1 4.5 184 80067.0 \n", "3 1485184 2253487685 1 7.0 184 80067.0 \n", "4 1485184 2253487689 1 11.0 184 93473.0 \n", "\n", " start_x end_x start_y end_y type_id result_id bodypart_id \\\n", "0 52.815 32.025 34.204 34.204 0 1 0 \n", "1 31.080 38.220 36.312 15.844 0 1 0 \n", "2 38.220 43.365 15.844 12.512 21 1 0 \n", "3 43.365 90.300 12.512 49.708 0 1 0 \n", "4 90.300 105.000 49.708 38.828 11 0 4 \n", "\n", " action_id player team \n", "0 0 Ashley Westwood Burnley \n", "1 1 James Tarkowski Burnley \n", "2 2 Matthew Lowton Burnley \n", "3 3 Matthew Lowton Burnley \n", "4 4 Robbie Brady Burnley " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "actions = ws.read_events(match_id=1485184, output_fmt=\"spadl\")\n", "actions.head()" ] }, { "cell_type": "code", "execution_count": 10, "id": "10f8a086", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/cw/dtaijupiter/NoCsBack/dtai/pieterr/Projects/soccerdata/.venv/lib/python3.11/site-packages/socceraction/spadl/opta.py:219: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", " ).bfill()\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
game_idoriginal_event_idaction_idperiod_idtime_secondsteam_idplayer_idxydxdytype_idbodypart_idplayerteam
014851842253487625010.0018479050.052.81534.204-20.7900.00000Ashley WestwoodBurnley
114851842253487625111.00184131464.032.02534.2040.0000.000230James TarkowskiBurnley
214851842253487639212.00184131464.031.08036.3127.140-20.46800James TarkowskiBurnley
314851842253487639313.2518480067.038.22015.8440.0000.000230Matthew LowtonBurnley
41485184NaN414.5018480067.038.22015.8445.145-3.332210Matthew LowtonBurnley
\n", "
" ], "text/plain": [ " game_id original_event_id action_id period_id time_seconds team_id \\\n", "0 1485184 2253487625 0 1 0.00 184 \n", "1 1485184 2253487625 1 1 1.00 184 \n", "2 1485184 2253487639 2 1 2.00 184 \n", "3 1485184 2253487639 3 1 3.25 184 \n", "4 1485184 NaN 4 1 4.50 184 \n", "\n", " player_id x y dx dy type_id bodypart_id \\\n", "0 79050.0 52.815 34.204 -20.790 0.000 0 0 \n", "1 131464.0 32.025 34.204 0.000 0.000 23 0 \n", "2 131464.0 31.080 36.312 7.140 -20.468 0 0 \n", "3 80067.0 38.220 15.844 0.000 0.000 23 0 \n", "4 80067.0 38.220 15.844 5.145 -3.332 21 0 \n", "\n", " player team \n", "0 Ashley Westwood Burnley \n", "1 James Tarkowski Burnley \n", "2 James Tarkowski Burnley \n", "3 Matthew Lowton Burnley \n", "4 Matthew Lowton Burnley " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atomic_actions = ws.read_events(match_id=1485184, output_fmt=\"atomic-spadl\")\n", "atomic_actions.head()" ] }, { "cell_type": "code", "execution_count": 11, "id": "1cff9142", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Games:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
game_idseason_idcompetition_idgame_daygame_datehome_team_idaway_team_idhome_scoreaway_scoredurationrefereevenueattendancehome_manageraway_manager
014854942021ENG-Premier LeagueNone2021-04-04 12:00:00181843298Andre MarrinerSt. Mary's Stadium0Ralph HasenhüttlSean Dyche
114853002021ENG-Premier LeagueNone2020-12-16 20:00:001702110095Robert JonesCraven Cottage0Scott ParkerGraham Potter
214852642021ENG-Premier LeagueNone2020-12-06 19:15:00261614097Craig PawsonAnfield2000Jürgen KloppNuno Espírito Santo
314855192021ENG-Premier LeagueNone2021-05-16 16:30:001752612102Mike DeanThe Hawthorns0Sam AllardyceJürgen Klopp
414854362021ENG-Premier LeagueNone2021-03-19 20:00:001701912100David CooteCraven Cottage0Scott ParkerMarcelo Bielsa
\n", "
" ], "text/plain": [ " game_id season_id competition_id game_day game_date \\\n", "0 1485494 2021 ENG-Premier League None 2021-04-04 12:00:00 \n", "1 1485300 2021 ENG-Premier League None 2020-12-16 20:00:00 \n", "2 1485264 2021 ENG-Premier League None 2020-12-06 19:15:00 \n", "3 1485519 2021 ENG-Premier League None 2021-05-16 16:30:00 \n", "4 1485436 2021 ENG-Premier League None 2021-03-19 20:00:00 \n", "\n", " home_team_id away_team_id home_score away_score duration \\\n", "0 18 184 3 2 98 \n", "1 170 211 0 0 95 \n", "2 26 161 4 0 97 \n", "3 175 26 1 2 102 \n", "4 170 19 1 2 100 \n", "\n", " referee venue attendance home_manager \\\n", "0 Andre Marriner St. Mary's Stadium 0 Ralph Hasenhüttl \n", "1 Robert Jones Craven Cottage 0 Scott Parker \n", "2 Craig Pawson Anfield 2000 Jürgen Klopp \n", "3 Mike Dean The Hawthorns 0 Sam Allardyce \n", "4 David Coote Craven Cottage 0 Scott Parker \n", "\n", " away_manager \n", "0 Sean Dyche \n", "1 Graham Potter \n", "2 Nuno Espírito Santo \n", "3 Jürgen Klopp \n", "4 Marcelo Bielsa " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Teams:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
team_idteam_name
0184Burnley
132Man Utd
\n", "
" ], "text/plain": [ " team_id team_name\n", "0 184 Burnley\n", "1 32 Man Utd" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Players:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
game_idteam_idplayer_idplayer_nameis_starterminutes_playedjersey_numberstarting_position
01485184184105720Nick PopeTrue1021GK
1148518418480067Matthew LowtonTrue1022DR
2148518418494935Ben MeeTrue1026DC
31485184184131464James TarkowskiTrue1025DC
4148518418424148Erik PietersTrue10223DL
\n", "
" ], "text/plain": [ " game_id team_id player_id player_name is_starter minutes_played \\\n", "0 1485184 184 105720 Nick Pope True 102 \n", "1 1485184 184 80067 Matthew Lowton True 102 \n", "2 1485184 184 94935 Ben Mee True 102 \n", "3 1485184 184 131464 James Tarkowski True 102 \n", "4 1485184 184 24148 Erik Pieters True 102 \n", "\n", " jersey_number starting_position \n", "0 1 GK \n", "1 2 DR \n", "2 6 DC \n", "3 5 DC \n", "4 23 DL " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Events:\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
game_idevent_idperiod_idteam_idplayer_idtype_idtimestampminutesecondoutcomestart_xstart_yend_xend_yqualifiersrelated_player_idtouchgoalshottype_name
014851842253487473132NaN322021-01-12 20:15:0000True0.00.00.00.0{}NaNFalseFalseFalsestart
1148518422534874691184NaN322021-01-12 20:15:0000True0.00.00.00.0{}NaNFalseFalseFalsestart
214851842253487625118479050.012021-01-12 20:15:0000True50.350.330.550.3{213: '3.1', 178: True, 141: '50.3', 212: '20....NaNTrueFalseFalsepass
3148518422534876391184131464.012021-01-12 20:15:0202True29.653.436.423.3{178: True, 213: '5.0', 212: '21.7', 141: '23....NaNTrueFalseFalsepass
414851842253487685118480067.012021-01-12 20:15:0707True41.318.486.073.1{1: True, 213: '0.7', 56: 'Center', 178: True,...NaNTrueFalseFalsepass
\n", "
" ], "text/plain": [ " game_id event_id period_id team_id player_id type_id \\\n", "0 1485184 2253487473 1 32 NaN 32 \n", "1 1485184 2253487469 1 184 NaN 32 \n", "2 1485184 2253487625 1 184 79050.0 1 \n", "3 1485184 2253487639 1 184 131464.0 1 \n", "4 1485184 2253487685 1 184 80067.0 1 \n", "\n", " timestamp minute second outcome start_x start_y end_x \\\n", "0 2021-01-12 20:15:00 0 0 True 0.0 0.0 0.0 \n", "1 2021-01-12 20:15:00 0 0 True 0.0 0.0 0.0 \n", "2 2021-01-12 20:15:00 0 0 True 50.3 50.3 30.5 \n", "3 2021-01-12 20:15:02 0 2 True 29.6 53.4 36.4 \n", "4 2021-01-12 20:15:07 0 7 True 41.3 18.4 86.0 \n", "\n", " end_y qualifiers \\\n", "0 0.0 {} \n", "1 0.0 {} \n", "2 50.3 {213: '3.1', 178: True, 141: '50.3', 212: '20.... \n", "3 23.3 {178: True, 213: '5.0', 212: '21.7', 141: '23.... \n", "4 73.1 {1: True, 213: '0.7', 56: 'Center', 178: True,... \n", "\n", " related_player_id touch goal shot type_name \n", "0 NaN False False False start \n", "1 NaN False False False start \n", "2 NaN True False False pass \n", "3 NaN True False False pass \n", "4 NaN True False False pass " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Scrape all games and return a socceration.data.opta.OptaLoader\n", "loader = ws.read_events(output_fmt=\"loader\")\n", "\n", "# Now use this loader to load the data\n", "print(\"Games:\")\n", "df_games = loader.games(competition_id=\"ENG-Premier League\", season_id=\"2021\")\n", "display(df_games.head())\n", "\n", "print(\"Teams:\")\n", "df_teams = loader.teams(game_id=1485184)\n", "display(df_teams.head())\n", "\n", "print(\"Players:\")\n", "df_players = loader.players(game_id=1485184)\n", "display(df_players.head())\n", "\n", "print(\"Events:\")\n", "df_events = loader.events(game_id=1485184)\n", "display(df_events.head())\n", "\n", "# You can use the socceraction package to convert the events\n", "# to SPADL and to compute xT or VAEP action values" ] }, { "cell_type": "code", "execution_count": null, "id": "38635aef", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "soccerdata", "language": "python", "name": "soccerdata" }, "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.10.12" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 5 }