Error : len() of unsized object - Wilconox signed-rank test

Error : len() of unsized object - Wilconox signed-rank test

我在 运行 数据集上进行 Wilconox 符号秩检验,如下所示:

df = {'Year': ['2019','2018','2017', ....], 'Name':{jon, tim, luca,...}, 'SelfPromotion': [1,0,1,...]} 

脚本如下:

import pandas
from scipy.stats import mannwhitneyu

data1 = df['SelfPromotion']=1
data2 = df['SelfPromotion']=0
print(mannwhitneyu(data1, data2))

这给了我以下错误:

TypeError: len() of unsized object

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-30-e49d9838e5ac> in <module>
      3 data1 = data['SelfPromotion']=1
      4 data2 = data['SelfPromotion']=0
----> 5 print(mannwhitneyu(data11, data22))

~/opt/anaconda3/envs/shityaar/lib/python3.7/site-packages/scipy/stats/stats.py in mannwhitneyu(x, y, use_continuity, alternative)
   6391     x = np.asarray(x)
   6392     y = np.asarray(y)
-> 6393     n1 = len(x)
   6394     n2 = len(y)
   6395     ranked = rankdata(np.concatenate((x, y)))

TypeError: len() of unsized object


我已经通过查看类似的问题尝试了所有可能的解决方案,但不幸的是,没有解决方案可以解决这个问题。我将不胜感激。

mannwhitneyu 需要 array 之类的参数,而您将整数作为参数传递,因此失败。

做这样的事情:

In [26]: data1 = df['SelfPromotion'] == 1                                                                                                                                                                     
In [28]: data2 = df['SelfPromotion'] == 0

In [31]: mannwhitneyu(data1, data2)                                                                                                                                                                         
Out[31]: MannwhitneyuResult(statistic=3.0, pvalue=0.30962837708843105)