Pythonで大谷翔平選手の投球データを分析してみた
こんにちは。データサイエンス課のTKです。
今回はプログラミング言語「Python(パイソン)」を使ってメジャーリーガー大谷翔平投手の投球データを分析し、バッター目線での「現状把握」と「課題検出」をしてみました。
↓↓「Python(パイソン)とは?」についてはこちらも併せてどうぞ↓↓
使用データについて
はじめに、今回のPython分析で使用するデータですが、MLB全30球団の打者・投手の詳細な記録を無料で提供してくれるサイト『Savant』のCSVファイルデータを活用しました。
当データは「トラックマン」と呼ばれるボール弾道などを測定する機器から収集されているとのことです。ピッチャーの球速や打球の角度、リリースポイントや回転数といった様々なデータを利用することができます。(いやはや、便利な世の中ですね)
▼ データサンプル
今回使用したデータの中身が下記となります。主に「stand」 「pitch_name」 「events」のデータカラムを使用しました。
stand:右打者(R)か、左打者(L)か
pitch_name:変化球の種類
events: その投球によって生じた結果(アウトかフライか 等)
【現状把握】データを読み解く
上記データを活用し、まずは現状把握として大谷翔平選手が2022年に投げた変化球の割合を抽出してみましょう。
以下が抽出を実施するはじめのPythonコードの一部です。
import pandas as pd
#カレントディレクトリにある取得したMLB大谷翔平投手のCSVデータを読み込む
df=pd.read_csv("2022pitch_data_ohtani.csv")
#変化球を降順に並べる
breakdown_breaking_ball = df['pitch_name'].value_counts(ascending=False)
print(breakdown_breaking_ball)
上記を実行すると以下のような表データが得られます。左が球種、右が投球回数となります。
上図より、大谷翔平投手が2022年に投げた変化球の数をパッと見ると、「スライダ―」や「ストレート」が多いです。ただ、これだけでは各変化球の割合がどのようなものかのイメージがまだし難いかと思います。
そんなときは、割合を視覚化するために、円グラフにて表現します。
下記コード入力により、円グラフに描画できます。
import matplotlib.pyplot as plt
import japanize_matplotlib
#カラム(変化球の名前)を日本語に変更
breakdown_breaking_ball = breakdown_breaking_ball.rename(index={'Slider': 'スライダー','4-Seam Fastball': 'ストレート','Split-Finger': 'スプリット','Cutter': 'カットボール','Curveball': 'カーブ','Sinker': 'シンカー'})
#円グラフの描画
fig = plt.figure(figsize = (22,22))
axes = fig.add_subplot(2,2,1)
x = breakdown_breaking_ball.index
y = breakdown_breaking_ball
colors = ["red", "yellow", "bisque" ,"lightgreen","skyblue", "silver"] #変化球に対応する色を設定
axes.pie(y,labels = x,autopct = "%1.1f %%", labeldistance=1.1, pctdistance = 0.7, counterclock = False,colors = colors, startangle = 90, textprops = {'size':'15'})
plt.show()
※「matplotlib」「japanize_matplotlib」ライブラリの読み込みを前提とする
これをさらにバッターの立ち位置(左バッターか、右バッターか)で切り分けてみましょう。その結果が下記グラフとなります。
全バッターに対する「スライダ―」の割合が約40%と高い結果となっていましたが、なんと右バッターに至っては約50%ほどが「スライダ―」を投げているということがわかりました。
右バッターは大谷翔平投手の打席に立つ際は「スライダ―は必ず頭に入れておかないといけない」ですね。投球の半分がスライダ―であるということは、高い確率で一球目、二球目がスライダ―が来ることが予測できます。
一球目のスライダーを全く対応できていなかったらどうなるでしょうか?
スライダ―を全く狙っていない構えや空振りが相手バッテリー(特にキャッチャー)にバレてしまうと、間違いなく三球目、四球目でもスライダ―を連投してくることでしょう。
【課題検出】データから導き出す
しかも、ここで大きな課題も見えてきます。
その課題とは「大谷翔平投手のスライダ―の被打率がとても低い」ということです。
これは「大谷のスライダーは何位?データで判明!「MLB魔球ランキング」」というYahooの記事にも紹介されていましたね。
念のため、自分でも大谷翔平が投げた変化球に対するの被打率(右バッター)を求めてみましたのが下記図となります。
スライダ―の被打率は変化球の中で最も低く、しかも0.13という驚異的な数値であることがわかります。以上の分析結果をまとめると、下記のことが課題として見えてきました。
「右バッターへの変化球の割合の50%をスライダ―が占める。」
⇩
「右バッターのスライダ―の被打率(0.13)は非常に低い」
バッター目線で考えると「多くの右バッターが大谷翔平投手のスライダ―で打ち取られている」という課題が検出されました。このスライダーにどう対応していくかが得点獲得へのカギとなるかもしれません。
終わりに
今回はプログラミング言語「Python(パイソン)」を使って、メジャーリーグ大谷翔平投手の投球のグラフ描写や現状把握、課題検出をしてみました。
Pythonを使えばシンプルなコードで分析に着手できます。今回は簡易分析でしたが、シンプルな分析コードの積み重ねが、ビジネスに大きな影響を与える分析へと繋がっていくのだと思います。
当記事で少しでもPythonを使った分析について興味を持っていただけたら幸いです!