2016-11-08 76 views
1

我正在使用一些非常庞大但人口稀少的熊猫数据框。我使用scipy.stats.ttest_ind来比较一些包含许多nans的列。我最近更新到Anaconda 4.2.12,现在当使用scipy.stats.ttest_ind时,我得到了下面例子中看到的运行时错误。为什么scipy.stats.ttest_ind在比较nans时抛出一个新的RuntimeWarning?

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) 

所以函数运行,我可以使用输出就像我更新了唯一的区别之前,现在我得到这样的运行时警告。

如果我把所有的nans放到我的数据框中,那么ttest_ind工作得很好。但我不想这样做,因为我需要维护数据帧的结构。

有谁知道为什么会发生这种情况?除了继续使用函数忽略警告或写入某种被破解的函数外,还有什么可以做的吗?

+1

我发现同样的事情,我缩小它下来这个numpy的例子http://stackoverflow.com/q/40452765/2336654 – piRSquared

+0

有趣。那么你现在只是压制这个错误? –

+1

我通过使用熊猫压制它。 'pd.Series([np.nan,-1])<1'。但在我看来,这需要制定出来。 – piRSquared

回答

2

当我做

np.array([np.nan, -1]) < 0 

enter image description here

不过,我可以把它包装的熊猫系列,让大熊猫剿警告

pd.Series([np.nan, -1]).lt(0).values 

array([False, True], dtype=bool) 
相关问题