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

Pandas计算二进制数据均值时,参考类别选择逻辑是什么?

问题:Pandas计算二进制数据均值时,为何默认返回1的比例而非0的?

我正在使用泰坦尼克号数据集,其中1代表“存活”,0代表“未存活”。为了计算各舱位等级(Pclass)的人员存活百分比,我运行了以下代码:

pclass_survived = df.groupby('Pclass')['Survived'].mean() * 100

得到结果:

Pclass
1    62.962963
2    47.282609
3    24.236253

我知道Pandas会把二进制值(0和1)当作普通数值处理,不懂它们的业务含义,但疑惑的是:为什么Pandas默认返回的是“存活”(1)的比例,而非“未存活”(0)的比例?比如如果后续标记规则翻转,1代表“未存活”、0代表“存活”,计算结果就会传递错误信息。想知道Pandas计算二进制数据均值时,是如何选择参考类别的?

解答

Pandas这里根本没有“选择参考类别”的逻辑——它只是在做纯粹的数值均值计算。

对于0/1的二进制数据来说,均值的计算逻辑是:(分组内所有值的总和) / (分组内样本总数)。而分组内所有值的总和,本质就是该组中等于1的样本数量(因为0加进去不影响总和)。所以最终的均值,自然就是1在该组中的占比,这完全是数学运算的自然结果,不是Pandas主动“选”了1作为参考。

举个简单例子:假设某舱位组有10个人,其中4个存活(标记为1),6个未存活(标记为0)。总和是4,均值就是4/10=0.4,也就是40%——对应1的占比(存活比例)。如果标记规则翻转,1代表未存活,那这组的总和就是6,均值60%,对应的就是未存活的比例。

说白了,Pandas从始至终都不知道这些0和1代表什么业务含义,它只负责执行数学计算。要避免歧义的话,你可以在代码里明确标注业务逻辑,或者根据需要手动调整结果:比如要计算未存活比例,直接用100 - pclass_survived,或者(1 - df.groupby('Pclass')['Survived'].mean()) * 100。

内容的提问来源于stack exchange,提问作者Partha Pratim Sarma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:21:16