はじめに
本記事では、NumPy配列におけるNaN(Not a Number)値の取り扱いについて詳しく解説します。データ分析や科学計算においてよく遭遇する欠損値の検出方法、NaNを含む配列の演算処理、欠損値の置換や削除のテクニックなど、実践的な手法を豊富なコード例とともに紹介していきます。
解説
データの生成
配列の一部をNaNにする
2番目の要素をnp.nan
とすることでNaN
にできます。
NaNであるかの判定
np.isnan(x)
でNaN
の部分がTrue
となった配列が返ります。
NaNであるインデックスを取得
np.where
とnp.isnan(x)
を組み合わせることでNaN
である部分のインデックスが得られます。結果はtuple
で得られるので、[0]とすることでnp.array
で結果が得られます。
NaNではないインデックスを取得
~np.isnan(x)
のように否定演算子をつけることでNaN
ではないインデックスを得ることができます。
配列中のNaNを除去
上記のNaN
ではないインデックスを配列に適用することでNaN
を除去できます。
配列中のNaNを他の値に置換
np.nan_to_num()関数は、第一引数にNaNを含む配列を指定し、第2引数でNaNを置換する値を指定します。
x==np.nan
のようにしても置換することはできません。
NaNの数をカウント
np.count_nonzero()関数はTrueの個数を計算するため、np.isnanと組み合わせることで配列内のNaNの数を簡単に把握できます。
NaNを除外して計算
合計
NaNを含む配列の合計を計算するにはnp.nansum()を用います。通常の合計計算では、NaNが1つでも含まれていると計算結果全体がNaNになってしまいます。
平均
中央値
標準偏差
累積和
最大値のインデックス
最小値のインデックス
最小値&最大値
パーセンタイル
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
DataFrameにおけるNan,Noneについて
pandasのDataFrameにおけるNaNとNoneの扱いについては、下記記事で詳しく説明しています。

[pandas] 7. DatarFrameの欠損値(NaN, None)について
DataFrameにおける欠損値(NaN, None)の性質について説明する。
参考
numpy.isnan — NumPy v2.3 Manual
numpy.nansum — NumPy v2.3 Manual
Constants — NumPy v2.3 Manual
コメント