【发布时间】:2019-02-26 04:20:23
【问题描述】:
运行我的 Tukey 测试时,它给了我这个错误:
无法根据 dtype('O') 将数组数据转换为 dtype('float64') 遵守“安全”规则
我的数据框头输出:
Group Score
3 A 1.91
4 B 1.7
5 C 1.69
6 D 1.68
7 E 1.49
我的 Tukey 测试代码:
from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.stats.multicomp import MultiComparison
mc = MultiComparison(df['Score'], df['Group'])
result = mc.tukeyhsd()
print(result)
print(mc.groupsunique)
> TypeError Traceback (most recent call
> last) <ipython-input-10-705a07612b72> in <module>()
> 1 mc = MultiComparison(df['Score'], df['Group'])
> ----> 2 result = mc.tukeyhsd()
> 3
> 4 print(result)
> 5 print(mc.groupsunique)
>
> /usr/local/lib/python3.6/dist-packages/statsmodels/sandbox/stats/multicomp.py
> in tukeyhsd(self, alpha)
> 964 self.groupstats = GroupsStats(
> 965 np.column_stack([self.data, self.groupintlab]),
> --> 966 useranks=False)
> 967
> 968 gmeans = self.groupstats.groupmean
>
> /usr/local/lib/python3.6/dist-packages/statsmodels/sandbox/stats/multicomp.py
> in __init__(self, x, useranks, uni, intlab)
> 535
> 536 #temporary until separated and made all lazy
> --> 537 self.runbasic(useranks=useranks)
> 538
> 539
>
> /usr/local/lib/python3.6/dist-packages/statsmodels/sandbox/stats/multicomp.py
> in runbasic(self, useranks)
> 569 else:
> 570 self.xx = x[:,0]
> --> 571 self.groupsum = groupranksum = np.bincount(self.intlab, weights=self.xx)
> 572 #print('groupranksum', groupranksum, groupranksum.shape, self.groupnobs.shape
> 573 # start at 1 for stats.rankdata :
>
> TypeError: Cannot cast array data from dtype('O') to dtype('float64')
> according to the rule 'safe'
有人知道这是什么意思吗?
【问题讨论】:
-
Score有空值吗? -
顺便说一句,我从标题中编辑了 Tukey 测试,希望它能给你更多的关注这个问题。这个问题不仅限于那个问题。
-
@roganjosh 没有空值。还能是什么?我尝试了很长时间来解决这个问题,但没有任何效果。
-
python 回溯信息丰富。您需要至少显示最后几行以查看异常发生的位置。您的 score 或 groups 列是当前 tukeyhsd 代码无法处理的对象数组。
-
@Josef。是的,我很抱歉没有添加该信息。我刚刚编辑了主帖,现在应该可以看到了。你能重新评估一下吗?此外,我所有的 df 类型都是对象。我不确定这是否是问题的一部分?
标签: python python-3.x statistics statsmodels