Python Dataframe 获取空值计数

Posted

技术标签:

【中文标题】Python Dataframe 获取空值计数【英文标题】:Python Dataframe get null value counts 【发布时间】:2017-10-04 13:54:08 【问题描述】:

我正在尝试在 DataFrame 中查找空值。尽管我查看了 *** 中描述确定空值的过程的以下帖子,但我很难为我的数据集做同样的事情。

How to count the Nan values in the column in Panda Data frame

工作代码:

import pandas as pd
a = ['america','britain','brazil','','china','jamaica'] #I deliberately introduce a NULL value
a = pd.DataFrame(a)
a.isnull()

#Output: 
False
1  False
2  False
3  False
4  False
5  False

a.isnull().sum()
#Output
#0    0
#dtype: int64

我做错了什么?

【问题讨论】:

【参考方案1】:

列表中的'' 不是空值,而是空字符串。要获得 null,请改用 None。这在pandas.isnull() documentation 中有描述,缺失值是“数值数组中的 NaN,[或] 对象数组中的 None/NaN”。

import pandas as pd
a = ['america','britain','brazil',None,'china','jamaica']
a = pd.DataFrame(a)
a.isnull()

       0
0  False
1  False
2  False
3   True
4  False
5  False

您可以通过打印两个数据框来查看差异。在第一种情况下,数据框如下所示:

pd.DataFrame(['america','britain','brazil',None,'china','jamaica'])

         0
0  america
1  britain
2   brazil
3         
4    china
5  jamaica

请注意,索引 3 处的值是一个空字符串。

在第二种情况下,你得到:

pd.DataFrame(['america','britain','brazil',None,'china','jamaica'])

         0
0  america
1  britain
2   brazil
3     None
4    china
5  jamaica

【讨论】:

“与标准 Python 不同,pandas 中的空字符串不被视为空值。”我不认为这是正确的。空字符串还是字符串! @AndyHayden 那句话对我来说措辞很糟糕。我试图指出空值与测试为 False 的事物之间的区别。【参考方案2】:

其他帖子提到 '' 不是空值,因此不使用 isnull 方法计算...

...但是,'' 在被解释为bool 时确实会评估为False

a.astype(bool)

       0
0   True
1   True
2   True
3  False
4   True
5   True

如果您的数据框中有 '' 并希望以这种方式处理它,这可能会很有用。

【讨论】:

【参考方案3】:

如果您希望''NoneNaN 都算作null,您可以对数据框中的每个值使用applymap 方法强制转换为boolean,然后使用@987654327 @随后:

import pandas as pd
import numpy as np


a = ['america','britain','brazil',None,'', np.nan, 'china','jamaica'] #I deliberately introduce a NULL value
a = pd.DataFrame(a)
a.applymap(lambda x: not x or pd.isnull(x)).sum()

# 0    3
# dtype: int64

我希望这会有所帮助。

【讨论】:

谢谢。解决了我的问题:)

以上是关于Python Dataframe 获取空值计数的主要内容,如果未能解决你的问题,请参考以下文章

R语言nrow函数获取dataframe或者matrix行计数统计

Python机器学习(九十一)Pandas 填充(Imputation)空值

通过DataFrame查询计数查询时如何获取整数值?

Pandas DataFrame Groupby 两列并获取计数

如何在 Pandas DataFrame 中一次获取多列的值计数?

数据清洗--DataFrame中的空值处理