サッカースプリントゾーンの考察

In [1]:
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from IPython.display import display

# データを読み込んでデータフレームに入れる
path = 'GPS_data.csv'
data = pd.read_csv(path, usecols=[0,1])

# 使用するデータを一回見てみましょう
# 0.002分は約0.15秒なので,1秒当たり6~7値のデータがあります.
# (6~7hz)
display(data.head())
display(data.describe())
Minutes Speed (km/h)
0 0.002 3.240
1 0.003 3.228
2 0.004 3.216
3 0.005 3.204
4 0.006 3.072
Minutes Speed (km/h)
count 99736.000000 99736.000000
mean 49.869500 5.361892
std 28.791448 4.663704
min 0.002000 0.000000
25% 24.935750 2.484000
50% 49.869500 4.812000
75% 74.803250 6.564000
max 99.737000 32.688000
In [2]:
# かっこよく表示したいので
plt.style.use('ggplot')

# ハーフタイムを除けば大体90分です。
# 最初の数分が取れてないかもしれません..
sns.lineplot(data['Minutes'],data['Speed (km/h)'])
plt.show()
In [3]:
# 日本語でプロットのラベルを作るるためのコード
matplotlib.font_manager._rebuild()
font = {'family': 'IPAexGothic'}
matplotlib.rc('font', **font)

# 速度データの取得
speeds = data['Speed (km/h)']

# 選手が止まっているときの速度は除きます
speeds_nozero = speeds[speeds>0]

# ヒストグラムのプロット
sns.distplot(speeds_nozero, bins=1500, kde=False)
plt.xlabel('速度(km/h)')
plt.ylabel('度数')
plt.ylim([0,500])
plt.title('速度のヒストグラム')

# Zone1
plt.plot([4, 4.01], [0, 15], linewidth=5, c=(0,0,0,0.3))
# Zone2
plt.plot([7.3, 7.31], [0, 15], linewidth=5, c=(0,0,0,0.3))
# Zone3
plt.plot([10.4, 10.41], [0, 15], linewidth=5, c=(0,0,0,0.3))
# Zone4
plt.plot([13.5, 13.51], [0, 15], linewidth=5, c=(0,0,0,0.3))

# スプリント
plt.plot([24, 24.01], [0, 500], linewidth=5, c=(0,0,1,0.2))
plt.plot([30, 30.01], [0, 500], linewidth=145, c=(0,0,1,0.1))

# テキストボックス
txt = r'スプリント'+'\n'+'24km/h以上'
props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
plt.text(25, 400, txt, fontsize=14, verticalalignment='top', bbox=props)
plt.show()
plt.savefig('速度のヒストグラム')
<matplotlib.figure.Figure at 0x27f54af63c8>