{
"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",
" stage_id | \n",
" game_id | \n",
" status | \n",
" start_time | \n",
" home_team_id | \n",
" home_team | \n",
" home_yellow_cards | \n",
" home_red_cards | \n",
" away_team_id | \n",
" away_team | \n",
" away_yellow_cards | \n",
" away_red_cards | \n",
" has_incidents_summary | \n",
" has_preview | \n",
" score_changed_at | \n",
" elapsed | \n",
" last_scorer | \n",
" is_top_match | \n",
" home_team_country_code | \n",
" away_team_country_code | \n",
" comment_count | \n",
" is_lineup_confirmed | \n",
" is_stream_available | \n",
" match_is_opta | \n",
" home_team_country_name | \n",
" away_team_country_name | \n",
" date | \n",
" home_score | \n",
" away_score | \n",
" incidents | \n",
" bets | \n",
" aggregate_winner_field | \n",
" winner_field | \n",
" period | \n",
" extra_result_field | \n",
" home_extratime_score | \n",
" away_extratime_score | \n",
" home_penalty_score | \n",
" away_penalty_score | \n",
" started_at_utc | \n",
" first_half_ended_at_utc | \n",
" second_half_started_at_utc | \n",
" stage | \n",
"
\n",
" \n",
" | league | \n",
" season | \n",
" game | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | ENG-Premier League | \n",
" 2021 | \n",
" 2020-09-12 Crystal Palace-Southampton | \n",
" 18685 | \n",
" 1485186 | \n",
" 6 | \n",
" 2020-09-12T15:00:00 | \n",
" 162 | \n",
" Crystal Palace | \n",
" 2 | \n",
" 0 | \n",
" 18 | \n",
" Southampton | \n",
" 1 | \n",
" 0 | \n",
" True | \n",
" True | \n",
" 2020-09-12 15:14:31Z | \n",
" FT | \n",
" 0.0 | \n",
" False | \n",
" gb-eng | \n",
" gb-eng | \n",
" 6 | \n",
" True | \n",
" False | \n",
" False | \n",
" England | \n",
" England | \n",
" 2020-09-12 14:00:00+00:00 | \n",
" 1 | \n",
" 0 | \n",
" [{'minute': '13', 'type': 1, 'subType': 1, 'pl... | \n",
" None | \n",
" None | \n",
" 0.0 | \n",
" 7 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" 2020-09-12T14:01:42Z | \n",
" None | \n",
" 2020-09-12T15:04:01Z | \n",
" None | \n",
"
\n",
" \n",
" | 2020-09-12 Fulham-Arsenal | \n",
" 18685 | \n",
" 1485187 | \n",
" 6 | \n",
" 2020-09-12T12:30:00 | \n",
" 170 | \n",
" Fulham | \n",
" 2 | \n",
" 0 | \n",
" 13 | \n",
" Arsenal | \n",
" 2 | \n",
" 0 | \n",
" True | \n",
" True | \n",
" 2020-09-12 13:48:13Z | \n",
" FT | \n",
" 1.0 | \n",
" True | \n",
" gb-eng | \n",
" gb-eng | \n",
" 15 | \n",
" True | \n",
" False | \n",
" False | \n",
" England | \n",
" England | \n",
" 2020-09-12 11:30:00+00:00 | \n",
" 0 | \n",
" 3 | \n",
" [{'minute': '8', 'type': 1, 'subType': 1, 'pla... | \n",
" None | \n",
" None | \n",
" 1.0 | \n",
" 7 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" 2020-09-12T11:32:23Z | \n",
" None | \n",
" 2020-09-12T12:35:50Z | \n",
" None | \n",
"
\n",
" \n",
" | 2020-09-12 Liverpool-Leeds United | \n",
" 18685 | \n",
" 1485188 | \n",
" 6 | \n",
" 2020-09-12T17:30:00 | \n",
" 26 | \n",
" Liverpool | \n",
" 1 | \n",
" 0 | \n",
" 19 | \n",
" Leeds United | \n",
" 0 | \n",
" 0 | \n",
" True | \n",
" True | \n",
" 2020-09-12 19:15:39Z | \n",
" FT | \n",
" 0.0 | \n",
" True | \n",
" gb-eng | \n",
" gb-eng | \n",
" 61 | \n",
" True | \n",
" False | \n",
" False | \n",
" England | \n",
" England | \n",
" 2020-09-12 16:30:00+00:00 | \n",
" 4 | \n",
" 3 | \n",
" [{'minute': '4', 'type': 1, 'subType': 2, 'pla... | \n",
" None | \n",
" None | \n",
" 0.0 | \n",
" 7 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" 2020-09-12T16:30:21Z | \n",
" None | \n",
" 2020-09-12T17:32:57Z | \n",
" None | \n",
"
\n",
" \n",
" | 2020-09-12 West Ham United-Newcastle | \n",
" 18685 | \n",
" 1485191 | \n",
" 6 | \n",
" 2020-09-12T20:00:00 | \n",
" 29 | \n",
" West Ham United | \n",
" 2 | \n",
" 0 | \n",
" 23 | \n",
" Newcastle | \n",
" 2 | \n",
" 0 | \n",
" True | \n",
" True | \n",
" 2020-09-12 21:45:39Z | \n",
" FT | \n",
" 1.0 | \n",
" False | \n",
" gb-eng | \n",
" gb-eng | \n",
" 10 | \n",
" True | \n",
" False | \n",
" False | \n",
" England | \n",
" England | \n",
" 2020-09-12 19:00:00+00:00 | \n",
" 0 | \n",
" 2 | \n",
" [{'minute': '56', 'type': 1, 'subType': 1, 'pl... | \n",
" None | \n",
" None | \n",
" 1.0 | \n",
" 7 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" 2020-09-12T19:00:32Z | \n",
" None | \n",
" 2020-09-12T20:03:20Z | \n",
" None | \n",
"
\n",
" \n",
" | 2020-09-13 Tottenham-Everton | \n",
" 18685 | \n",
" 1485189 | \n",
" 6 | \n",
" 2020-09-13T16:30:00 | \n",
" 30 | \n",
" Tottenham | \n",
" 1 | \n",
" 0 | \n",
" 31 | \n",
" Everton | \n",
" 0 | \n",
" 0 | \n",
" True | \n",
" True | \n",
" 2020-09-13 17:41:16Z | \n",
" FT | \n",
" 1.0 | \n",
" True | \n",
" gb-eng | \n",
" gb-eng | \n",
" 32 | \n",
" True | \n",
" False | \n",
" False | \n",
" England | \n",
" England | \n",
" 2020-09-13 15:30:00+00:00 | \n",
" 0 | \n",
" 1 | \n",
" [{'minute': '55', 'type': 1, 'subType': 1, 'pl... | \n",
" None | \n",
" None | \n",
" 1.0 | \n",
" 7 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" 2020-09-13T15:30:20Z | \n",
" None | \n",
" 2020-09-13T16:31:33Z | \n",
" None | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" player_id | \n",
" reason | \n",
" status | \n",
"
\n",
" \n",
" | league | \n",
" season | \n",
" game | \n",
" team | \n",
" player | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | ENG-Premier League | \n",
" 2021 | \n",
" 2021-01-12 Burnley-Manchester United | \n",
" Burnley | \n",
" Charlie Taylor | \n",
" 1485184 | \n",
" 107462 | \n",
" injured doubtful | \n",
" Doubtful | \n",
"
\n",
" \n",
" | Dwight McNeil | \n",
" 1485184 | \n",
" 357427 | \n",
" injured doubtful | \n",
" Doubtful | \n",
"
\n",
" \n",
" | Jay Rodriguez | \n",
" 1485184 | \n",
" 33891 | \n",
" injured doubtful | \n",
" Doubtful | \n",
"
\n",
" \n",
" | Jimmy Dunne | \n",
" 1485184 | \n",
" 366743 | \n",
" injured doubtful | \n",
" Doubtful | \n",
"
\n",
" \n",
" | Manchester United | \n",
" Eric Bailly | \n",
" 1485184 | \n",
" 243814 | \n",
" injured doubtful | \n",
" Doubtful | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" period | \n",
" minute | \n",
" second | \n",
" expanded_minute | \n",
" type | \n",
" outcome_type | \n",
" team_id | \n",
" team | \n",
" player_id | \n",
" player | \n",
" x | \n",
" y | \n",
" end_x | \n",
" end_y | \n",
" goal_mouth_y | \n",
" goal_mouth_z | \n",
" blocked_x | \n",
" blocked_y | \n",
" qualifiers | \n",
" is_touch | \n",
" is_shot | \n",
" is_goal | \n",
" card_type | \n",
" related_event_id | \n",
" related_player_id | \n",
"
\n",
" \n",
" | league | \n",
" season | \n",
" game | \n",
" id | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | ENG-Premier League | \n",
" 2021 | \n",
" 2021-01-12 Burnley-Manchester United | \n",
" 2253458317 | \n",
" 1485184 | \n",
" PreMatch | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
" FormationSet | \n",
" Successful | \n",
" 184 | \n",
" Burnley | \n",
" NaN | \n",
" NaN | \n",
" 0.0 | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" [{'type': {'displayName': 'TeamPlayerFormation... | \n",
" False | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2253458375 | \n",
" 1485184 | \n",
" PreMatch | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
" FormationSet | \n",
" Successful | \n",
" 32 | \n",
" Man Utd | \n",
" NaN | \n",
" NaN | \n",
" 0.0 | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" [{'type': {'displayName': 'CaptainPlayerId', '... | \n",
" False | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2253487469 | \n",
" 1485184 | \n",
" FirstHalf | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
" Start | \n",
" Successful | \n",
" 184 | \n",
" Burnley | \n",
" NaN | \n",
" NaN | \n",
" 0.0 | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" [] | \n",
" False | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2253487473 | \n",
" 1485184 | \n",
" FirstHalf | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
" Start | \n",
" Successful | \n",
" 32 | \n",
" Man Utd | \n",
" NaN | \n",
" NaN | \n",
" 0.0 | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" [] | \n",
" False | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2253487625 | \n",
" 1485184 | \n",
" FirstHalf | \n",
" 0 | \n",
" 0.0 | \n",
" 0 | \n",
" Pass | \n",
" Successful | \n",
" 184 | \n",
" Burnley | \n",
" 79050.0 | \n",
" Ashley Westwood | \n",
" 50.3 | \n",
" 50.3 | \n",
" 30.5 | \n",
" 50.3 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" [{'type': {'displayName': 'Angle', 'value': 21... | \n",
" True | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" original_event_id | \n",
" period_id | \n",
" time_seconds | \n",
" team_id | \n",
" player_id | \n",
" start_x | \n",
" end_x | \n",
" start_y | \n",
" end_y | \n",
" type_id | \n",
" result_id | \n",
" bodypart_id | \n",
" action_id | \n",
" player | \n",
" team | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1485184 | \n",
" 2253487625 | \n",
" 1 | \n",
" 0.0 | \n",
" 184 | \n",
" 79050.0 | \n",
" 52.815 | \n",
" 32.025 | \n",
" 34.204 | \n",
" 34.204 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" Ashley Westwood | \n",
" Burnley | \n",
"
\n",
" \n",
" | 1 | \n",
" 1485184 | \n",
" 2253487639 | \n",
" 1 | \n",
" 2.0 | \n",
" 184 | \n",
" 131464.0 | \n",
" 31.080 | \n",
" 38.220 | \n",
" 36.312 | \n",
" 15.844 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" James Tarkowski | \n",
" Burnley | \n",
"
\n",
" \n",
" | 2 | \n",
" 1485184 | \n",
" NaN | \n",
" 1 | \n",
" 4.5 | \n",
" 184 | \n",
" 80067.0 | \n",
" 38.220 | \n",
" 43.365 | \n",
" 15.844 | \n",
" 12.512 | \n",
" 21 | \n",
" 1 | \n",
" 0 | \n",
" 2 | \n",
" Matthew Lowton | \n",
" Burnley | \n",
"
\n",
" \n",
" | 3 | \n",
" 1485184 | \n",
" 2253487685 | \n",
" 1 | \n",
" 7.0 | \n",
" 184 | \n",
" 80067.0 | \n",
" 43.365 | \n",
" 90.300 | \n",
" 12.512 | \n",
" 49.708 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 3 | \n",
" Matthew Lowton | \n",
" Burnley | \n",
"
\n",
" \n",
" | 4 | \n",
" 1485184 | \n",
" 2253487689 | \n",
" 1 | \n",
" 11.0 | \n",
" 184 | \n",
" 93473.0 | \n",
" 90.300 | \n",
" 105.000 | \n",
" 49.708 | \n",
" 38.828 | \n",
" 11 | \n",
" 0 | \n",
" 4 | \n",
" 4 | \n",
" Robbie Brady | \n",
" Burnley | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" original_event_id | \n",
" action_id | \n",
" period_id | \n",
" time_seconds | \n",
" team_id | \n",
" player_id | \n",
" x | \n",
" y | \n",
" dx | \n",
" dy | \n",
" type_id | \n",
" bodypart_id | \n",
" player | \n",
" team | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1485184 | \n",
" 2253487625 | \n",
" 0 | \n",
" 1 | \n",
" 0.00 | \n",
" 184 | \n",
" 79050.0 | \n",
" 52.815 | \n",
" 34.204 | \n",
" -20.790 | \n",
" 0.000 | \n",
" 0 | \n",
" 0 | \n",
" Ashley Westwood | \n",
" Burnley | \n",
"
\n",
" \n",
" | 1 | \n",
" 1485184 | \n",
" 2253487625 | \n",
" 1 | \n",
" 1 | \n",
" 1.00 | \n",
" 184 | \n",
" 131464.0 | \n",
" 32.025 | \n",
" 34.204 | \n",
" 0.000 | \n",
" 0.000 | \n",
" 23 | \n",
" 0 | \n",
" James Tarkowski | \n",
" Burnley | \n",
"
\n",
" \n",
" | 2 | \n",
" 1485184 | \n",
" 2253487639 | \n",
" 2 | \n",
" 1 | \n",
" 2.00 | \n",
" 184 | \n",
" 131464.0 | \n",
" 31.080 | \n",
" 36.312 | \n",
" 7.140 | \n",
" -20.468 | \n",
" 0 | \n",
" 0 | \n",
" James Tarkowski | \n",
" Burnley | \n",
"
\n",
" \n",
" | 3 | \n",
" 1485184 | \n",
" 2253487639 | \n",
" 3 | \n",
" 1 | \n",
" 3.25 | \n",
" 184 | \n",
" 80067.0 | \n",
" 38.220 | \n",
" 15.844 | \n",
" 0.000 | \n",
" 0.000 | \n",
" 23 | \n",
" 0 | \n",
" Matthew Lowton | \n",
" Burnley | \n",
"
\n",
" \n",
" | 4 | \n",
" 1485184 | \n",
" NaN | \n",
" 4 | \n",
" 1 | \n",
" 4.50 | \n",
" 184 | \n",
" 80067.0 | \n",
" 38.220 | \n",
" 15.844 | \n",
" 5.145 | \n",
" -3.332 | \n",
" 21 | \n",
" 0 | \n",
" Matthew Lowton | \n",
" Burnley | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" season_id | \n",
" competition_id | \n",
" game_day | \n",
" game_date | \n",
" home_team_id | \n",
" away_team_id | \n",
" home_score | \n",
" away_score | \n",
" duration | \n",
" referee | \n",
" venue | \n",
" attendance | \n",
" home_manager | \n",
" away_manager | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1485494 | \n",
" 2021 | \n",
" ENG-Premier League | \n",
" None | \n",
" 2021-04-04 12:00:00 | \n",
" 18 | \n",
" 184 | \n",
" 3 | \n",
" 2 | \n",
" 98 | \n",
" Andre Marriner | \n",
" St. Mary's Stadium | \n",
" 0 | \n",
" Ralph Hasenhüttl | \n",
" Sean Dyche | \n",
"
\n",
" \n",
" | 1 | \n",
" 1485300 | \n",
" 2021 | \n",
" ENG-Premier League | \n",
" None | \n",
" 2020-12-16 20:00:00 | \n",
" 170 | \n",
" 211 | \n",
" 0 | \n",
" 0 | \n",
" 95 | \n",
" Robert Jones | \n",
" Craven Cottage | \n",
" 0 | \n",
" Scott Parker | \n",
" Graham Potter | \n",
"
\n",
" \n",
" | 2 | \n",
" 1485264 | \n",
" 2021 | \n",
" ENG-Premier League | \n",
" None | \n",
" 2020-12-06 19:15:00 | \n",
" 26 | \n",
" 161 | \n",
" 4 | \n",
" 0 | \n",
" 97 | \n",
" Craig Pawson | \n",
" Anfield | \n",
" 2000 | \n",
" Jürgen Klopp | \n",
" Nuno Espírito Santo | \n",
"
\n",
" \n",
" | 3 | \n",
" 1485519 | \n",
" 2021 | \n",
" ENG-Premier League | \n",
" None | \n",
" 2021-05-16 16:30:00 | \n",
" 175 | \n",
" 26 | \n",
" 1 | \n",
" 2 | \n",
" 102 | \n",
" Mike Dean | \n",
" The Hawthorns | \n",
" 0 | \n",
" Sam Allardyce | \n",
" Jürgen Klopp | \n",
"
\n",
" \n",
" | 4 | \n",
" 1485436 | \n",
" 2021 | \n",
" ENG-Premier League | \n",
" None | \n",
" 2021-03-19 20:00:00 | \n",
" 170 | \n",
" 19 | \n",
" 1 | \n",
" 2 | \n",
" 100 | \n",
" David Coote | \n",
" Craven Cottage | \n",
" 0 | \n",
" Scott Parker | \n",
" Marcelo Bielsa | \n",
"
\n",
" \n",
"
\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",
" team_id | \n",
" team_name | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 184 | \n",
" Burnley | \n",
"
\n",
" \n",
" | 1 | \n",
" 32 | \n",
" Man Utd | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" team_id | \n",
" player_id | \n",
" player_name | \n",
" is_starter | \n",
" minutes_played | \n",
" jersey_number | \n",
" starting_position | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1485184 | \n",
" 184 | \n",
" 105720 | \n",
" Nick Pope | \n",
" True | \n",
" 102 | \n",
" 1 | \n",
" GK | \n",
"
\n",
" \n",
" | 1 | \n",
" 1485184 | \n",
" 184 | \n",
" 80067 | \n",
" Matthew Lowton | \n",
" True | \n",
" 102 | \n",
" 2 | \n",
" DR | \n",
"
\n",
" \n",
" | 2 | \n",
" 1485184 | \n",
" 184 | \n",
" 94935 | \n",
" Ben Mee | \n",
" True | \n",
" 102 | \n",
" 6 | \n",
" DC | \n",
"
\n",
" \n",
" | 3 | \n",
" 1485184 | \n",
" 184 | \n",
" 131464 | \n",
" James Tarkowski | \n",
" True | \n",
" 102 | \n",
" 5 | \n",
" DC | \n",
"
\n",
" \n",
" | 4 | \n",
" 1485184 | \n",
" 184 | \n",
" 24148 | \n",
" Erik Pieters | \n",
" True | \n",
" 102 | \n",
" 23 | \n",
" DL | \n",
"
\n",
" \n",
"
\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",
" game_id | \n",
" event_id | \n",
" period_id | \n",
" team_id | \n",
" player_id | \n",
" type_id | \n",
" timestamp | \n",
" minute | \n",
" second | \n",
" outcome | \n",
" start_x | \n",
" start_y | \n",
" end_x | \n",
" end_y | \n",
" qualifiers | \n",
" related_player_id | \n",
" touch | \n",
" goal | \n",
" shot | \n",
" type_name | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1485184 | \n",
" 2253487473 | \n",
" 1 | \n",
" 32 | \n",
" NaN | \n",
" 32 | \n",
" 2021-01-12 20:15:00 | \n",
" 0 | \n",
" 0 | \n",
" True | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" {} | \n",
" NaN | \n",
" False | \n",
" False | \n",
" False | \n",
" start | \n",
"
\n",
" \n",
" | 1 | \n",
" 1485184 | \n",
" 2253487469 | \n",
" 1 | \n",
" 184 | \n",
" NaN | \n",
" 32 | \n",
" 2021-01-12 20:15:00 | \n",
" 0 | \n",
" 0 | \n",
" True | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" {} | \n",
" NaN | \n",
" False | \n",
" False | \n",
" False | \n",
" start | \n",
"
\n",
" \n",
" | 2 | \n",
" 1485184 | \n",
" 2253487625 | \n",
" 1 | \n",
" 184 | \n",
" 79050.0 | \n",
" 1 | \n",
" 2021-01-12 20:15:00 | \n",
" 0 | \n",
" 0 | \n",
" True | \n",
" 50.3 | \n",
" 50.3 | \n",
" 30.5 | \n",
" 50.3 | \n",
" {213: '3.1', 178: True, 141: '50.3', 212: '20.... | \n",
" NaN | \n",
" True | \n",
" False | \n",
" False | \n",
" pass | \n",
"
\n",
" \n",
" | 3 | \n",
" 1485184 | \n",
" 2253487639 | \n",
" 1 | \n",
" 184 | \n",
" 131464.0 | \n",
" 1 | \n",
" 2021-01-12 20:15:02 | \n",
" 0 | \n",
" 2 | \n",
" True | \n",
" 29.6 | \n",
" 53.4 | \n",
" 36.4 | \n",
" 23.3 | \n",
" {178: True, 213: '5.0', 212: '21.7', 141: '23.... | \n",
" NaN | \n",
" True | \n",
" False | \n",
" False | \n",
" pass | \n",
"
\n",
" \n",
" | 4 | \n",
" 1485184 | \n",
" 2253487685 | \n",
" 1 | \n",
" 184 | \n",
" 80067.0 | \n",
" 1 | \n",
" 2021-01-12 20:15:07 | \n",
" 0 | \n",
" 7 | \n",
" True | \n",
" 41.3 | \n",
" 18.4 | \n",
" 86.0 | \n",
" 73.1 | \n",
" {1: True, 213: '0.7', 56: 'Center', 178: True,... | \n",
" NaN | \n",
" True | \n",
" False | \n",
" False | \n",
" pass | \n",
"
\n",
" \n",
"
\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
}