如何将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
相关产品推荐
相关产品推荐

