【问题标题】:'<' not supported between instances of 'float' and 'str' Error for Tukey HSD TestTukey HSD 测试的“float”和“str”错误实例之间不支持“<”
【发布时间】:2019-03-08 06:32:35
【问题描述】:

我在运行 Tukey 测试时遇到一个奇怪的错误。我希望有人能够帮助我,因为我尝试了很多。这是我的数据框:

    Name      Score
1   A         2.29
2   B         2.19  

这是我的 Tukey 测试代码:

#TUKEY HSD TEST

tukey = pairwise_tukeyhsd(endog=df['Score'].astype('float'),     
                          groups=df['Name'],                     
                          alpha=0.05)                          

tukey.plot_simultaneous()                                      
plt.vlines(x=49.57,ymin=-0.5,ymax=4.5, color="red")

tukey.summary() 

这是错误:

<ipython-input-12-3e12e78a002f> in <module>()
      2 tukey = pairwise_tukeyhsd(endog=df['Score'].astype('float'),     
      3                           groups=df['Name'],
----> 4                           alpha=0.05)                          
      5 
      6 tukey.plot_simultaneous()

/usr/local/lib/python3.6/dist-packages/statsmodels/stats/multicomp.py in pairwise_tukeyhsd(endog, groups, alpha)
     36     '''
     37 
---> 38     return MultiComparison(endog, groups).tukeyhsd(alpha=alpha)

/usr/local/lib/python3.6/dist-packages/statsmodels/sandbox/stats/multicomp.py in __init__(self, data, groups, group_order)
    794         if group_order is None:
    795             self.groupsunique, self.groupintlab = np.unique(groups,
--> 796                                                             return_inverse=True)
    797         else:
    798             #check if group_order has any names not in groups

/usr/local/lib/python3.6/dist-packages/numpy/lib/arraysetops.py in unique(ar, return_index, return_inverse, return_counts, axis)
    221     ar = np.asanyarray(ar)
    222     if axis is None:
--> 223         return _unique1d(ar, return_index, return_inverse, return_counts)
    224     if not (-ar.ndim <= axis < ar.ndim):
    225         raise ValueError('Invalid axis kwarg specified for unique')

/usr/local/lib/python3.6/dist-packages/numpy/lib/arraysetops.py in _unique1d(ar, return_index, return_inverse, return_counts)
    278 
    279     if optional_indices:
--> 280         perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
    281         aux = ar[perm]
    282     else:

**TypeError: '<' not supported between instances of 'float' and 'str'**

如何解决此错误?提前致谢!

【问题讨论】:

    标签: python-3.x dataframe statsmodels tukey


    【解决方案1】:

    您遇到了问题,因为df['Name'] 包含浮点数和字符串,并且df['Name'] 的类型为pandas.core.series.Series。从回溯中可以看出,这种组合会导致 numpy.unique() 出现错误。您可以通过 2 种方法解决问题。

    tukey = pairwise_tukeyhsd(endog=df['Score'].astype('float'),
                              groups=list(df['Name']),  # list instead of a Series
                              alpha=0.05)
    

    确保df['Name'] 仅包含数字或仅包含字符串。

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2018-03-06
      • 1970-01-01
      • 2019-10-24
      • 2019-11-12
      • 2018-05-19
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多