データ前処理プログラミング機械学習

NaN

エヌエーエヌ · Not a Number
22 views

NaN(Not a Number、非数)とは、コンピュータによる数値演算において、定義されていない値や表現不可能な結果を示す特別な値のことです。機械学習やデータ分析においては、データセット内に存在する「欠損値」として頻繁に登場します。NaNが残ったままモデルの学習を行うとエラーの原因となるため、データ前処理段階で適切に処理することが重要です。

NaNとは

NaN(Not a Number)とは、コンピュータの演算において数値として定義できない結果や、測定されなかったデータを表す特別なデータ型(一般に浮動小数点数の値)です。AIやデータ分析の分野では、収集したデータの中に存在する「欠損値」を表す標準的な記号として広く用いられています。

詳しく解説

NaNは、IEEE 754という浮動小数点数の標準規格で定義されています。例えば、ゼロ除算や無限大から無限大を引く演算など、数学的に定義できない計算の結果として生成されます。AIのコンテキストでは、データの未収集、システムの不具合、あるいはアンケートの未回答などによって生じた空白のデータを表現する際に多用されます。Pythonのデータ解析ライブラリである「NumPy」や「Pandas」では、NaNをデータ内の空白を示す目印として扱い、各種統計量の算出や機械学習モデルへの入力前に、これらのNaNを検知して適切に処理する必要があります。NaNを含んだまま機械学習モデルの訓練を実行すると、パラメータがNaNになり、モデル全体が破綻してしまうことがあります。

具体例・使われ方

例えば、あるセンサーデータの時系列データセットにおいて、一時的なネットワーク障害により一部の時間帯の気温データが取得できなかったとします。このとき、測定されなかったデータは「NaN」として記録されます。また、Pythonの「Pandas」や「NumPy」を用いてデータを操作する際、データに欠損が存在することを示すためにNaNが割り当てられます。データ前処理の工程では、これらのNaNに対して「平均値補完」や、行全体の削除といった処理を施し、クリーンなデータセットを作成してモデルに学習させます。

似た用語との違い

NaNと混同されやすい概念に「Null(ヌル)」や「None(ノン)」があります。これらは値が「存在しないこと」や「空であること」を指す一般的なプログラミング言語の概念です。一方、NaNは「浮動小数点数」のデータ型の中に定義された特殊な「数値(非数)」です。NumPyやPandasでは、数値データ内の欠損値を表すためにNaNが好んで使われます。また、値がゼロであることを示す「0」とも明確に異なります。NaNは「値が不明」であることを意味するのに対し、0は「ゼロという確定した値」を意味します。

注意点

データ分析において、NaNは特別な比較ルールを持つため注意が必要です。IEEE 754規格に従い、NaNは自分自身を含めたいかなる値とも等しくないと判定されます。つまり、プログラム上で NaN == NaN という比較を行うと、結果は False になります。そのため、データ内にNaNが存在するかどうかを判定するには、専用の判定関数を使用する必要があります。また、データ前処理において安易にNaNを除外したり不適切な「平均値補完」を行ったりすると、モデルの予測精度にバイアスが生じるリスクがあります。

更新日時: 2026年8月30日 21:01