在 Python 中檢查 NaN 值

Manav Narula 2023年1月30日
  1. 使用 math.isnan() 函式檢查 Python 中的 nan
  2. 使用 numpy.isnan() 函式來檢查 Python 中的 nan
  3. 使用 pandas.isna() 函式檢查 Python 中的 nan
  4. 使用 obj != obj 檢查 Python 中的 nan
在 Python 中檢查 NaN 值

nan 是一個常數,表示給定的值不合法-Not a Number

注意,nanNULL 是兩個不同的東西。NULL 值表示不存在的東西,是空的。

在 Python 中,我們經常在不同的物件中處理這樣的值。所以有必要檢測這樣的常量。

在 Python 中,我們有 isnan() 函式,它可以檢測 nan 值。而這個函式在兩個模組中可用-NumPymathpandas 模組中的 isna() 函式也可以檢查 nan 值。

使用 math.isnan() 函式檢查 Python 中的 nan

math 庫中的 isnan() 函式可用於檢查浮點物件中的 nan 常數。它對遇到的每一個這樣的值都返回 True。比如說:

import math
import numpy as np

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

輸出:

True

請注意,math.nan 常量代表一個 nan 值。

使用 numpy.isnan() 函式來檢查 Python 中的 nan

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 值。

使用 pandas.isna() 函式檢查 Python 中的 nan

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

使用 obj != obj 檢查 Python 中的 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