Pythonを使った野球データ分析入門!

Pythonと野球データ分析の関連性

Pythonはデータ分析に優れた言語として知られています。野球データ分析でもPythonを使うことで、データの収集から可視化、統計分析、機械学習まで幅広く活用することができます。

このページでは、本格的なセイバーメトリクスや具体的な野球に関するデータの取得の仕方について紹介はせず、取得した打率などのデータを使った簡単な統計処理の仕方を紹介します。

Pythonを使った野球データ収集方法

野球データを収集するには、Webスクレイピングを行うことが一般的です。Pythonには、BeautifulSoupやScrapyといったライブラリがあり、これらを使うことで簡単にWebスクレイピングを行うことができます。

import requests
from bs4 import BeautifulSoup
url = "スクレイピングするサイトのURL"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
table = soup.find("table")
rows = table.find_all("tr")
for row in rows:
    cols = row.find_all("td")
    for col in cols:
        print(col.text, end="\t")
    print()

Pythonによる野球データの前処理

野球データを分析する前に、データの前処理が必要です。Pythonには、Pandasというライブラリがあり、これを使うことでデータの読み込み、整形、欠損値の処理などを簡単に行うことができます。

import pandas as pd
df = pd.read_csv("baseball_data.csv")
df.dropna(inplace=True)
df["打率"] = df["安打数"] / df["打数"]
df["OPS"] = df["出塁数"] + df["塁打数"] / df["打数"]
print(df.head())

Pythonを使った野球データの可視化

Pythonには、MatplotlibやSeabornといったライブラリがあり、これらを使うことでデータの可視化が簡単に行えます。

import matplotlib.pyplot as plt
import seaborn as sns
sns.scatterplot(x="打率", y="OPS", data=df)
plt.show()

Pythonを用いた野球データの統計分析

Pythonには、ScipyやStatsModelsといったライブラリがあり、これらを使うことで統計分析が簡単に行えます。

import scipy.stats as stats
x = df["打率"]
y = df["OPS"]
r, p = stats.pearsonr(x, y)
print("相関係数:", r)
print("p値:", p)

Pythonでの野球データの機械学習

Pythonには、Scikit-learnという機械学習ライブラリがあり、これを使うことで機械学習が簡単に行えます。

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
X = df[["打率"]]
y = df["OPS"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
model = LinearRegression()
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
print("決定係数:", score)

まとめ

Pythonを使うことで、野球データの収集から可視化、統計分析、機械学習まで幅広く活用することができます。野球ファンならぜひPythonを使って、自分だけの野球データ分析をしてみましょう!