如何在Python中通过for循环批量获取两个DataFrame指定列的Wilcoxon检验p值列表
批量对指定列执行Wilcoxon检验并获取p值
完全懂你的痛点——手动逐个处理多列效率太低,用循环批量处理就完美解决这个问题了。我们可以通过定义目标列列表,遍历每个列执行检验,最后把结果整理成直观的格式(比如字典,方便对应列名和p值)。
完整实现代码
from scipy import stats # 第一步:定义需要分析的目标列(直接排除不需要的counter_a) target_columns = ['counter_eh', 'counter_uff', 'counter_mm'] # 第二步:初始化字典存储列名与与对应p值(比单纯列表更直观,能明确每个p值属于哪一列) column_p_values = {} # 第三步:循环遍历每个目标列,执行Wilcoxon检验 for col in target_columns: # 对两个DataFrame的当前列做检验 test_result = stats.wilcoxon(dataframe_presencial_B2[col], dataframe_virtual_B2[col]) # 将列名和对应的p值存入字典 column_p_values[col] = test_result.pvalue # 第四步:输出结果(按需使用,也可以直接用字典做后续分析) for column_name, p_val in column_p_values.items(): print(f"列「{column_name}」的Wilcoxon检验p值: {p_val:.4f}") # 保留4位小数更易读
代码说明
- 目标列定义:通过
target_columns列表精准指定要处理的列,直接排除counter_a,避免无效计算。 - 结果存储:用字典存储结果,相比单纯的列表,能清晰对应每个p值所属的列名,后续分析更方便。
- 循环逻辑:自动遍历所有目标列,重复执行检验逻辑,无需手动复制粘贴代码,减少出错概率。
如果之后需要单纯的p值列表,只需要提取字典的值即可:
p_value_list = list(column_p_values.values()) print(p_value_list)
内容的提问来源于stack exchange,提问作者monsterpython
相关产品推荐
相关产品推荐

