scipy.stats导入alexandergovern报ImportError错误问题咨询
导入错误原因
触发ImportError: cannot import name 'alexandergovern'的直接原因是当前Python环境安装的SciPy库版本过低:alexandergovern(Alexander Govern检验)是SciPy 1.7.0版本才正式加入scipy.stats模块的方法,低于该版本的SciPy不存在这个接口,自然无法导入。
除此之外,原代码即使解决导入问题,也存在传参错误:alexandergovern接口要求传入的每个参数都是单组样本的一维观测序列,原代码直接传入二维DataFrame切片,且两个切片列数不匹配,运行时会抛出参数格式错误。
修复步骤
- 升级SciPy库到1.7.0及以上版本,根据自己的环境执行对应命令:
pip环境执行:pip install -U "scipy>=1.7.0"
conda环境执行:conda install "scipy>=1.7.0" - 升级完成后校验版本,执行以下代码,输出版本号≥1.7.0即为升级成功:
import scipy print(scipy.__version__)
- 调整传参逻辑:不要直接传入二维DataFrame,需要把待对比的各组样本提取为一维的Series、数组或列表再传入接口。如果需要对多列数据逐列做检验,写循环逐列提取两组对应数据传入即可。
参考修正代码
import pandas as pd from scipy.stats import alexandergovern df1 = pd.read_csv(r'Data1.tsv', sep='\t', encoding='utf-8') df2 = pd.read_csv(r'Data2.tsv', sep='\t', encoding='utf-8') # 示例:取两个数据集跳过前2行后的第1列作为两组检验样本,可根据实际需求替换为目标列 sample_group1 = df1.iloc[2:, 0] sample_group2 = df2.iloc[2:, 0] # 执行检验 test_result = alexandergovern(sample_group1, sample_group2) print(test_result)
内容的提问来源于stack exchange,提问作者TraPS-VarI
相关产品推荐
相关产品推荐

