2017-05-06 31 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 

如果您的數據框中有''並且想要以這種方式處理它,這可能會很有用。