Ich möchte die Anzahl der NaN
-Werte in jeder Spalte meiner Daten finden.
Antworten
Zu viele Anzeigen?Verwenden Sie die isna()
Methode (oder das Alias isnull()
, das auch mit älteren pandas Versionen < 0.21.0 kompatibel ist) und summiere dann die NaN-Werte. Für eine Spalte:
>>> s = pd.Series([1,2,3, np.nan, np.nan])
>>> s.isna().sum() # oder s.isnull().sum() für ältere pandas Versionen
2
Für mehrere Spalten funktioniert das auch:
>>> df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
>>> df.isna().sum()
a 1
b 2
dtype: int64
Auf Basis der am meisten gewählten Antwort können wir leicht eine Funktion definieren, die uns ein DataFrame gibt, um die fehlenden Werte und den prozentualen Anteil der fehlenden Werte in jeder Spalte zu überprüfen:
def missing_values_table(df):
mis_val = df.isnull().sum()
mis_val_percent = 100 * df.isnull().sum() / len(df)
mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
mis_val_table_ren_columns = mis_val_table.rename(
columns = {0 : 'Fehlende Werte', 1 : '% der Gesamtwerte'})
mis_val_table_ren_columns = mis_val_table_ren_columns[
mis_val_table_ren_columns.iloc[:,1] != 0].sort_values(
'% der Gesamtwerte', ascending=False).round(1)
print ("Ihr ausgewähltes DataFrame hat " + str(df.shape[1]) + " Spalten.\n"
"Es gibt " + str(mis_val_table_ren_columns.shape[0]) +
" Spalten, die fehlende Werte enthalten.")
return mis_val_table_ren_columns
Seit pandas 0.14.1 wurde mein Vorschlag hier zur Implementierung eines Schlüsselwortarguments in der value_counts-Methode umgesetzt:
import pandas as pd
df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
for col in df:
print df[col].value_counts(dropna=False)
2 1
1 1
NaN 1
dtype: int64
NaN 2
1 1
dtype: int64
- See previous answers
- Weitere Antworten anzeigen