2016-11-08 4 views
1

私はかなり巨大であるが、まばらに人口が多いパンダのDataFramesで作業しています。私はscipy.stats.ttest_indを使用して、多くのナンを含むこれらの列の一部を比較します。私は最近、Anaconda 4.2.12にアップデートしました。scipy.stats.ttest_indを使用すると、以下の例に示すランタイムエラーが発生します。なぜ、nansを比較するときにscipy.stats.ttest_indが新しい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) 

ので、機能が実行され、私はちょうど私が唯一の違いを更新する前のような出力を使用することができますが、私はこの実行時の警告を取得し、今あります。

DataFramesにすべてのナンバーをドロップすると、ttest_indはうまく動作します。しかし、私は DataFramesの構造を維持する必要があるので、私はそれをしたくありません。

これはなぜ起こっているのですか?関数を使って警告を無視したり、何らかの機能をハックアップして関数を書いたりする以外に何かできることはありますか?

+1

をSUPRESSさせることができます面白い例に至るまで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) 
関連する問題