2016-11-08 23 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) 
相關問題