Pythonで打率(AVG)を計算する方法|野球データ分析入門

この記事でわかること Key Points
  • Pythonを使って打率(AVG)を計算する方法
  • 野球データをpandasで扱う基本的な手順
  • セイバーメトリクス分析の基礎となる指標計算の考え方

1. 今回作るもの

この記事では Pythonを使って打率(AVG)を計算するプログラム を作成します。

具体的には次の処理を行います。

  • 野球データをCSVから読み込む
  • 打率(AVG)を計算する
  • 打率ランキングを表示する

打率は最も基本的な打撃指標ですが、Pythonで計算できるようになると OPSやwOBAなどの高度な指標分析にも応用できます。

2. 必要な環境

この記事では次の環境を使用します。

  • Python 3.x
  • pandas
  • numpy
  • matplotlib(可視化する場合)

インストールしていない場合は次のコマンドで導入できます。

pip install pandas numpy matplotlib

pandasは 野球データのような表形式データを扱うための標準ライブラリ として広く使われています。

3. 使用するデータ

打率(AVG)の計算に必要なデータは以下の2つです。

データ説明
AB打数
H安打

打率の計算式は次の通りです。

AVG = H / AB

データ例

今回使用するCSVデータの例です。

PlayerABH
Player A500150
Player B420110
Player C30095

CSVファイルの例

Player,AB,H
Player A,500,150
Player B,420,110
Player C,300,95

4. データ読み込み

まずはCSVデータをPythonに読み込みます。

import pandas as pd

df = pd.read_csv("batting_data.csv")

コード説明

このコードでは次の処理を行っています。

  • pandas ライブラリを読み込む
  • read_csv() を使ってCSVファイルを読み込む
  • データを DataFrame形式 で扱う

DataFrameは Excelの表のような構造 で、野球データ分析では非常によく使われます。

データの確認もしてみましょう。

df.head()
PlayerABH
Player A500150
Player B420110
Player C30095

5. 指標計算

次に 打率(AVG)を計算 します。

df["AVG"] = df["H"] / df["AB"]

コード説明

この1行で 全選手の打率を一括で計算 できます。

pandasでは「列 ÷ 列」のような計算をすると、各行ごとに自動的に処理されます。

つまり「H / AB」が 全ての選手に対して同時に計算 されます。

小数点を整える

野球の打率は通常 小数点3桁 で表示されます。

df["AVG"] = (df["H"] / df["AB"]).round(3)

PlayerAVG
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列だけを表示し、打率の高い順に並べ替えています。

PlayerAVG
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で再現できるようになります。