sportowe_wizualizacja/Through_Ball.ipynb

436 lines
116 KiB
Plaintext
Raw Normal View History

2019-06-03 13:31:10 +02:00
{
"cells": [
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 3,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"done\n"
]
}
],
"source": [
"import json\n",
"import os\n",
"from pandas.io.json import json_normalize\n",
"import numpy as np\n",
"import seaborn as sns\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 squarify\n",
"from functools import reduce\n",
2020-04-11 08:13:13 +02:00
"path = \"/home/kirugulige/Documents/Football-Analytics/open-data-master/data/events/\"\n",
2019-06-03 13:31:10 +02:00
"Xg_req = pd.DataFrame(data=None)\n",
2020-04-11 08:13:13 +02:00
"filename = '69275.json' \n",
"with open(\"%s\" % path + filename,encoding=\"utf8\") as data_file: \n",
" data = json.load(data_file)\n",
" df = pd.DataFrame(data=None)\n",
2019-06-03 13:31:10 +02:00
" \n",
2020-04-11 08:13:13 +02:00
" df = json_normalize(data, sep = \"_\")\n",
2019-06-03 13:31:10 +02:00
" \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",
2020-04-11 08:13:13 +02:00
"Xg_req = Xg_req.append(df,ignore_index=True,sort=False)\n",
2019-06-03 13:31:10 +02:00
" #df.drop(df.index, inplace=True)\n",
" \n",
"print(\"done\")\n",
"df = Xg_req"
]
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 4,
2019-06-03 13:31:10 +02:00
"metadata": {},
2020-04-11 08:13:13 +02:00
"outputs": [],
2019-06-03 13:31:10 +02:00
"source": [
"through_ball = df.query('pass_through_ball == True')"
]
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 5,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2020-04-11 08:13:13 +02:00
"4\n",
2019-06-04 07:03:23 +02:00
"0\n"
2019-06-03 13:31:10 +02:00
]
}
],
"source": [
2019-06-04 07:03:23 +02:00
"assist = df.query('pass_goal_assist == True')\n",
2019-06-03 13:31:10 +02:00
"print(len(assist.index))\n",
"goal = assist.query('shot_outcome_id == 97')\n",
"#assist = df.query('pass_goal_assist == True')\n",
"print(len(goal.index))"
]
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 6,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>period</th>\n",
" <th>timestamp</th>\n",
" <th>location</th>\n",
" <th>pass_end_location</th>\n",
" <th>pass_recipient_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>280</th>\n",
" <td>1f6ef40d-cd32-4566-add6-f1558833d0c1</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:05:57.827</td>\n",
" <td>[81.5, 37.8]</td>\n",
" <td>[103.1, 33.4]</td>\n",
" <td>Pablo Daniel Osvaldo</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>604</th>\n",
" <td>4040c0ab-d934-469b-84f5-c595213b851b</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:13:56.420</td>\n",
" <td>[48.2, 57.4]</td>\n",
" <td>[85.5, 38.3]</td>\n",
" <td>Pablo Daniel Osvaldo</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>794</th>\n",
" <td>7dbe04a8-41c5-4ea8-bfa1-892fe23a72e6</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:18:30.829</td>\n",
" <td>[66.8, 46.7]</td>\n",
" <td>[93.5, 38.5]</td>\n",
" <td>Pedro Eliezer Rodríguez Ledesma</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>840</th>\n",
" <td>3a7da0a1-e9c4-40a1-9702-e99c5ace03c2</td>\n",
" <td>1</td>\n",
" <td>00:20:46.623</td>\n",
" <td>[66.0, 56.5]</td>\n",
" <td>[105.5, 34.7]</td>\n",
" <td>José María Callejón Bueno</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>962</th>\n",
" <td>2bc53e64-664a-4f83-9d0c-6b046d91a7d9</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:23:55.494</td>\n",
" <td>[81.5, 28.1]</td>\n",
" <td>[94.2, 31.7]</td>\n",
" <td>David Villa Sánchez</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2020-04-11 08:13:13 +02:00
" id period timestamp location \\\n",
"280 1f6ef40d-cd32-4566-add6-f1558833d0c1 1 00:05:57.827 [81.5, 37.8] \n",
"604 4040c0ab-d934-469b-84f5-c595213b851b 1 00:13:56.420 [48.2, 57.4] \n",
"794 7dbe04a8-41c5-4ea8-bfa1-892fe23a72e6 1 00:18:30.829 [66.8, 46.7] \n",
"840 3a7da0a1-e9c4-40a1-9702-e99c5ace03c2 1 00:20:46.623 [66.0, 56.5] \n",
"962 2bc53e64-664a-4f83-9d0c-6b046d91a7d9 1 00:23:55.494 [81.5, 28.1] \n",
2019-06-03 13:31:10 +02:00
"\n",
2020-04-11 08:13:13 +02:00
" pass_end_location pass_recipient_name \n",
"280 [103.1, 33.4] Pablo Daniel Osvaldo \n",
"604 [85.5, 38.3] Pablo Daniel Osvaldo \n",
"794 [93.5, 38.5] Pedro Eliezer Rodríguez Ledesma \n",
"840 [105.5, 34.7] José María Callejón Bueno \n",
"962 [94.2, 31.7] David Villa Sánchez "
2019-06-03 13:31:10 +02:00
]
},
2020-04-11 08:13:13 +02:00
"execution_count": 6,
2019-06-03 13:31:10 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"through_ball= through_ball[[\"id\", \"period\", \"timestamp\", \"location\", \"pass_end_location\", \"pass_recipient_name\"]]\n",
"through_ball.head()"
]
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 7,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>period</th>\n",
" <th>timestamp</th>\n",
" <th>location</th>\n",
" <th>pass_end_location</th>\n",
" <th>pass_recipient_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>794</th>\n",
" <td>7dbe04a8-41c5-4ea8-bfa1-892fe23a72e6</td>\n",
2019-06-03 13:31:10 +02:00
" <td>1</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:18:30.829</td>\n",
" <td>[66.8, 46.7]</td>\n",
" <td>[93.5, 38.5]</td>\n",
" <td>Pedro Eliezer Rodríguez Ledesma</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>2436</th>\n",
" <td>9810ac65-15b8-4736-a09e-08f7faaff01d</td>\n",
2019-06-03 13:31:10 +02:00
" <td>2</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:17:04.830</td>\n",
" <td>[52.7, 63.4]</td>\n",
" <td>[84.2, 57.1]</td>\n",
" <td>Pablo Daniel Osvaldo</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>2935</th>\n",
" <td>7269b3a6-43d7-45bc-8823-bcfd1542ad45</td>\n",
2019-06-03 13:31:10 +02:00
" <td>2</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:30:03.492</td>\n",
" <td>[64.4, 33.8]</td>\n",
" <td>[79.4, 25.5]</td>\n",
" <td>David Villa Sánchez</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" <tr>\n",
2020-04-11 08:13:13 +02:00
" <th>3344</th>\n",
" <td>dc1b453d-6e7e-49b1-ad88-79525e8223f9</td>\n",
2019-06-03 13:31:10 +02:00
" <td>2</td>\n",
2020-04-11 08:13:13 +02:00
" <td>00:38:47.689</td>\n",
" <td>[70.1, 30.6]</td>\n",
" <td>[98.0, 23.3]</td>\n",
" <td>David Villa Sánchez</td>\n",
2019-06-03 13:31:10 +02:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2020-04-11 08:13:13 +02:00
" id period timestamp \\\n",
"794 7dbe04a8-41c5-4ea8-bfa1-892fe23a72e6 1 00:18:30.829 \n",
"2436 9810ac65-15b8-4736-a09e-08f7faaff01d 2 00:17:04.830 \n",
"2935 7269b3a6-43d7-45bc-8823-bcfd1542ad45 2 00:30:03.492 \n",
"3344 dc1b453d-6e7e-49b1-ad88-79525e8223f9 2 00:38:47.689 \n",
2019-06-03 13:31:10 +02:00
"\n",
2020-04-11 08:13:13 +02:00
" location pass_end_location pass_recipient_name \n",
"794 [66.8, 46.7] [93.5, 38.5] Pedro Eliezer Rodríguez Ledesma \n",
"2436 [52.7, 63.4] [84.2, 57.1] Pablo Daniel Osvaldo \n",
"2935 [64.4, 33.8] [79.4, 25.5] David Villa Sánchez \n",
"3344 [70.1, 30.6] [98.0, 23.3] David Villa Sánchez "
2019-06-03 13:31:10 +02:00
]
},
2020-04-11 08:13:13 +02:00
"execution_count": 7,
2019-06-03 13:31:10 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"assist= assist[[\"id\", \"period\", \"timestamp\", \"location\", \"pass_end_location\", \"pass_recipient_name\"]]\n",
"assist.head()"
]
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 13,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [],
"source": [
"def draw_pitch(ax):\n",
" # focus on only half of the pitch\n",
" #Pitch Outline & Centre Line\n",
" Pitch = Rectangle([0,0], width = 120, height = 80, fill = False)\n",
" #Left, Right Penalty Area and midline\n",
" LeftPenalty = Rectangle([0,22.3], width = 14.6, height = 35.3, fill = False)\n",
" RightPenalty = Rectangle([105.4,22.3], width = 14.6, height = 35.3, fill = False)\n",
" midline = ConnectionPatch([60,0], [60,80], \"data\", \"data\")\n",
"\n",
" #Left, Right 6-yard Box\n",
" LeftSixYard = Rectangle([0,32], width = 4.9, height = 16, fill = False)\n",
" RightSixYard = Rectangle([115.1,32], width = 4.9, height = 16, fill = False)\n",
"\n",
"\n",
" #Prepare Circles\n",
" centreCircle = plt.Circle((60,40),8.1,color=\"black\", fill = False)\n",
" centreSpot = plt.Circle((60,40),0.71,color=\"black\")\n",
" #Penalty spots and Arcs around penalty boxes\n",
" leftPenSpot = plt.Circle((9.7,40),0.71,color=\"black\")\n",
" rightPenSpot = plt.Circle((110.3,40),0.71,color=\"black\")\n",
" leftArc = Arc((9.7,40),height=16.2,width=16.2,angle=0,theta1=310,theta2=50,color=\"black\")\n",
" rightArc = Arc((110.3,40),height=16.2,width=16.2,angle=0,theta1=130,theta2=230,color=\"black\")\n",
" \n",
" element = [Pitch, LeftPenalty, RightPenalty, midline, LeftSixYard, RightSixYard, centreCircle, \n",
" centreSpot, rightPenSpot, leftPenSpot, leftArc, rightArc]\n",
" for i in element:\n",
" ax.add_patch(i)"
]
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 17,
2019-06-03 13:31:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
2020-04-11 08:13:13 +02:00
"image/png": "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
2019-06-03 13:31:10 +02:00
"text/plain": [
2020-04-11 08:13:13 +02:00
"<Figure size 864x576 with 1 Axes>"
2019-06-03 13:31:10 +02:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure() #set up the figures\n",
2020-04-11 08:13:13 +02:00
"fig.set_size_inches(12, 8)\n",
2019-06-03 13:31:10 +02:00
"ax=fig.add_subplot(1,1,1)\n",
2020-04-11 08:13:13 +02:00
"ax.set_facecolor('grey')\n",
2019-06-03 13:31:10 +02:00
"draw_pitch(ax) #overlay our different objects on the pitch\n",
"plt.ylim(-2, 82)\n",
"plt.xlim(-2, 122)\n",
"#plt.plot(x_axis,y_axis,'ro')\n",
"#plt.plot(x,y,'bo')\n",
"#plt.axis('off')\n",
"\n",
2019-06-04 07:03:23 +02:00
"for i in range(len(through_ball)):\n",
2020-04-11 08:13:13 +02:00
" x = through_ball.iloc[i]['pass_end_location'][0]\n",
" y = through_ball.iloc[i]['pass_end_location'][1]\n",
" xe = through_ball.iloc[i]['location'][0]\n",
" ye = through_ball.iloc[i]['location'][0]\n",
" ax.scatter(x,y,color=\"red\",edgecolors=\"black\",zorder=10,alpha=1)\n",
" ax.plot([x,xe],[y,ye],zorder=11,alpha=1,color=\"black\")\n",
"\n",
2019-06-03 13:31:10 +02:00
"\"\"\"\n",
"for i in range(len(assist)):\n",
" # annotate draw an arrow from a current position to pass_end_location\n",
" ax.annotate(\"\", xy = (assist.iloc[i]['pass_end_location'][0], assist.iloc[i]['pass_end_location'][1]), xycoords = 'data',\n",
" xytext = (assist.iloc[i]['location'][0], assist.iloc[i]['location'][1]), textcoords = 'data',\n",
" arrowprops=dict(arrowstyle=\"->\",connectionstyle=\"arc3\", color = \"red\"),)\n",
2019-06-04 07:03:23 +02:00
"\"\"\"\n",
2019-06-03 13:31:10 +02:00
"\n",
"plt.show()"
]
2019-06-04 07:03:23 +02:00
},
{
"cell_type": "code",
2020-04-11 08:13:13 +02:00
"execution_count": 18,
2019-06-04 07:03:23 +02:00
"metadata": {},
"outputs": [
{
"data": {
2020-04-11 08:13:13 +02:00
"image/png": "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
2019-06-04 07:03:23 +02:00
"text/plain": [
2020-04-11 08:13:13 +02:00
"<Figure size 864x576 with 1 Axes>"
2019-06-04 07:03:23 +02:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure() #set up the figures\n",
2020-04-11 08:13:13 +02:00
"fig.set_size_inches(12, 8)\n",
2019-06-04 07:03:23 +02:00
"ax=fig.add_subplot(1,1,1)\n",
2020-04-11 08:13:13 +02:00
"ax.set_facecolor('grey')\n",
2019-06-04 07:03:23 +02:00
"draw_pitch(ax) #overlay our different objects on the pitch\n",
"plt.ylim(-2, 82)\n",
"plt.xlim(-2, 122)\n",
"#plt.plot(x_axis,y_axis,'ro')\n",
"#plt.plot(x,y,'bo')\n",
"#plt.axis('off')\n",
"\n",
"for i in range(len(assist)):\n",
2020-04-11 08:13:13 +02:00
" x = assist.iloc[i]['pass_end_location'][0]\n",
" y = assist.iloc[i]['pass_end_location'][1]\n",
" xe = assist.iloc[i]['location'][0]\n",
" ye = assist.iloc[i]['location'][0]\n",
" ax.scatter(x,y,color=\"red\",edgecolors=\"black\",zorder=10,alpha=1)\n",
" ax.plot([x,xe],[y,ye],zorder=11,alpha=1,color=\"black\")\n",
2019-06-04 07:03:23 +02:00
"\n",
2020-04-11 08:13:13 +02:00
"\n",
"plt.show()"
2019-06-04 07:03:23 +02:00
]
2019-06-03 13:31:10 +02:00
}
],
"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",
2020-04-11 08:13:13 +02:00
"version": "3.6.9"
2019-06-03 13:31:10 +02:00
}
},
"nbformat": 4,
"nbformat_minor": 2
}