0

DataFrameNaN で満たされた列全体でスライスをプロットする際に問題が発生しました。

どうして:

pandas.DataFrame(
    dict(
        A=pandas.Series([np.NaN]*32),
        B=pd.Series(range(-1,32))
    )
).plot()

とは異なり:

#Ugly fix
pandas.DataFrame(
    dict(
        A=pandas.Series( [0] + [numpy.NaN]*32),
        B=pd.Series(range(-1,32))
    )
).plot()

列がゼロで埋められているかのように 0-line をプロットします。最初のコードは次のようには機能しません。

pylab.plot(
    range(0,33),
    range(-1,32),
    range(0,32),
    [numpy.NaN]*32
)

また、NaN で満たされた Series だけをプロットしても問題なく動作します。

pandas.Series([numpy.NaN]*32).plot()

私は何が欠けていますか?すべての NaN で列をプロットする正しい方法はありますか、それともバグですか?

4

1 に答える 1

1

これは のバグのようpandasです。ソースコードを見るとpandas.tools.plotting、行 554:556 :

empty = df[col].count() == 0                                       
# is this right?                                                   
values = df[col].values if not empty else np.zeros(len(df))        

列に NaN のみが含まれる場合、empty は True で、値は np.zeros() に設定されます。

注: 「これは正しいですか?」は追加しませんでした。コメント: ソースコードにあります! (パンダ v.0.8.1)。

私はそれについてバグを提起しました: https://github.com/pydata/pandas/issues/1696

于 2012-07-27T16:18:18.887 に答える