You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大学橄榄球星级球员统计:填充球队数据集星级人数字段

高效解决方案:基于Pandas的星级球员统计与数据集合并

核心思路

先对招募数据集按team+year分组聚合,统计各队每年的星级球员数量,再通过左连接将统计结果映射到球队数据集,确保原有球队数据的完整性。


步骤1:预处理与分组统计(针对招募数据集)

首先筛选2013-2020年的数据,然后按球队和年份分组,分别计算4_5Stars(4星+5星)和2_3Star players(2星+3星)的数量:

import pandas as pd
import numpy as np

# 加载数据集
recruit_df = pd.read_csv("招募数据集路径.csv")
team_df = pd.read_csv("球队数据集路径.csv")

# 1. 筛选目标年份数据
recruit_filtered = recruit_df[(recruit_df['year'] >= 2013) & (recruit_df['year'] <= 2020)]

# 2. 统一键字段格式(解决合并返回0行的核心问题)
# 消除team字段的大小写/空格差异
recruit_filtered['team'] = recruit_filtered['team'].str.strip().str.lower()
team_df['team'] = team_df['team'].str.strip().str.lower()
# 确保year字段类型一致(统一为整数)
recruit_filtered['year'] = recruit_filtered['year'].astype(int)
team_df['year'] = team_df['year'].astype(int)

# 3. 分组统计星级球员数量
star_stats = recruit_filtered.groupby(['team', 'year']).agg(
    4_5Stars=('stars', lambda x: np.sum((x == 4) | (x == 5))),
    2_3Star players=('stars', lambda x: np.sum((x == 2) | (x == 3)))
).reset_index()

步骤2:合并到球队数据集

使用左连接(how='left')确保球队数据集中的所有行都被保留,空字段自动填充统计结果:

# 合并数据集,以team和year为连接键
final_team_df = pd.merge(
    team_df,
    star_stats,
    on=['team', 'year'],
    how='left'
)

# 处理无招募数据的情况(空值填充为0)
final_team_df['4_5Stars'] = final_team_df['4_5Stars'].fillna(0).astype(int)
final_team_df['2_3Star players'] = final_team_df['2_3Star players'].fillna(0).astype(int)

关键问题排查(针对合并返回0行的情况)

  • 字段格式不匹配:检查team是否存在大小写、空格差异,year是否有字符串/数字类型不一致的情况(比如招募数据是"2019"字符串,球队数据是2019整数)
  • 年份范围不匹配:确认球队数据集的年份是否在2013-2020范围内,超出范围的年份合并后对应字段会为空
  • 分组键错误:必须同时用team和year作为分组/连接键,同一球队不同年份的招募数据是独立统计单元

后续分析兼容性

处理后的final_team_df直接支持后续的统计分析、线性回归(如statsmodels/sklearn)和可视化(如matplotlib/seaborn),所有字段均为结构化数值类型,键字段统一无冲突。

内容的提问来源于stack exchange,提问作者sjohnp2112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:22:43