81 KiB
81 KiB
import json
import os
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import StatsbombPitch as sb
#import squarify
from functools import reduce
path = "/home/kirugulige/Documents/Football-Analytics/open-data-master/data/events/"
Xg_req = pd.DataFrame(data=None)
filename = '69275.json'
with open("%s" % path + filename,encoding="utf8") as data_file:
data = json.load(data_file)
df = pd.DataFrame(data=None)
df = pd.json_normalize(data, sep = "_")
#df = df[(df['type_name'] == "Shot")]
#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']]
#print(df.shape)
Xg_req = Xg_req.append(df,ignore_index=True,sort=False)
#df.drop(df.index, inplace=True)
print("done")
df = Xg_req
done
through_ball = df.query('pass_through_ball == True')
assist = df.query('pass_goal_assist == True')
print(len(assist.index))
4
through_ball= through_ball[["id", "period", "timestamp", "location", "pass_end_location", "pass_recipient_name"]]
through_ball.head()
id | period | timestamp | location | pass_end_location | pass_recipient_name | |
---|---|---|---|---|---|---|
280 | 1f6ef40d-cd32-4566-add6-f1558833d0c1 | 1 | 00:05:57.827 | [81.5, 37.8] | [103.1, 33.4] | Pablo Daniel Osvaldo |
604 | 4040c0ab-d934-469b-84f5-c595213b851b | 1 | 00:13:56.420 | [48.2, 57.4] | [85.5, 38.3] | Pablo Daniel Osvaldo |
794 | 7dbe04a8-41c5-4ea8-bfa1-892fe23a72e6 | 1 | 00:18:30.829 | [66.8, 46.7] | [93.5, 38.5] | Pedro Eliezer Rodríguez Ledesma |
840 | 3a7da0a1-e9c4-40a1-9702-e99c5ace03c2 | 1 | 00:20:46.623 | [66.0, 56.5] | [105.5, 34.7] | José María Callejón Bueno |
962 | 2bc53e64-664a-4f83-9d0c-6b046d91a7d9 | 1 | 00:23:55.494 | [81.5, 28.1] | [94.2, 31.7] | David Villa Sánchez |
assist= assist[["id", "period", "timestamp", "location", "pass_end_location", "pass_recipient_name"]]
assist.head()
id | period | timestamp | location | pass_end_location | pass_recipient_name | |
---|---|---|---|---|---|---|
794 | 7dbe04a8-41c5-4ea8-bfa1-892fe23a72e6 | 1 | 00:18:30.829 | [66.8, 46.7] | [93.5, 38.5] | Pedro Eliezer Rodríguez Ledesma |
2436 | 9810ac65-15b8-4736-a09e-08f7faaff01d | 2 | 00:17:04.830 | [52.7, 63.4] | [84.2, 57.1] | Pablo Daniel Osvaldo |
2935 | 7269b3a6-43d7-45bc-8823-bcfd1542ad45 | 2 | 00:30:03.492 | [64.4, 33.8] | [79.4, 25.5] | David Villa Sánchez |
3344 | dc1b453d-6e7e-49b1-ad88-79525e8223f9 | 2 | 00:38:47.689 | [70.1, 30.6] | [98.0, 23.3] | David Villa Sánchez |
sb.sb_pitch("#195905","#faf0e6","horizontal","full")
plt.gca().invert_yaxis() #overlay our different objects on the pitch
#plt.ylim(-2, 82)
#plt.xlim(-2, 122)
#plt.plot(x_axis,y_axis,'ro')
#plt.plot(x,y,'bo')
plt.axis('off')
for i in range(len(through_ball)):
x = through_ball.iloc[i]['pass_end_location'][0]
y = through_ball.iloc[i]['pass_end_location'][1]
xe = through_ball.iloc[i]['location'][0]
ye = through_ball.iloc[i]['location'][0]
plt.scatter(x,y,color="red",edgecolors="black",zorder=10,alpha=1)
plt.plot([x,xe],[y,ye],zorder=11,alpha=1,color="black")
"""
for i in range(len(assist)):
# annotate draw an arrow from a current position to pass_end_location
ax.annotate("", xy = (assist.iloc[i]['pass_end_location'][0], assist.iloc[i]['pass_end_location'][1]), xycoords = 'data',
xytext = (assist.iloc[i]['location'][0], assist.iloc[i]['location'][1]), textcoords = 'data',
arrowprops=dict(arrowstyle="->",connectionstyle="arc3", color = "red"),)
"""
plt.show()
sb.sb_pitch("#195905","#faf0e6","horizontal","full")
plt.gca().invert_yaxis() #overlay our different objects on the pitch
#plt.ylim(-2, 82)
#plt.xlim(-2, 122)
#plt.plot(x_axis,y_axis,'ro')
#plt.plot(x,y,'bo')
plt.gca().invert_yaxis()
for i in range(len(assist)):
x = assist.iloc[i]['pass_end_location'][0]
y = assist.iloc[i]['pass_end_location'][1]
xe = assist.iloc[i]['location'][0]
ye = assist.iloc[i]['location'][0]
plt.scatter(x,y,color="red",edgecolors="black",zorder=10,alpha=1)
plt.plot([x,xe],[y,ye],zorder=11,alpha=1,color="black")
plt.show()