2017-05-06 120 views
2

我想在DataFrame中找到空值。虽然我从Stackoverflow中回顾了以下文章,描述了确定空值的过程,但我很难为我的数据集做同样的事情。Python数据帧得到空值计数

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

如果你想''NoneNaN所有算不算null,你可以强制转换为boolean和数据框使用applymap方法上的每个值然后使用.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 

我希望这有助于。

+0

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

2

列表中的''不是空值,它是一个空字符串。要获得空值,请改为使用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 
+0

“与标准Python不同,熊猫中的空字符串不被视为空值。”我不认为这是正确的。空字符串仍然是一个字符串! –

+0

@AndyHayden对我而言,这句话很差。我试图指出空值与测试为False的东西之间的区别。 – Craig

0

的其他职位解决该''不是空值并且因此不计为这样与isnull方法...

...然而,当解释为bool''并评估为False

a.astype(bool) 

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

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