两级分组计算均值结果不同,该信任哪一种计算结果?
两种分组均值计算的差异解析
差异核心原因
两种计算方式的权重逻辑完全不同:
- 方式一:
df.groupby('Group')['Time'].mean()
计算的是全局记录均值——把该分组下所有用户的所有Time数据求和,除以该分组的总记录条数,每条数据的权重完全相等。 - 方式二:
df.groupby(['Group', 'UserId'])['Time'].mean().loc[1].mean()
计算的是用户均值的平均——先给每个用户算出其个人的Time均值,再把这些用户均值求和,除以该分组的用户数量,每个用户的权重完全相等,不管这个用户有多少条记录。
举个直观的例子就能明白:
假设Group 1有两个用户:
- 用户A有3条数据:10、20、30,个人均值是20
- 用户B有1条数据:40,个人均值是40
方式一结果:(10+20+30+40)/4 = 25
方式二结果:(20+40)/2 = 30
差异的根源就是用户B的单条数据在方式二中,被赋予了和用户A三条数据相同的权重。
该信任哪个结果?
完全看你的业务目标:
- 如果要统计该分组下所有耗时记录的整体平均水平,选方式一;
- 如果要统计该分组下每个用户的平均耗时的平均值(聚焦用户个体的平均表现),选方式二。
内容的提问来源于stack exchange,提问作者renakre
相关产品推荐
相关产品推荐

