257 lines
284 KiB
Plaintext
257 lines
284 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"\"\"\"big thanks to McKayJohns and mpl soccer\n",
|
||
|
"\n",
|
||
|
"https://www.youtube.com/watch?v=fPcY9dbOMGM&ab_channel=McKayJohns\"\"\""
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"#edit only this tab\n",
|
||
|
"#give the folder path of the match\n",
|
||
|
"path = \"/home/kirugulige/Documents/Football-Analytics/open-data-master/data/events/\"\n",
|
||
|
"home_team = 'Espanyol'\n",
|
||
|
"away_team = 'Barcelona'"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 2,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"done\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import json\n",
|
||
|
"import os\n",
|
||
|
"import codecs\n",
|
||
|
"import numpy as np\n",
|
||
|
"import pandas as pd\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"from matplotlib.patches import Arc, Rectangle, ConnectionPatch\n",
|
||
|
"from matplotlib.offsetbox import OffsetImage\n",
|
||
|
"import StatsbombPitch as sb\n",
|
||
|
"from functools import reduce\n",
|
||
|
"#from pandas.io.json import json_normalize\n",
|
||
|
"\n",
|
||
|
"Xg_req = pd.DataFrame(data=None)\n",
|
||
|
"\n",
|
||
|
"filename = '69275.json' # remove the comment line to work for this match\n",
|
||
|
"with codecs.open(\"%s\" % path + filename,encoding='utf-8') as data_file: \n",
|
||
|
" data = json.load(data_file)\n",
|
||
|
" df = pd.DataFrame(data=None)\n",
|
||
|
" \n",
|
||
|
" df = pd.json_normalize(data, sep = \"_\")\n",
|
||
|
" \n",
|
||
|
" #df = df[(df['type_name'] == \"Shot\")]\n",
|
||
|
" #df = df.loc[:,['location','shot_body_part_id','shot_end_location','shot_one_on_one','shot_technique_id','shot_type_id','under_pressure','shot_outcome_id']]\n",
|
||
|
" #print(df.shape)\n",
|
||
|
"Xg_req = Xg_req.append(df,ignore_index=True,sort=False)\n",
|
||
|
" #df.drop(df.index, inplace=True)\n",
|
||
|
" \n",
|
||
|
"print(\"done\")\n",
|
||
|
"df = Xg_req"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"df_pass = df[df['type_name']=='Pass']\n",
|
||
|
"\n",
|
||
|
"df_pass = df_pass[['id','minute','second','team_name','location','player_name','pass_recipient_name','pass_end_location','pass_outcome_name' ]]\n",
|
||
|
"\n",
|
||
|
"df_successful_pass = df_pass[df_pass.pass_outcome_name.isna()]"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"#get substitution value\n",
|
||
|
"df_subs = df[df['type_name']=='Substitution'].groupby('team_name',as_index=False).min()#.agg({'minute':['min'],'second':['min']})\n",
|
||
|
"\n",
|
||
|
"df_hsubs = df_subs[df_subs['team_name']== home_team]\n",
|
||
|
"home_min = int(df_hsubs['minute'])\n",
|
||
|
"home_sec = int(df_hsubs['second'])\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"df_asubs = df_subs[df_subs['team_name']== away_team]\n",
|
||
|
"away_min = int(df_asubs['minute'])\n",
|
||
|
"away_sec = int(df_asubs['second'])\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 5,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"df_home_team = df_successful_pass[df_successful_pass['team_name']==home_team] \n",
|
||
|
"\n",
|
||
|
"df_home_team = df_home_team[df_home_team['minute'] <= home_min]\n",
|
||
|
"df_away_team = df_successful_pass[df_successful_pass['team_name']==away_team]\n",
|
||
|
"\n",
|
||
|
"df_away_team = df_away_team[df_away_team['minute'] <= away_min]"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 6,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"def split_locx(line):\n",
|
||
|
" return line.location[0]\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"def split_locy(line):\n",
|
||
|
" return line.location[1]\n",
|
||
|
"\n",
|
||
|
"def split_endlocx(line):\n",
|
||
|
" return line.pass_end_location[0]\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"def split_endlocy(line):\n",
|
||
|
" return line.pass_end_location[1]"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 7,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"def plot(df_away_team):\n",
|
||
|
"\n",
|
||
|
" df_away_team['loc_x'] = df_away_team.apply(split_locx,axis = 1)\n",
|
||
|
" df_away_team['loc_y'] = df_away_team.apply(split_locy,axis = 1)\n",
|
||
|
"\n",
|
||
|
" df_away_team['endloc_x'] = df_away_team.apply(split_endlocx,axis = 1)\n",
|
||
|
" df_away_team['endloc_y'] = df_away_team.apply(split_endlocy,axis = 1)\n",
|
||
|
"\n",
|
||
|
" #get average location\n",
|
||
|
" df_away_avg = df_away_team.groupby('player_name').agg({'loc_x':['mean'],'loc_y':['mean','count']})\n",
|
||
|
"\n",
|
||
|
" df_away_avg.columns = ['loc_x','loc_y','count']\n",
|
||
|
"\n",
|
||
|
" df_away_avg\n",
|
||
|
"\n",
|
||
|
" df_pass_away_between = df_away_team.groupby(['player_name','pass_recipient_name']).id.count().reset_index()\n",
|
||
|
" df_pass_away_between.rename({'id':'pass_count'},axis='columns',inplace=True)\n",
|
||
|
"\n",
|
||
|
" df_pass_away_between = df_pass_away_between.merge(df_away_avg,left_on ='player_name',right_index=True)\n",
|
||
|
" df_pass_away_between = df_pass_away_between.merge(df_away_avg,left_on ='pass_recipient_name',right_index=True,suffixes=['','_end'])\n",
|
||
|
"\n",
|
||
|
" df_pass_away_between = df_pass_away_between[df_pass_away_between['pass_count'] >3]\n",
|
||
|
" df_pass_away_between\n",
|
||
|
"\n",
|
||
|
" from mplsoccer.pitch import Pitch\n",
|
||
|
" from mplsoccer.statsbomb import read_event, EVENT_SLUG\n",
|
||
|
" from matplotlib import rcParams\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
" pitch = Pitch(pitch_type='statsbomb', orientation='horizontal',\n",
|
||
|
" pitch_color='#22312b', line_color='#c7d5cc', figsize=(16, 11),\n",
|
||
|
" constrained_layout=False, tight_layout=True)\n",
|
||
|
" fig, ax = pitch.draw()\n",
|
||
|
"\n",
|
||
|
" #arrows = pitch.arrows(1.2*df_pass_away_between.loc_x,0.8*df_pass_away_between.loc_y,1.2*df_pass_away_between.loc_x_end,0.8*df_pass_away_between.loc_y_end,ax=ax,)\n",
|
||
|
"\n",
|
||
|
" arrows = pitch.arrows(1.2*df_pass_away_between.loc_x,.8*df_pass_away_between.loc_y,1.2*df_pass_away_between.loc_x_end,.8*df_pass_away_between.loc_y_end,\n",
|
||
|
" width = 5, headwidth = 5, color = 'r', ax = ax, zorder = 1, alpha = .5)\n",
|
||
|
"\n",
|
||
|
" nodes = pitch.scatter(1.2*df_away_avg.loc_x,.8*df_away_avg.loc_y,\n",
|
||
|
" s = 300, color = '#d3d3d3', edgecolors = 'black', linewidth = 2.5, alpha = 1, zorder = 1, ax=ax)\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
" for index, row in df_pass_away_between.iterrows():\n",
|
||
|
" pitch.annotate(row.player_name, xy=(1.2*row.loc_x,0.8* row.loc_y), c='gray', va='center', ha='center', size=16, weight='bold', ax=ax)\n",
|
||
|
" #title = ax.set_title(\"{} {} Formation vs {}\".format(away_team, '433', home_team), size=28, y=0.97, color='#c7d5cc')\n",
|
||
|
" fig.set_facecolor(\"#22312b\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 8,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABG4AAAMQCAYAAAB2QiNVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d3QcZ5om+D5fRKT3CUNPgkYkRUo0IiV6iZJIGUqivClJperuqu47ozF3b+/uzNzRzu093Vu9dWZnZndnT0/3dHVVd6lKKnlflKcMKZGSSJESJZKiA72BSW8jI+K7fySQyEQmEgAJkEny+Z2jIyAyMjIyASYQD973/cS0hXMliIiIiIiIiIio4SgX+gSIiIiIiIiIiKg2BjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYPSLvQJDMUzv/vNhT4FIiIiIiIiIroEPfb4Ty70KdTFihsiIiIiIiIiogZ1UVTc9Gr0FIyIiIgurN4qXf7OQERERIO5WLp7WHFDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KAY3REREREREREQNisENEREREREREVGDYnBDRERERERERNSgGNwQERERERERETUoBjdERERERERERA2KwQ0RERERERERUYNicENERERERERE1KAY3BARERERERERNSgGN0REREREREREDYrBDRERERERERFRg2JwQ0RERERERETUoBjcEBERERERERE1KO1CnwARERERnR9SSuTTWRh6AZZlQlFUaHYbHB4XhBAX+vSIiIioBgY3RERERJc40zCQ7I4h0RWFoetVt2t2O/zNIfiaglA1/npIRETUSPiTmYiIiOgSluiKoPv4aUgpB9zH0HVETp5B9FQHmiaOg785dB7PkIiIiOphcENEREQj6pF1d8Nusw94u2lZeObNl4d0rMfuuh+qUhzJt3XHduw7emhEzhEA1t94CwI+f9V2y7Kw5ZttOHTs6LCON3PyNCxduAjA8J7j2Sh/jY+cPIFPvvq85n7R0x2InuosfT516lQ8/PDDWLZsGdxuNzKZDLZs2YLnn38e7e3tkFLiX/zJn1a1TfWGPpZl4Ytvd+JA2deh1tdoJF6LH69/AEIISCnx2zdeGvb9es97w6cb0R2LVOxz9023lr728WQCr298d8TOpfxrM5Rj93c+v4+IiOjiwOCGiIiILjuP3nkfNFWteZuqqpjQOnbYwU2jSXRFSqFNKBTCX//1X2PFihVVocy0adPw6KOPYvPmzXjqqadqHqv3PqqqYtmCa3Am0oFkKjW6T+As3Hhd5fMTQmDV4uvw2gfvXMCzIiIiOjcMboiIiGjU6AUdz214fdj3czqdyOVyo1JtMKF1bKlCREqJ7d9/i0NHDmHi+MmYNmkyWsNNyNeYA9NIBntNTcNA9/HTAIqhzdNPP422trYB9xdCYNWqVXj66aexbdu20vbDJ47i021f4MrpV2Dx3PkQQkAIgWXzFuG9zz8BgIaqCBk/ZmzVNp/be87HHU7FDxER0UhjcENEREQXTHmbzeHjRzF5wkQIFCsmfvvGSwO2Sjk1DXfdfBucDmfF8d5/ZQPW3reu7mNOGT+xVJVhWRZ2H9wHADhw9FBFCxAAPHDLnXC7XACA7lgEf/jkw9Jtj6+/H4pQIKXEZ19/WfOxHr3jXmg9w34PHGnH5zv7QpHy9ps3P3oPTaEQls1fXHN1pxNnTmPjF5tLnw/UKvXE3Q8CKAZS7QvbMXXqVAghsH37duzatQu333576XxqaWtrw/bt20ufG7oBANhzcD8WzZlXOjdN66tWGqydTUAiYBiIaxruuOFmhAPV83Msy8InX23B8TOnBjy3wXicTihlLVJAX6XQzMnTBmyzE0LgkXV3w6bZStsOHD2MLQN8rcpDnOULFmP65LbS59l8bsDz6/8YvfK6jjc+2ICcYQzhWRIR0eVIudAnQERERAQAUyZMgiKUQZeldjqdeHDdPXA5XaUKkN7/LNMa9HFOd3WUPlZVFT9e/wAeWXc31i67HgFvZXXGh1s3l0KA8sAh6POXAiYAOHS8dlvV3vYDpY/bJkwqfTx72oy+8EhKxJIJjAm3QFGUquckhMCEMWOx+rrlgz63cr2hTS9d17Fx48ZhHcPQC5BSYtbU6RVzY/Z89w1aCwVMy+Uh0Df0eF42g8c7u7Ey2ddGpUgg1xPsBH2Bms9PVVXcuGQFnOewotWNS1aWztE0TaQyaQDFYGbBnKsGvJ/P44XdZq84nxmT27Bw9sD3AYD5s+Zg+uS2ivu5na6a4QwA2DRbzefudDhw/+13n+WzJiKiywErboiIiGjU2G32UhVIr47uLryz+aOa+x840o6v936HWVOmDXjMu1avrQgRDh49jG9/2IPpk6dg8bwFg57ToeNHsXzhtVB6wgQhBOw2O8a1jsH6m26DaVl4/YMNSOdyiCZiME0TmqZBCIG
|
||
|
"text/plain": [
|
||
|
"<Figure size 1152x792 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"plot(df_away_team)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 9,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABG4AAAMQCAYAAAB2QiNVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9aWwbeZouej6xMBjcSe22ZVuSN3mT1/Rup+3cN2dVZVdndWZV9r137mnMqZlBz4cBBpgCzmlgpnpqcO85GJwBunF77uCis6q6M7u6ujqde6adTqf33Zb3VfIm29q4M4JkLPNBEi2K1GJbCyU9P8CAFAwGgxQtkQ/f9/0LDauW2iAiIiIiIiIiopIjTvQJEBERERERERFRcQxuiIiIiIiIiIhKFIMbIiIiIiIiIqISxeCGiIiIiIiIiKhEMbghIiIiIiIiIipRDG6IiIiIiIiIiEoUgxsiIiIiIiIiohLF4IaIiIiIiIiIqEQxuCEiIiIiIiIiKlEMboiIiIiIiIiIShSDGyIiIiIiIiKiEsXghoiIiIiIiIioRDG4ISIiIiIiIiIqUQxuiIiIiIiIiIhKFIMbIiIiIiIiIqISxeCGiIiIiIiIiKhEMbghIiIiIiIiIipRDG6IiIiIiIiIiEoUgxsiIiIiIiIiohLF4IaIiIiIiIiIqEQxuCEiIiIiIiIiKlEMboiIiIiIiIiIShSDGyIiIiIiIiKiEsXghoiIiIiIiIioRDG4ISIiIiIiIiIqUQxuiIiIiIiIiIhKFIMbIiIiIiIiIqISxeCGiIiIiIiIiKhEMbghIiIiIiIiIipRDG6IiIiIiIiIiEoUgxsiIiIiIiIiohLF4IaIiIiIiIiIqEQxuCEiIiIiIiIiKlEMboiIiIiIiIiIShSDGyIiIiIiIiKiEsXghoiIiIiIiIioRDG4ISIiIiIiIiIqUQxuiIiIiIiIiIhKFIMbIiIiIiIiIqISJU/0CYzE73/3jxN9CkREREREREQ0Bb3/87+c6FMYEituiIiIiIiIiIhK1KSouOlT6ikYERERTay+Kl2+ZiAiIqLhTJbuHlbcEBERERERERGVKAY3REREREREREQlisENEREREREREVGJYnBDRERERERERFSiGNwQEREREREREZUoBjdERERERERERCWKwQ0RERERERERUYlicENEREREREREVKIY3BARERERERERlSgGN0REREREREREJYrBDRERERERERFRiWJwQ0RERERERERUohjcEBERERERERGVKAY3REREREREREQlisENEREREREREVGJYnBDRERERERERFSiGNwQEREREREREZUoBjdERERERERERCWKwQ0RERERERERUYlicENEREREREREVKIY3BARERERERERlSgGN0REREREREREJYrBDRERERERERFRiWJwQ0RERERERERUohjcEBERERERERGVKAY3REREREREREQlisENEREREREREVGJYnBDRERERERERFSiGNwQEREREREREZUoBjdERERERERERCWKwQ0RERERERERUYlicENEREREREREVKIY3BARERERERERlSgGN0REREREREREJYrBDRERERERERFRiWJwQ0RERERERERUohjcEBERERERERGVKHmiT4CIiIhoqrJtG+mkBiOThWWZEEUJsuKA0+OCIAgTfXpEREQ0CTC4ISIiIhplpmEg3hVBrDMMI5MpuFxWFPgrQvCVByHJfDlGREREg+MrBSIiIhpVQZ8fb+14GQCw79hB3Hv0cILPaHzFOrvRde8hbNvObfurv/orzJw5E21tbfiHf/gHGJkMutseIfygHeW1M+CvCE3gGZc+WRTx09fehixJOH/tMs5euTjRp0RERDRuGNwQERFRgZc3P4+aiqrc930hhGVZSGoaLt68iuutt4pfd8t2AMAPJ48OGdr8/K13IIo94/Y+/OQPo3Tmw3tp0zbMqKwGAHR0d+HLA98V7PPjF1+Dz+MFAFy/3YJwLIp1y1cCAB52tuObQ/sBAD97/W0oDgVAz30IP2xH+EFH7jj19fV477334HA44HK58MYbb6CsrAwff/wxWlpaYNs2Ou+2wTQMhGoqc9frf9w+tm3Dsix0hLvw/bFDyBjG6D0o42DgYwUAjQ0Lij6uA72ydSdkScKlm9cY2hAR0bTD4cREREQ0LEEQIAgCJEmC3+vFxhVr8Ob2lwr227FuM5wOBYfPnsTttnsTcKbDO3f1Uu7r8mBhpYsiy/C6PQB6wpKzVy6M6Lixzu5caBMKhfD3f//3+O1vfwuHwwGPx4NXX30VDQ0NeP/99/HJJ5/g7/7u7xAK9dx++EE7Yp3dQx6/7/GvqajCrp2vjuicpoKmhYtRFgjiWustnLrYPNGnQ0RENO5YcUNERERD6quECPr8WLqgEQ21cyAIAsoCQby0aRu+PfxDbt99xw9N4JmOTHtXJzLZLBSHA6IoYkFdQ171UNOipbnBwSlNg6bruHLrOq7cuj7kcbvu9VQXhUIhfPjhh6irqwMAvPPOOwX7CoKArVu34sMPP8QHH3yAcDiMrnsP4Qn6C2beHD9/Ftdab2Lp/IVY2bgMgiDA7XIhFAgiHI08wyMxOTRfu4zma5cn+jSIiIgmDIMbIiIiGpFIPIZDp48jpaWwfOFiAEBNRRW8bjcSqdSQbS8vbNiCGZXVEAQBWcPA8ebTRW+jIhTCtrUb4XKquTYqAEhnMrh44you3riat39NRSXWN62Gz+OFIAj4+g+fQZIkNC1cPOSb/fuP2lBfOxcA0Fg3Ly+4qaudnfv6+p2Wnn1G0NLT1072n//zf8alS5dw+vTpvDk3iqJgwYIFaGxsfHxbdXX49a9/jV/+8pewbRvxrgiC1RUFx7YsC+evXcHyBYsh9wY75QOCm0V189C0aAlUpzO3LamlcPLCOdx5cD+3raqsHJtXr4PH5c4FVH0tcPuOHUQ0EQcAbF71HObMrIUsST33D0A2m8Httvs4eu5U7njz59Rh5eJlcDnV3H6JZBKHTh9HR7ir4L6M1MrGpVhUPy/XXmXbNuKpJA6fPvFMxyUiIpps2CpFRERET+TM5QswLQtAT+XIovr5Q+7/8ubnMat6BkRRhCAIUBwObF69ruhy2EFfAF63B5Ik5dqzBEGA6nRi9ZLlWDxvQW7f+XPq8NKm5xHw+XPHBgDTNFFTWVVw7P7OXr6YC1WC/kDuBZFbVR8HELaNC9evjOgx6VNfX4/6+npompYX2gBAJpPBxYsXce3atbztW7ZsyVXnxLrCBdcbTDyZzH29rmkV1jWtgktV8x43r9uD55/biMaGx4/bS5ueh8/jzT1m/Vvg/F4fAGDN0ibMm1MHhyzn9hEFAU7FiVnVNbljrV26AhtXroVbdeXt5/d68erWHZhZVf1Ej1+fFzZsRdOiJXAqzsfHFUUEvD68unUHavudAxER0VTHihsiIiJ6YplMGi7VBQAI9L7ZL8atulFd3jN017ZtnL50AS33WrF93WZUhMoK9u+KhNF89RJuP7iPeDIBURDR2DAfKxt72peWzl+Eyzd7WpbWN63OhTWRWBQHTh/H//Q//T9xv/Uezv9p6NaaeCoJLa3nAoclCxpx4foVrOhtReo7ptUbUI3Uu+++C5/Phzlz5mDu3LkIBoMwTRMXLlzAnTt3AADXrl3DwoULc9cRBAE/+9nP8Jvf/AZGOoN0Uis4riiKWDp/IaTe6pesYeBRV888HaeiYFHdPAiCkAubLt+60RO+zJ4LQRCwZmkTrty6Dl9vKAYA3ZEwvjn8AxyyjOryCjTMrkNK77ntmb3Dm23bxp4jP6CjqxPBQABzZ86GU+mp6FEcChbPWwBBEGAYBr4/cRjtnR2YXzcPzy1bAUEQsHnVOvzh60+f6DGsDJXnAh/btnG8+QzuPLyPrWvWo6aiCoIgYNPqdfiXL3c/0XGJiIgmKwY3RERE9BQKq2WKmTdnbi4I0XQdF2/0VLDsObwf777+o4Kqm3gijopQGZbMXwSpXxVNH2dv20xNRWUugLAsC7v3fQMAcLndmL9kIc787fADhVvu3sHSBYs
|
||
|
"text/plain": [
|
||
|
"<Figure size 1152x792 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"plot(df_home_team)"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "Python 3",
|
||
|
"language": "python",
|
||
|
"name": "python3"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 3
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython3",
|
||
|
"version": "3.8.5"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 2
|
||
|
}
|