【发布时间】:2017-03-22 05:47:18
【问题描述】:
我正在使用一些非常庞大但人口稀少的 pandas 数据帧。我使用scipy.stats.ttest_ind 来比较其中一些包含许多 nan 的列。我最近更新到 Anaconda 4.2.12,现在在使用 scipy.stats.ttest_ind 时出现运行时错误,如下例所示。
import numpy as np
import scipy
case1 = case2 = np.linspace(np.nan,np.nan,5)
scipy.stats.ttest_ind(case1,case2)
>>>output:
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1748: RuntimeWarning: invalid value encountered in greater
cond1 = (scale > 0) & (x > self.a) & (x < self.b)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1748: RuntimeWarning: invalid value encountered in less
cond1 = (scale > 0) & (x > self.a) & (x < self.b)
C:\Anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py:1749: RuntimeWarning: invalid value encountered in less_equal
cond2 = cond0 & (x <= self.a)
所以函数运行,我可以像更新之前一样使用输出,唯一的区别是现在我收到了这个运行时警告。
如果我在我的 DataFrames 中删除所有 nans,那么 ttest_ind 就可以了。但我不想这样做,因为我需要维护
数据帧。
有人知道为什么会这样吗?除了继续使用忽略警告的函数或编写某种破解函数之外,我还能做些什么吗?
【问题讨论】:
-
我注意到了同样的事情,我将其缩小到这个 numpy 示例 stackoverflow.com/q/40452765/2336654
-
有趣。所以你现在只是压制错误吗?
-
我通过使用 pandas 来抑制它。
pd.Series([np.nan, -1]) < 1。但在我看来,这需要解决。 -
您介意举个例子吗?如果您对此做出回答,我会立即将其标记为已回答。
标签: python-3.x pandas scipy anaconda