BABIP考察 年度間相関 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の基準が合ってるかも怪しいです。分かったら更新します。
この記事が気に入ったらサポートをしてみませんか?