Pandas按age分组计算Score均值并统计高于总体均值的数量
实现方案
核心逻辑
- 先计算全量Score的总体均值
- 关联到按age分组的均值结果中做对比标记
- 对标记为高于均值的分组做计数,可按需关联到每个age分组的行中
可直接运行的代码
import pandas as pd # 1. 计算Score列的总体均值 total_mean = data["Score"].mean() # 2. 计算按age分组的Score均值,同时新增对比标记列 age_score_mean = data.groupby("age", as_index=False).agg( group_score_mean=("Score", "mean") ) # 新增列:标记当前分组均值是否高于总体均值 age_score_mean["is_higher_than_total"] = age_score_mean["group_score_mean"] > total_mean # 3. 统计高于总体均值的分组总数量 higher_group_count = age_score_mean["is_higher_than_total"].sum() # (可选)如果需要让每个age行都带总计数,满足按age维度展示的要求,可执行以下代码 age_score_mean["higher_group_total_count"] = higher_group_count # 输出结果 print("各age分组对比结果:") print(age_score_mean) print(f"\n高于总体均值的分组总数:{higher_group_count}")
结果说明
- 输出的
age_score_mean表已经按age维度分组,每行对应一个age的分组均值、是否高于总体均值的标记,可选加入总计数后完全满足按age维度展示统计结果的要求 - 布尔列求和时会自动将
True转为1、False转为0,直接求和即可得到符合要求的分组数量
内容的提问来源于stack exchange,提问作者ordahan1
相关产品推荐
相关产品推荐

