NaNのためのプレースホルダとして使用されているデータが欠落一貫パンダで、一貫性が良好です。私は通常、NaNを"missing"として読み取り/変換します。ドキュメントの「欠損データの操作」セクションもご覧ください。
Wesはドキュメントに「NA表現の選択」と書いています。
長年の生産使用の後、少なくとも私の意見では、[NaN]はNumPyとPythonの一般的な状況を考えると最良の決定であることが証明されています。特別な値NaN(Not-A-Number)はNA値としてあらゆる場所で使用され、dtype全体でNA値を検出するために使用できるAPI関数がisnull
ありnotnull
ます。
...
したがって、Pythonの「実用性は純粋さを打つ」アプローチを選択し、整数NA機能をトレードして、浮動小数点数とオブジェクト配列で特別な値を使用してNAを示し、整数配列をNAにする必要があるときに浮動小数点数に浮動小数点に昇格させる導入されました。
注:欠落しているデータを含む整数のSeriesがfloatにアップキャストされる「問題」。
私の意見では、NaN(Noneよりも)を使用する主な理由は、効率の悪いオブジェクトdtypeではなく、numpyのfloat64 dtypeで格納できるためです。NA タイプのプロモーションを参照してください。
# without forcing dtype it changes None to NaN!
s_bad = pd.Series([1, None], dtype=object)
s_good = pd.Series([1, np.nan])
In [13]: s_bad.dtype
Out[13]: dtype('O')
In [14]: s_good.dtype
Out[14]: dtype('float64')
ジェフはこれについて(以下)コメントしている:
np.nan
ベクトル化された操作を可能にします。そのfloat値は、None
定義により、オブジェクトタイプを強制し、基本的にnumpyのすべての効率を無効にします。
したがって、3回高速に繰り返します。object== bad、float == good
それでも、多くの操作はNoneとNaNでも同じように機能する可能性があります(ただし、サポートされていない可能性があります。つまり、予期しない結果になる場合があります)。
In [15]: s_bad.sum()
Out[15]: 1
In [16]: s_good.sum()
Out[16]: 1.0
2番目の質問に答えるには:
を使用pd.isnull
しpd.notnull
て、欠損データ(NaN)をテストする必要があります。
qwerty
は数字ではありません。