如何检查 NaN 是否存在于 Pandas DataFrame 中
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
中的元素不是 NaN
,True
值代表 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
;而当 df
是 pd.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 元素数。
相关文章
DataFrame 获取给定列的第一行
发布时间:2024/04/22 浏览次数:51 分类:Python
-
本教程介绍了如何在 Pandas DataFrame 中使用 Series.loc()和 Series.iloc()方法获取给定列的第一行。
如何基于 Pandas 中的给定条件创建 DataFrame 列
发布时间:2024/04/22 浏览次数:147 分类:Python
-
我们可以使用列表推导技术,numpy 方法,apply()方法和 map()方法对 Pandas 中的给定条件创建 DataFrame 列。
在 Pandas 的 DataFrame 中合并两列文本
发布时间:2024/04/22 浏览次数:99 分类:Python
-
在 Pandas 库中使用 + 运算符,apply(),map(),str.cat(),agg()方法在 DataFrame 中合并列
Pandas DataFrame DataFrame.append() 函数
发布时间:2024/04/22 浏览次数:92 分类:Python
-
Pandas 中的 append 方法将两个不同 DataFrame 的行合并,并返回新的 DataFrame。
Pandas DataFrame DataFrame.apply() 函数
发布时间:2024/04/22 浏览次数:172 分类:Python
-
Pandas DataFrame apply()函数将输入的函数应用到 Pandas DataFrame 的每一个沿行或沿列的元素。