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

Pandas练习疑问:分组求均值代码与参考答案的底层差异

两种代码的底层逻辑差异

你的代码:计算职业-性别分组的平均年龄

users.groupby(['occupation', 'gender']).age.mean()
  • 执行逻辑:
    1. 以occupation(职业)和gender(性别)为双重分组键,把数据集拆分为多个「特定职业+特定性别」的子组
    2. 对每个子组的age列计算平均值,得到该组人群的平均年龄
  • 结果含义:每个数值对应某职业下某性别的平均年龄,数值范围通常在常规年龄区间(如20-60)

参考答案:计算各职业内的性别占比(百分比)

# 统计每个职业-性别组合的人数
gender_ocup = users.groupby(['occupation', 'gender']).agg({'gender': 'count'})
# 统计每个职业的总人数
occup_count = users.groupby(['occupation']).agg('count')
# 计算占比并转换为百分比
occup_gender = gender_ocup.div(occup_count, level = "occupation") * 100
# 提取最终结果列
occup_gender.loc[: , 'gender']
  • 执行逻辑:
    1. gender_ocup:按「职业+性别」分组,统计每个组合的用户数量(用gender列计数等价于统计该分组的总行数)
    2. occup_count:仅按「职业」分组,统计每个职业的总用户数(agg('count')会统计所有列的非空行数,这里等同于该职业的总人数)
    3. div(..., level="occupation"):按occupation层级对齐数据,用每个「职业-性别」的人数除以对应职业的总人数,得到占比后乘100转为百分比
    4. 最后提取gender列,得到各职业内不同性别的占比数据
  • 结果含义:每个数值对应某职业下某性别人群的占比,数值范围在0-100之间

结果差异的核心原因

两者解决的是完全不同的统计需求:你的代码对应「职业-性别分组的平均年龄」问题,而参考答案对应「各职业内性别分布占比」问题,属于练习中不同的题目要求,因此输出结果的数值含义、范围完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:55:16