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】:如果您希望''
、None
和NaN
都算作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)空值
Pandas DataFrame Groupby 两列并获取计数