Python Dataframe获取空值计数

时间:2017-05-06 01:40:55

标签: python pandas

我试图在DataFrame中找到空值。虽然我回顾了Stackoverflow中的以下帖子,该帖子描述了确定空值的过程,但我很难为我的数据集做同样的事情。

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

我做错了什么?

2 个答案:

答案 0 :(得分:1)

列表中的''不是空值,而是空字符串。要获得null,请改用None。在pandas.isnull() documentation中描述了缺失值为“数值数组中的NaN,[或]对象数组中的无/ 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

答案 1 :(得分:1)

如果您希望''NoneNaN都计为null,则可以对数据框中的每个值使用applymap方法到boolean,然后再使用.sum

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

我希望这会有所帮助。