見出し画像

コピペするだけ!Pythonによる野球のデータ分析入門

このnoteは、東大野球部に学生スタッフ兼アナリストとして所属する私、齋藤周(Twitter→@Amapenpen)が、日々の練習内容や気づいたことをメモしておくためのものです。

野球のデータ分析を始めてみたい!という人へ

最近の大谷選手、オールスターで特例の出場をしたり、ホームランダービーに参加したりしていて、本当にすごいですね!

普段はプロ野球とか見ないけれど大谷選手の活躍はチェックしている、という人も身の回りにたくさんいて、影響力のすごさを実感しています。

そんな大谷選手の活躍により、野球×データという分野の注目度も少しづつ高まっているような気がするので、今回はPythonを用いた野球のデータ分析の始め方について解説してみます。

野球のデータ分析に興味がある!とか、これから野球のデータ分析を始めてみたい!という人のお役に立てれば幸いです!

データを用意する

まずは分析に使うデータを用意します。

現在はメジャーリーグのデータを誰でも無料で見ることができるので、今回はそれを利用します。早く日本プロ野球のデータも無償公開されてほしいですね!

ということで、まずはこちらのページにアクセスします。

そうすると以下のようなページが出てきます。

今回はダルビッシュ投手のデータを使うので、Pitchersのところでダルビッシュ投手を指定しました!

画像1

画面をスクロールしてSearchボタンを押すと、ダルビッシュ投手のデータを抽出することができます。

抽出できたら、「Download Data as Comma Separated Values File」というボタンを押し、csvファイルをダウンロードしてみましょう!

画像2

Google Colaboratoryを開く

次にこちらからGoogle Colaboratoryを開いてみましょう。

下の写真のようなページが出ると思うので、まずは左上にある「ファイル」をクリックして、「ノートブックを新規作成」を選択します。(このときGoogleにログインしていない人はログインを求められるはずです。)

次に左側のファイルのマークをクリックします。

すると左側に何か出てくるはずなので、次はそこにある「セッションストレージにアップロード」というボタンを押し、先ほどダウンロードしたcsvファイルをアップロードしてみましょう。

これで分析の準備は完了です。あら簡単!

実際に分析する

新しいファイルを作れたら、まずは以下のコードを1番上の四角にコピペしましょう。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('savant_data.csv')
df

次にsavant_data.csvというところを、先ほどアップロードした自分のcsvファイルの名前に変えて、ShiftキーとEnterキーを同時押ししてみてください。

うまくいけば、こんな感じになるはず!

画像4

それができたら、2つ目の四角に以下のコードをコピペして、再びShift+Enterを押してみましょう。

plt.figure(figsize=(10, 10))
plt.xlim(-60, 60)
plt.ylim(-60, 60)

pitchtypes = ['4-Seam Fastball', '2-Seam Fastball', 'Cutter', 'Sinker', 'Split-Finger', 'Slider', 'Changeup', 'Curveball', 'Knuckle Curve', 
             'Slow Curve', 'Knuckleball', 'Forkball', 'Eephus', 'Screwball']
colors = ['red', 'brown', 'orange', 'aqua', 'olive', 'magenta', 'lime', 'pink', 'purple', 'navy', 'gray', 'silver', 'tan', 'peru']

s = set()
for index, row in df.iterrows():
   x = row['pfx_x'] * (-30.48)
   z = row['pfx_z'] * 30.48
   n = pitchtypes.index(row['pitch_name'])
   if n not in s:
       s.add(n)
       plt.scatter(x, z, color=colors[n], label=row['pitch_name'])
   else:
       plt.scatter(x, z, color=colors[n])

plt.legend(loc="upper left", fontsize=14)
plt.show()

​うまくいけば、こんな感じで球種別の変化量がプロットできます!簡単ですね!

画像5

ダルビッシュ投手の球種がいかに豊富か、ビジュアルでお分かりいただけたかと思います。

というわけで、今回は野球のデータ分析を始めてみたい!という人に向けて、初歩的なデータ分析方法を書いてみました。

自分で調べながら上のコードを色々といじってみると、プログラミングの勉強にもなるはず。ぜひチャレンジしてみてください!

「他にもこんな記事を書いてほしい」みたいなのがあれば、できる限りお答えしようと思うので、Twitterなどで教えてくださいね!

この記事が気に入ったらサポートをしてみませんか?