使用pybaseball导出赛季击球数据时仅获取部分数据的问题求助
使用pybaseball导出赛季击球数据时仅获取部分数据的问题求助
看起来你在使用pybaseball拉取赛季击球数据时遇到了数据不全的问题,我来帮你分析下可能的原因:
首先先还原你的问题场景和代码:
你想要拉取2022-2024赛季的击球数据,但实际运行代码后生成的CSV只有526行,仅包含每支球队的少量球员。你的代码如下:
# Collect batting stats for the 2022, 2023, and 2024 seasons try: print("Collecting batting stats from 2022 to 2024...") batting_data = batting_stats(2021, 2024, league="all", ind=1 ) # Save the collected data to a CSV file batting_data.to_csv('batting_stats_2021_2024.csv', index=False) print("Batting data collection complete. File saved as 'batting_stats_2022_2024.csv'.") except Exception as e: print(f"An error occurred: {e}")
你提到用的是pybaseball库,生成了CSV但数据量远低于预期。
问题的核心原因
你代码里的ind=1参数是关键!在pybaseball的batting_stats函数中,ind参数用于指定数据范围:
ind=1:仅返回**独立联盟(Independent Leagues)**的球员数据,这类联盟的球员基数本身就很小,所以只有526行结果ind=0(默认值):返回美国职业棒球大联盟(MLB)的球员数据,这才是你需要的全量大联盟球员数据
另外还有个小细节:你的代码注释和打印信息标注的是2022-2024赛季,但实际调用batting_stats时传入的是2021, 2024,如果只需要2022-2024的数据,记得把起始年份改成2022哦。
修正后的代码
把ind=1改成ind=0(或者直接删掉这个参数,因为默认就是0),同时修正年份范围匹配你的需求:
# Collect batting stats for the 2022, 2023, and 2024 seasons try: print("Collecting batting stats from 2022 to 2024...") # 移除ind参数(默认ind=0),或者显式设置ind=0,同时修正年份范围 batting_data = batting_stats(2022, 2024, league="all") # Save the collected data to a CSV file batting_data.to_csv('batting_stats_2022_2024.csv', index=False) print("Batting data collection complete. File saved as 'batting_stats_2022_2024.csv'.") except Exception as e: print(f"An error occurred: {e}")
额外验证点
- 运行修正后的代码后,你可以先打印
batting_data.shape看看行数,大联盟每个赛季的击球数据大概有上千行,2022-2024三个赛季的话应该会有几千行数据 - 如果还是有问题,可以检查
league="all"是否符合你的需求,这个参数会包含美联(AL)和国联(NL)的所有数据,如果你只需要某一个联盟,可以改成league="AL"或league="NL"
备注:内容来源于stack exchange,提问作者Chad Broussard
相关产品推荐
相关产品推荐

