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

如何在DataFrame中实现循环批量执行独立样本t检验并生成结果表

批量独立样本t检验函数实现

我有一个大型DataFrame,想要用ttest_ind执行独立样本t检验,对比两组(比如对照组A和治疗组B)定量变量的均值差异(比如血氧水平)。因为要分析的定量变量很多,我需要写一个具备以下功能的函数:

  • 按分组列拆分数据
  • 对每个指定的定量变量执行t检验
  • 将所有检验结果整理成一个DataFrame

我已经有单变量分析的代码,但不知道怎么加循环实现批量处理,希望能写一个可以传入DataFrame的通用函数,避免重复操作。现有单变量代码如下:

#Sat Ox 3
#提取分组数据
grupoA= df[df['Grupo ']=='A']['Sat de oxigeno 3']
grupoB= df[df['Grupo ']=='B']['Sat de oxigeno 3']

#执行t检验
x18=ttest_ind(grupoA, grupoB)

#将结果存入DataFrame
tablaT = pd.DataFrame((x7,x8,x9, x10, x11,x12,x13,x14,x15,x16,x17,x18),
                      columns=['T-test', 'p-value'],
                      index=['Frecuencia1', 'Frecuencia2', 'Frecuencia3', 
                             'PresionSistolica1', 'PresionSistolica2', 'PresionSistolica3', 
                             'PresionDiastolica1', 'PresionDiastolica2', 'PresionDiastolica3', 
                             'SaturacionOx1', 'SaturacionOx2', 'SaturacionOx3'])
tablaT 

通用批量处理函数

下面是一个可复用的函数,能自动完成分组、循环检验和结果整理:

import pandas as pd
from scipy.stats import ttest_ind

def batch_ttest_ind(df, group_col, target_vars):
    results = []
    for var in target_vars:
        # 提取两组数据并剔除缺失值
        group_a = df[df[group_col] == 'A'][var].dropna()
        group_b = df[df[group_col] == 'B'][var].dropna()
        # 执行t检验,方差不齐时可设equal_var=False
        t_stat, p_val = ttest_ind(group_a, group_b, equal_var=True)
        # 收集结果并保留4位小数
        results.append({'变量名': var, 'T值': round(t_stat, 4), 'p值': round(p_val, 4)})
    # 转换为结构化DataFrame
    return pd.DataFrame(results).set_index('变量名')

使用示例

直接传入你的DataFrame、分组列名和要检验的变量列表即可:

# 定义需要分析的定量变量列表
target_vars = [
    'Frecuencia1', 'Frecuencia2', 'Frecuencia3',
    'PresionSistolica1', 'PresionSistolica2', 'PresionSistolica3',
    'PresionDiastolica1', 'PresionDiastolica2', 'PresionDiastolica3',
    'SaturacionOx1', 'SaturacionOx2', 'SaturacionOx3'
]

# 生成结果表
tablaT = batch_ttest_ind(df, 'Grupo ', target_vars)
# 查看结果
display(tablaT)

关键细节说明

  • 缺失值处理:用dropna()自动过滤每组中的缺失数据,避免检验报错
  • 方差适配:如果两组数据方差不齐,将equal_var设为False即可执行Welch's t检验
  • 结果可读性:结果保留4位小数,以变量名为索引,便于查看和后续分析
  • 扩展性:只需修改target_vars列表就能增减分析变量,无需改动函数逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:20:44