[NumPy] 11. NumPy配列におけるNaNの様々な処理方法

NumPy

はじめに

本記事では、NumPy配列におけるNaN(Not a Number)値の取り扱いについて詳しく解説します。データ分析や科学計算においてよく遭遇する欠損値の検出方法、NaNを含む配列の演算処理、欠損値の置換や削除のテクニックなど、実践的な手法を豊富なコード例とともに紹介していきます。

解説

データの生成

配列の一部をNaNにする

2番目の要素をnp.nanとすることでNaNにできます。

NaNであるかの判定

np.isnan(x)NaNの部分がTrueとなった配列が返ります。

NaNであるインデックスを取得

np.wherenp.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

コメント