- Pythonを使って打率(AVG)を計算する方法
- 野球データをpandasで扱う基本的な手順
- セイバーメトリクス分析の基礎となる指標計算の考え方
1. 今回作るもの
この記事では Pythonを使って打率(AVG)を計算するプログラム を作成します。
具体的には次の処理を行います。
- 野球データをCSVから読み込む
- 打率(AVG)を計算する
- 打率ランキングを表示する
打率は最も基本的な打撃指標ですが、Pythonで計算できるようになると OPSやwOBAなどの高度な指標分析にも応用できます。
2. 必要な環境
この記事では次の環境を使用します。
- Python 3.x
- pandas
- numpy
- matplotlib(可視化する場合)
インストールしていない場合は次のコマンドで導入できます。
pip install pandas numpy matplotlibpandasは 野球データのような表形式データを扱うための標準ライブラリ として広く使われています。
3. 使用するデータ
打率(AVG)の計算に必要なデータは以下の2つです。
| データ | 説明 |
|---|---|
| AB | 打数 |
| H | 安打 |
打率の計算式は次の通りです。
AVG = H / ABデータ例
今回使用するCSVデータの例です。
| Player | AB | H |
|---|---|---|
| Player A | 500 | 150 |
| Player B | 420 | 110 |
| Player C | 300 | 95 |
CSVファイルの例
Player,AB,H
Player A,500,150
Player B,420,110
Player C,300,954. データ読み込み
まずはCSVデータをPythonに読み込みます。
import pandas as pd
df = pd.read_csv("batting_data.csv")コード説明
このコードでは次の処理を行っています。
pandasライブラリを読み込むread_csv()を使ってCSVファイルを読み込む- データを DataFrame形式 で扱う
DataFrameは Excelの表のような構造 で、野球データ分析では非常によく使われます。
データの確認もしてみましょう。
df.head()| Player | AB | H |
|---|---|---|
| Player A | 500 | 150 |
| Player B | 420 | 110 |
| Player C | 300 | 95 |
5. 指標計算
次に 打率(AVG)を計算 します。
df["AVG"] = df["H"] / df["AB"]コード説明
この1行で 全選手の打率を一括で計算 できます。
pandasでは「列 ÷ 列」のような計算をすると、各行ごとに自動的に処理されます。
つまり「H / AB」が 全ての選手に対して同時に計算 されます。
小数点を整える
野球の打率は通常 小数点3桁 で表示されます。
df["AVG"] = (df["H"] / df["AB"]).round(3)例
| Player | AVG |
|---|---|
| Player A | .300 |
| Player B | .262 |
| Player C | .317 |
6. 結果確認
打率ランキングを表示してみましょう。
df_sorted = df.sort_values("AVG", ascending=False)
print(df_sorted[["Player", "AVG"]])このコードでは
- Player
- AVG
の2列だけを表示し、打率の高い順に並べ替えています。
例
| Player | AVG |
|---|---|
| Player C | .317 |
| Player A | .300 |
| Player B | .262 |
これで 打率ランキングの作成 ができます。
7. 可視化
打率の分布をグラフで確認してみましょう。
import matplotlib.pyplot as plt
plt.hist(df["AVG"], bins=10)
plt.xlabel("Batting Average")
plt.ylabel("Number of Players")
plt.title("Batting Average Distribution")
plt.show()
可視化の意味
このヒストグラムを見ることで
- リーグの打率分布
- 打者レベルのばらつき
- 異常値
などを確認できます。
こうした可視化は リーグ全体の打撃環境を理解する分析 に役立ちます。
8. 分析での使い方
打率は次のような分析で利用されます。
- 打者比較:打率を使うことで ヒットを打つ能力 を比較できます。
- チーム打撃分析:チーム平均打率を算出することで チームの打撃力 を評価できます。
- シーズン分析:打率の推移を確認できます。
などを確認できます。
ただしセイバーメトリクスでは 打率だけでは打者の価値を完全には評価できない とされています。
そのため次の指標がよく使われます。
- 出塁率(OBP)
- 長打率(SLG)
- OPS
9. まとめ
この記事では Pythonで打率(AVG)を計算する方法 を解説しました。
ポイントは次の通りです。
- pandasを使うと野球データを簡単に扱える
- 打率は
H / ABで計算できる - DataFrame計算で全選手の指標を一括処理できる
打率はシンプルな指標ですが、野球データ分析の基本となる重要な指標です。
この方法を応用することで
- OPS
- wOBA
- 打球データ分析
など、より高度なセイバーメトリクス分析もPythonで再現できるようになります。
