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

如何使用pandas计算分组数据的显著性差异?

验证分组差异显著性的pandas实现方案

pandas本身没有内置的显著性检验计算方法,核心是用pandas的crosstab方法完成数据规整,生成后续做显著性检验需要的列联表,再结合统计库的方法计算p值即可。你要验证C组和A、B组的数值1占比差异显著性,本质是检验分组分类变量和二分类结果(是否为1)的相关性,具体实现步骤如下:

  • 第一步:构造/读取数据集
import pandas as pd
import scipy.stats as stats

# 示例数据构造,你可以替换为自己读取的DataFrame数据源
df = pd.DataFrame({
    "Letters": ["A","A","A","B","B","B","C","C","C"],
    "Numbers": [1,2,3,1,2,3,1,1,1]
})
  • 第二步:用pd.crosstab生成检验用列联表
    先把分组合并为C组/非C组(A+B)两类,结果合并为是1/不是1两类,再生成二维列联表:
# 新增标识列用于分组统计
df["分组类型"] = df["Letters"].apply(lambda x: "C组" if x == "C" else "非C组")
df["是否为数值1"] = df["Numbers"] == 1

# 生成列联表
cont_table = pd.crosstab(df["分组类型"], df["是否为数值1"])

生成的列联表如下:

是否为数值1FalseTrue
非C组42
C组03
  • 第三步:基于列联表计算显著性
    因为你的样本量很小,推荐用Fisher精确检验,大样本场景可以用卡方检验:
# Fisher精确检验,适配小样本场景
odds_ratio, p_value = stats.fisher_exact(cont_table)
print(f"显著性检验p值为:{p_value:.4f}")

本次计算得到p值约为0.0476,小于常用的显著性阈值0.05,可证明C的结果分布与A、B存在显著差异。
如果是大样本场景,可以替换为卡方检验:

chi2, p_value, dof, expected = stats.chi2_contingency(cont_table)
print(f"卡方检验p值为:{p_value:.4f}")

内容的提问来源于stack exchange,提问作者Giga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:48:03