見出し画像

BABIP考察 年度間相関 IP>=100


IP>=100の投手が対象。

コードは以下。

from pybaseball import pitching_stats_bref
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

sns.set(style="whitegrid")

pitching_data_2022 = pitching_stats_bref(2022)
pitching_data_2023 = pitching_stats_bref(2023)

if not pitching_data_2022.empty and not pitching_data_2023.empty:

    selected_pitchers_2022 = pitching_data_2022[pitching_data_2022['IP'] >= 100]
    selected_pitchers_2023 = pitching_data_2023[pitching_data_2023['IP'] >= 100]

    combined_data = pd.merge(selected_pitchers_2022[['Name', 'BAbip']], selected_pitchers_2023[['Name', 'BAbip']], on='Name', how='outer', suffixes=('_2022', '_2023'))

    combined_data = combined_data.dropna(subset=['BAbip_2022', 'BAbip_2023'])

    babip_data_2022 = combined_data['BAbip_2022']
    babip_data_2023 = combined_data['BAbip_2023']
    player_names = combined_data['Name']

    plt.figure(figsize=(10, 6))
    sns.scatterplot(x=babip_data_2022, y=babip_data_2023, alpha=0.7, color='purple')
    plt.xlabel('2022 BABIP')
    plt.ylabel('2023 BABIP')
    plt.title('Scatter Plot of 2022 and 2023 BABIP for Pitchers with 100+ IP')

    correlation_coefficient = babip_data_2022.corr(babip_data_2023)
    print(f"相関係数: {correlation_coefficient}")

    plt.text(plt.xlim()[0] + (plt.xlim()[1] - plt.xlim()[0]) * 0.05, plt.ylim()[1] * 0.95, f"Correlation: {correlation_coefficient:.2f}", color='black')

    plt.plot([plt.xlim()[0], plt.xlim()[1]], [plt.ylim()[0], plt.ylim()[1]], linestyle='--', color='gray')

    for i, player_name in enumerate(player_names):
        plt.annotate(player_name, (babip_data_2022.iloc[i], babip_data_2023.iloc[i]))

    plt.show()

連続する2年のBABIPを対象に50年分くらい取り込もうとしたんですが方法が分かりませんでした。IP>=100の基準が合ってるかも怪しいです。分かったら更新します。


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