2017-05-06 2 views
2

Ich versuche, die Null-Werte in einem DataFrame zu finden. Obwohl ich den folgenden Beitrag von Stackoverflow gelesen habe, in dem der Prozess zum Ermitteln der Nullwerte beschrieben wird, fällt es mir schwer, das Gleiche für mein Dataset zu tun.Python Dataframe erhalten null Wert zählt

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

Arbeitscode:

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 

Was mache ich falsch?

Antwort

2

Wenn Sie '', None und NaN auf alle zählen als null wollen, können Sie die applymap Methode auf jeden Wert in der zu einem boolean dazu gezwungen Datenrahmen verwenden und verwenden .sum dann anschließend:

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 

ich hoffe, das hilft.

+0

Danke. Löste mein Problem :) –

2

Die '' in Ihrer Liste ist kein Nullwert, es ist eine leere Zeichenfolge. Um eine Null zu erhalten, verwenden Sie stattdessen None. Dies wird in der pandas.isnull() documentation beschrieben, dass fehlende Werte "NaN in numerischen Arrays, [oder] keine/NaN in Objekt-Arrays" sind.

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 

Sie können den Unterschied sehen, indem Sie die beiden Dataframes drucken. Im ersten Fall sieht das Datenframe wie folgt aus:

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

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

Beachten Sie, dass der Wert in Index 3 eine leere Zeichenfolge ist.

Im zweiten Fall erhalten Sie:

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

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

"Im Gegensatz zu Standard-Python wird eine leere Zeichenfolge in Pandas nicht als Nullwert betrachtet." Ich denke nicht, dass das richtig ist. Die leere Zeichenfolge ist immer noch eine Zeichenfolge! –

+0

@AndyHayden Diese Zeile war eine schlechte Formulierung meinerseits. Ich habe versucht, den Unterschied zwischen Nullwerten und Dingen aufzuzeigen, die als Falsch getestet werden. – Craig

0

Die anderen Beiträge angesprochen, dass '' kein Nullwert ist und daher als solche mit der isnull Methode nicht mitgezählt ...

... Allerdings ''-False, wenn sie als bool interpretiert werten.

a.astype(bool) 

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

nützlich sein Dies könnte, wenn Sie '' in Ihrem Datenrahmen haben und wollen es auf diese Weise verarbeiten.