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

为何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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:55:30