为何Pandas中df.query与直接操作DataFrame的计算结果差异显著?
两段Pandas代码结果差异的原因
这两段代码的核心差异在于计算平均值时分母的选择:
代码1的计算逻辑
(df.query('has_cancer == False')['test_result'] == 'Negative').mean()
- 先筛选出
has_cancer为False的子数据集 - 统计该子数据集中
test_result为Negative的占比,公式等价于:(无癌症且检测阴性的数量) / (无癌症的总数量)
代码2的计算逻辑
(df[df['has_cancer'] == False].test_result == 'Negative').sum() / df.shape[0]
- 同样先筛选出
has_cancer为False的行,统计其中检测阴性的数量 - 但分母是整个DataFrame的总行数,公式等价于:
(无癌症且检测阴性的数量) / (全数据集的总数量)
因为无癌症的总数量必然小于全数据集的总数量,所以代码1的结果会明显大于代码2,这就是两者结果差异悬殊的根本原因。
内容的提问来源于stack exchange,提问作者Moaxad
相关产品推荐
相关产品推荐

