Python で NaN 値をチェックする

Manav Narula 2023年1月30日
  1. Python で nan 値を確認するには math.isnan() 関数を使用する
  2. Python の nan 値を確認するには numpy.isnan() 関数を使用する
  3. Python で nan 値を確認するには pandas.isna() 関数を使用する
  4. Python で obj != obj を使用して nan の値をチェックする
Python で NaN 値をチェックする

nan は、与えられた値が正規の値ではないことを示す定数でです -Not a Number です。

nanNULL は別のものであることに注意してください。NULL 値は存在しない何かを示し、空であることを示します。

Python では、さまざまなオブジェクトでこのような値を頻繁に扱います。そのため、このような定数を検出する必要があります。

Python には isnan() 関数があり、これを使って nan 値を調べることができる。この関数は NumPymath の 2つのモジュールで利用できます。pandas モジュールの isna() 関数も nan 値を調べることができます。

Python で nan 値を確認するには math.isnan() 関数を使用する

math ライブラリの isnan() 関数を用いると、float オブジェクトの nan 定数を調べることができます。この関数は、そのような値が見つかるたびに True を返します。例えば、

import math
import numpy as np

b = math.nan
print(np.isnan(b))

出力:

True

定数 math.nannan の値を表していることに注意してください。

Python の nan 値を確認するには numpy.isnan() 関数を使用する

関数 numpy.isnan() は、リストや配列などのさまざまなコレクションの中に nan 値があるかどうかを調べることができます。各要素をチェックし、nan 定数に遭遇した場合は True の配列を返します。例えば、以下のようになります。

import numpy as np

a = np.array([5, 6, np.NaN])

print(np.isnan(a))

出力:

[False False  True]

np.NaN() 定数は nan の値も表します。

Python で nan 値を確認するには pandas.isna() 関数を使用する

pandas モジュールの isna() 関数は NULLnan の値を検出することができます。このような値を検出した場合はすべて True を返します。このような値が DataFrame や Series オブジェクトにあるかどうかも調べることができます。例えば、

import pandas as pd
import numpy as np

ser = pd.Series([5, 6, np.NaN])

print(pd.isna(ser))

出力:

0    False
1    False
2     True
dtype: bool

Python で obj != obj を使用して nan の値をチェックする

nan 以外のオブジェクトに対しては、式 obj == obj は常に True を返します。例えば、

print([] == [])
print("1" == "1")
print([1, 2, 3] == [1, 2, 3])
print(float("nan") == float("nan"))

したがって、obj != obj を用いて nan であるかどうかを調べることができます。戻り値が True なら nan です。

import math

b = math.nan


def isNaN(num):
    return num != num


print(isNaN(b))

出力:

True

ただし、このメソッドは Python のバージョンが低い場合(<=Python 2.5)では失敗する可能性があります。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Math