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

如何将researchpy独立t检验结果保存为DataFrame以便复用?

把researchpy的独立t检验结果转为DataFrame并汇总排序

一、直接利用researchpy的返回值(推荐)

researchpy的ttest()函数执行独立样本t检验时,会直接返回两个DataFrame:第一个是分组统计汇总,第二个就是你展示的检验结果表,不需要手动解析文本。

示例代码:

import pandas as pd
import researchpy as rp
import numpy as np

# 模拟你的数据集(替换成实际数据)
data = pd.DataFrame({
    "group": ["No Breakdown"]*500 + ["Breakdown"]*500,
    "feature1": np.random.normal(10, 2, 1000),
    "feature2": np.random.normal(20, 3, 1000),
    "feature3": np.random.normal(5, 1, 1000)
})

# 对单个特征执行t检验
_, single_test_results = rp.ttest(
    data[data["group"] == "No Breakdown"]["feature1"],
    data[data["group"] == "Breakdown"]["feature1"],
    equal_variances=True  # 根据数据情况设置是否方差齐
)

# single_test_results就是检验结果的DataFrame
print(single_test_results)

二、手动解析文本输出(如果只有复制的文本)

如果你只有终端复制的文本结果,可以手动解析成DataFrame:

# 复制的检验结果文本(去掉多余的括号和格式符号)
test_text = [
    "Difference (No Breakdown - Breakdown) =        1.5992",
    "Degrees of freedom =   118229.0000",
    "t =        0.8508",
    "Two side test p value =        0.3949",
    "Difference < 0 p value =        0.8026",
    "Difference > 0 p value =        0.1974",
    "Cohen's d =        0.0934",
    "Hedge's g =        0.0934",
    "Glass's delta =        0.0934",
    "Pearson's r =        0.0025"
]

# 解析为字典
results_dict = {}
for line in test_text:
    key, val = line.split(" = ")
    results_dict[key.strip()] = float(val.strip())

# 转为DataFrame
single_df = pd.DataFrame.from_dict(results_dict, orient="index", columns=["数值"])
print(single_df)

三、汇总多个特征的检验结果

如果要对多个特征批量执行t检验并汇总,用循环收集结果后合并:

# 要检验的特征列表
features = ["feature1", "feature2", "feature3"]
summary_frames = []

for feat in features:
    _, test_res = rp.ttest(
        data[data["group"] == "No Breakdown"][feat],
        data[data["group"] == "Breakdown"][feat]
    )
    # 添加特征名作为标识
    test_res["特征名"] = feat
    # 转置结果,让统计量作为行,特征作为列
    summary_frames.append(test_res.set_index("特征名").T)

# 合并所有结果
combined_results = pd.concat(summary_frames).reset_index().rename(columns={"index": "统计量"})
print(combined_results)

四、按特征排序

用sort_values()方法对汇总后的DataFrame排序:

# 按特征名升序排序
sorted_by_feature = combined_results.sort_values(by="特征名")

# 按双侧p值升序排序(优先看显著结果)
sorted_by_pvalue = combined_results.sort_values(by="Two side test p value")

五、保存结果到文件

可以把汇总后的DataFrame保存为CSV或Excel文件:

# 保存为CSV
combined_results.to_csv("t检验汇总结果.csv", index=False)

# 保存为Excel(需要安装openpyxl库)
combined_results.to_excel("t检验汇总结果.xlsx", index=False, engine="openpyxl")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:39:38