Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个dict值读入scipy函数时出现类型错误_Python_Pandas_Scipy - Fatal编程技术网

Python 将多个dict值读入scipy函数时出现类型错误

Python 将多个dict值读入scipy函数时出现类型错误,python,pandas,scipy,Python,Pandas,Scipy,我有一个带有多个分类特征的数据框架,我正试图对其进行Kruskal-Wallis假设检验。现在,我首先将这些列的每个值收集到一个dict中,从而传递它们的y: #对每个分类变量运行h测试 α=0.05 对于X_分类中的c: 样本={} 对于集合中的s(数据[c].tolist()): 样本[s]=d_测试数据[“SalePrice”][d_测试数据[c]=s].copy() stat,p=scipy.stats.kruskal(*样本) 打印(f“{c}:t-stat:{stat},p:{p}”

我有一个带有多个分类特征的数据框架,我正试图对其进行Kruskal-Wallis假设检验。现在,我首先将这些列的每个值收集到一个dict中,从而传递它们的
y

#对每个分类变量运行h测试
α=0.05
对于X_分类中的c:
样本={}
对于集合中的s(数据[c].tolist()):
样本[s]=d_测试数据[“SalePrice”][d_测试数据[c]=s].copy()
stat,p=scipy.stats.kruskal(*样本)
打印(f“{c}:t-stat:{stat},p:{p}”)
如果p
但是我得到了以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-135-b25ef3aa14d5> in <module>
     19     for s in set(d_test_data[c].tolist()):
     20         samples[s] = d_test_data["SalePrice"][d_test_data[c] == s].copy()
---> 21     stat, p = scipy.stats.kruskal(*samples)
     22     print(f"{c}: t-stat: {stat}, p: {p}", "\n")
     23     if p < alpha:

c:\users\jpaul\appdata\local\programs\python\python37\lib\site-packages\scipy\stats\stats.py in kruskal(*args, **kwargs)
   5838         if arg.size == 0:
   5839             return KruskalResult(np.nan, np.nan)
-> 5840     n = np.asarray(list(map(len, args)))
   5841 
   5842     if 'nan_policy' in kwargs.keys():

TypeError: len() of unsized object
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
19对于集合中的s(数据[c].tolist()):
20个样本[s]=d_测试数据[“SalePrice”][d_测试数据[c]=s]。副本()
--->21统计,p=scipy.stats.kruskal(*样本)
22打印(f“{c}:t-stat:{stat},p:{p},“\n”)
23如果p5840 n=np.asarray(列表(映射(len,args)))
5841
5842如果kwargs.keys()中的“nan_策略”:
TypeError:未调整大小的对象的len()
我该怎么做才能使函数接受我的输入?我尝试使用
to_list()
将它们从
pandas.Series
转换为列表,然后将它们存储在我的dict中。我仍然收到相同的错误

没有a很难确定,但当我看到的签名时,我建议不要通过

stat, p = scipy.stats.kruskal(*samples)
由于
samples
是一个dict,
*samples
将dict的键作为顺序参数传递。那可能不是你想要的。也许你想要:

stat, p = scipy.stats.kruskal(*samples.values())

以前没有看到过该错误,但从它的说法来看,这意味着它无法在args上应用/使用
len
函数。
d_测试数据[“SalePrice”][d_测试数据[c]==s].copy()
看起来怎么样?@isquared KeepitReal
打印(d_测试数据[“SalePrice”][d_测试数据[c]==s].copy()
打印出我预期的,一个包含所有
d_测试数据[“SalePrice”]值的熊猫系列
用于索引的
s
的值。@isquared KeepitReal实际上,这些序列中的一些看起来是空的(我猜
s
的一些值在数据中没有观察到),我想这可能是问题所在