Python×スポーツデータ(ラグビー編 キックオフからゲーム展開を考えてみる②)
こんにちは。Jackalistです。
それでは本日もスポーツデータで楽しみましょう。
前回の続きです
前回記事にした通り、今年のラグビー大学対抗戦全27試合から、キックオフの一連の流れとゲーム展開について考察したいと思います。
取得したデータをヒートマップで描画してみる
前回書いた通り、ラグビーのこんな細かいデータが落ちているはずもないので、自分で取得したデータを使います。
座標位置を力技で数字に置き換えることも出来そうですが、自分が今まで学習した範囲で考えて、シンプルにリストに変換してみました。
まず、エリアを分割してみます。
ラグビーフィールドは横半分が約50m、縦が約70mのため、横5マス(10m間隔)×縦14マス(5m間隔)で分割しました。
そこに取得した落下位置と回数を当てはめて、リストを作ってみました。
#リストで作成
list = [
[0, 0, 3, 4, 0],
[0, 0, 0, 3, 1],
[0, 1, 2, 2, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 2, 0],
[0, 0, 0, 1, 0],
[0, 0, 1, 2, 0],
]
#dataframeで表示
KickOff = pd.DataFrame(list)
KickOff
もう少し、それっぽくするため行列名を変更してみます。
#行名追加
KickOff.index=['0_5m','5_10m','10_15m','15_20m','20_25m','25_30m','30_35m','30_35m','25_30m','20_25m','15_20m','10_15m','5_10m','0_5m']
KickOff
#列名変更
KickOff = KickOff.rename(columns={0: '0_10m',1: '10_20m',2: '20_30m',3: '30_40m',4: '40_50m'})
KickOff
ヒートマップにしない方が絶対見やすいだろうなと、、データ取得しながらうすうす感づいてましたが、、これもPythonの勉強なので、このままヒートマップにしてみます。
#ヒートマップ描画
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(KickOff,square=True,cmap='YlOrBr')
plt.title('KickOff Area')
#軸名削除 plt.axis("off")
plt.show()
センターラインから30m-40m(22mライン内側)、サイドラインから15m付近までのキックがほとんどのようです。
まとめ
ヒートマップで描画する目的は達成したので、次回はキックオフ後のプレー内容から、何か面白い点がないか確認してみたいと思います。
よければモチベーション維持になるのでフォロー・スキをいただけると、めちゃくちゃ嬉しいです
それでは本日もありがとうございました。