迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何检查 NaN 是否存在于 Pandas DataFrame 中

作者:迹忆客 最近更新:2024/04/23 浏览次数:

NaN 代表不是数字 - Not a Number,表示 Pandas 中缺少的值。要在 Python Pandas 中检测 NaN 值,我们可以对 DataFrame 对象使用 isnull()isna() 方法。


pandas.DataFrame.isnull()方法

我们可以使用 pandas.DataFrame.isnull() 来检查 DataFrame 中的 NaN 值。如果要检查的 DataFrame 中相应的元素具有 NaN 值,则该方法返回布尔值的 DataFrame 元素为 True,否则为 False

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isnull()

print(df_check)

输出:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False

在这里,输出中的 False 值代表 DataFrame df 中的元素不是 NaNTrue 值代表 DataFrame df 中的 NaN 元素。

如果我们想知道 DataFrame 中是否有 NaN 值,可以使用 isnull().values.any() 方法,如果 DataFrame 中有任何 NaN 值则返回 True;如果 DataFrame 中甚至没有单个 NaN 元素,则为 False。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().values.any()
print(check_for_nan)

输出:

True

df.isnull().values 返回 DataFrame 的 NumPy 表示形式。如果任何元素被评估为 True,那么 numpy.any() 返回 True。

因此,如果 DataFrame 中存在任何 NaN,则 df.isnull().values.any()True

df.isnull().any().any() 检查是否存在任何 NaN

df.any() 返回任何元素是否为 True。当 df 是一个 DataFrame 时,它返回一个 pd.Series;而当 dfpd.Series 时,它返回一个布尔值。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().any().any()

print(check_for_nan)

输出:

True

如果 DataFrame 中的任何元素为 NaN,则上例中的 isnull() 之后的两个级联的 any() 方法将返回 True

isnull().sum().sum() 检查是否存在 NaN

如果我们想计算特定 DataFrame 中 NaN 值的总数,那么 df.isnull().sum().sum() 方法是正确的解决方案。该方法在整个 DataFrame 中返回 NaN 值的总数。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

total_nan_values = df.isnull().sum().sum()
print(total_nan_values)

输出:

4

如果结果大于 0,则表示 DataFrame 中存在 NaN


pandas.DataFrame.isna() 方法

pandas.DataFrame.isna() 方法类似于
pandas.DataFrame.isnull()。两种方法的工作之间没有任何区别。它们只是名称不同。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isna()

check_for_any_nan = df.isna().values.any()
# Or
check_for_any_nan = df.isna().any().any()
total_nan_values = df.isna().sum().sum()
print(df_check)
print("NaN Presence:" + str(check_for_any_nan))
print("Total Number of NaN values:" + str(total_nan_values))

输出:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False
NaN Presence:True
Total Number of NaN values:4

在这里,方法 df.isna() 返回的 DataFrame 的元素包含布尔值,这些布尔值表示在 df 中存在 NaN 值。类似地,df.isna().values.any()df.isna().any().any()df.isna().sum().sum() 返回存在的整个 df 中的 NaN 值和 df 中的 NaN 元素数。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

DataFrame 获取给定列的第一行

发布时间:2024/04/22 浏览次数:51 分类:Python

本教程介绍了如何在 Pandas DataFrame 中使用 Series.loc()和 Series.iloc()方法获取给定列的第一行。

Pandas 重命名多个列

发布时间:2024/04/22 浏览次数:186 分类:Python

本教程演示了如何使用 Pandas 重命名数据框中的多个列。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便