60 您所在的位置:网站首页 如何统计包含关键数字合计总数 60

60

2024-07-05 00:33| 来源: 网络整理| 查看: 265

60_Pandas中是否包含判断缺失值NaN并统计个数

下面介绍如何判断pandas.DataFrame、Series是否包含缺失值NaN以及如何统计缺失值NaN的个数。

使用 isnull()、isna() 确定每个元素的缺失值判断每一行/列的所有元素是否缺失值判断每一行/列是否至少包含一个缺失值计算每行/列的缺失值计算每行/列的非缺失元素的数量计算缺失值总数计算非缺失元素的总数判断整体是否至少有一个缺失值pandas.Series

使用 read_csv() 读取包含空白的 CSV 文件。仅使用前三行。

import pandas as pd df = pd.read_csv('data/sample_pandas_normal_nan.csv')[:3] print(df) # name age state point other # 0 Alice 24.0 NY NaN NaN # 1 NaN NaN NaN NaN NaN # 2 Charlie NaN CA NaN NaN 使用 isnull()、isna() 确定每个元素的缺失值 如果值为 NaN,则值为 True,如果不是,则值为 False。 print(df.isnull()) # name age state point other # 0 False False False True True # 1 True True True True True # 2 False True False True True print(df.isna()) # name age state point other # 0 False False False True True # 1 True True True True True # 2 False True False True True

isnull() 是 isna() 的别名,两者用法相同。之后主要是用isnull(),不过可以用isna()代替。

相反,如果值不是 NaN,则有方法 notnull() 和 notna() 返回 True,如果值缺失则返回 False。 notnull() 是 notna() 的别名,两者用法相同。

print(df.notnull()) # name age state point other # 0 True True True False False # 1 False False False False False # 2 True False True False False print(df.notna()) # name age state point other # 0 True True True False False # 1 False False False False False # 2 True False True False False

注意,对于缺失值 NaN,== 返回 False 而 != 对所有值(包括 NaN 本身)返回 True。请注意,== 和 != 无法检测缺失值。

print(df == float('nan')) # name age state point other # 0 False False False False False # 1 False False False False False # 2 False False False False False print(df != float('nan')) # name age state point other # 0 True True True True True # 1 True True True True True # 2 True True True True True 判断每一行/列的所有元素是否缺失值 all() 是一种方法,如果每行/列中的所有元素都为真,则确定为真。从 pandas.DataFrame 调用时返回 pandas.Series。

通过将 all() 应用于 isnull() 的结果,可以确定每行和每列的所有元素是否都是缺失值 NaN。

默认情况下为列,参数为 axis=1 的行。

print(df.isnull().all()) # name False # age False # state False # point True # other True # dtype: bool print(df.isnull().all(axis=1)) # 0 False # 1 True # 2 False # dtype: bool 判断每一行/列是否至少包含一个缺失值 any() 是一种确定 True 的方法,如果每行/列甚至有一个 True。从 pandas.DataFrame 调用时返回 pandas.Series。 print(df.isnull().any()) # name True # age True # state True # point True # other True # dtype: bool print(df.isnull().any(axis=1)) # 0 True # 1 True # 2 True # dtype: bool 计算每行/列的缺失值 sum() 是一种计算每行/列总数的方法。从 pandas.DataFrame 调用时返回 pandas.Series。

由于sum()被处理为True=1,False=0,通过对isnull()的结果应用sum(),我们可以统计每行和每列缺失值NaN的个数。

默认情况下为列,参数为 axis=1 的行。

print(df.isnull().sum()) # name 1 # age 2 # state 1 # point 3 # other 3 # dtype: int64 print(df.isnull().sum(axis=1)) # 0 2 # 1 5 # 2 3 # dtype: int64 计算每行/列的非缺失元素的数量 count() 是一种方法,它计算每一行/列中不属于缺失值 NaN 的元素的数量。从 pandas.DataFrame 调用时返回 pandas.Series。

直接从原始 pandas.DataFrame 调用它,而不是 isnull() 的结果。

默认情况下为列,参数为 axis=1 的行。

print(df.count()) # name 2 # age 1 # state 2 # point 0 # other 0 # dtype: int64 print(df.count(axis=1)) # 0 3 # 1 0 # 2 2 # dtype: int64 计算缺失值总数 可以通过pandas.DataFrame的values属性获取整个元素的数据作为NumPy数组numpy.ndarray。 print(df.isnull().values) # [[False False False True True] # [ True True True True True] # [False True False True True]] print(type(df.isnull().values)) #

与 pandas.DataFrame 方法 sum() 不同,numpy.ndarray 方法 sum() 默认计算总和。

因此,从isnull()结果的values属性(numpy.ndarray)调用sum(),可以得到缺失值的总数(total number)。

print(df.isnull().values.sum()) # 10 计算非缺失元素的总数 对于count()可以得到的每一行或每一列,可以通过sum()计算非缺失元素的总数。 print(df.count().sum()) # 5

可以从 notnull() 或 notna() 产生的值属性 (numpy.ndarray) 调用 sum()(对于非缺失元素为真)。

print(df.notnull().values.sum()) # 5 判断整体是否至少有一个缺失值 上面给出的缺失值总数可以用来判断总数是否包含缺失值。 如果缺失值总数不为0,则至少存在一个缺失值NaN。 print(df.isnull().values.sum() != 0) # True

如果缺失值总数等于size属性(元素总数),则所有元素都是缺失值NaN。

print(df.size) # 15 print(df.isnull().values.sum() == df.size) # False pandas.Series pandas.Series还有isnull()、isna()、notnull()、notna()等方法。可以像前面的例子一样处理。 s = df['state'] print(s) # 0 NY # 1 NaN # 2 CA # Name: state, dtype: object print(s.isnull()) # 0 False # 1 True # 2 False # Name: state, dtype: bool print(s.notnull()) # 0 True # 1 False # 2 True # Name: state, dtype: bool print(s.isnull().any()) # True print(s.isnull().all()) # False print(s.isnull().sum()) # 1 print(s.count()) # 2


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有