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

如何在scipy中传入列表作为多变量执行Friedman检验?

解决scipy.stats.friedmanchisquare的样本传入问题

你遇到的问题核心是**friedmanchisquare要求每个样本作为独立的位置参数传入**,而不是把所有样本打包成一个列表/数据框作为单个参数传递。函数报错是因为它只接收到1个参数(你的列表或数据框),而非30个独立样本。

以下是几种正确的实现方式:

方法1:解包你已生成的samples列表

在调用函数时用*操作符把列表中的每个元素拆成独立参数:

import scipy.stats as stats

lst_cols = ['col1', 'col2', 'col3',..., 'col30']
samples = []
for i in lst_cols:
    lst = df[i].tolist()
    samples.append(lst)

# 关键:用*解包samples,每个元素作为独立样本传入
stats.friedmanchisquare(*samples)

方法2:直接从DataFrame解包列数据(更简洁)

无需提前生成列表,直接把DataFrame的每一列作为独立参数传递:

import scipy.stats as stats

# 解包所有列的数值序列
stats.friedmanchisquare(*[df[col] for col in df.columns])

方法3:利用数组转置快速解包

通过DataFrame的数值数组转置,直接获取每一列的样本并解包:

import scipy.stats as stats

# df.values是(n行, 30列)的二维数组,转置后为(30列, n行),*操作符拆分每一行(原列)作为参数
stats.friedmanchisquare(*df.values.T)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:10:40