Ich möchte die Anzahl der NaN
-Werte in jeder Spalte meiner Daten finden.
Antworten
Zu viele Anzeigen?
Suhas_Pote
Punkte
2999
import numpy as np
import pandas as pd
rohdaten = {'Vorname': ['Jason', np.nan, 'Tina', 'Jake', 'Amy'],
'Nachname': ['Miller', np.nan, np.nan, 'Milner', 'Cooze'],
'Alter': [22, np.nan, 23, 24, 25],
'Geschlecht': ['m', np.nan, 'f', 'm', 'f'],
'Prüfung1_Ergebnis': [4, np.nan, 0, 0, 0],
'Prüfung2_Ergebnis': [25, np.nan, np.nan, 0, 0]}
ergebnisse = pd.DataFrame(rohdaten, columns = ['Vorname', 'Nachname', 'Alter', 'Geschlecht', 'Prüfung1_Ergebnis', 'Prüfung2_Ergebnis'])
ergebnisse
'''
Vorname Nachname Alter Geschlecht Prüfung1_Ergebnis Prüfung2_Ergebnis
0 Jason Miller 22.0 m 4.0 25.0
1 NaN NaN NaN NaN NaN NaN
2 Tina NaN 23.0 f 0.0 NaN
3 Jake Milner 24.0 m 0.0 0.0
4 Amy Cooze 25.0 f 0.0 0.0
'''
Sie können folgende Funktion verwenden, die Ihnen die Ausgabe im Dataframe liefert
- Nullwerte
- Fehlende Werte
- % der Gesamtwerte
- Gesamtzahl der Null- und fehlenden Werte
- % des Gesamtwerts an Null- und fehlenden Werten
- Datentyp
Kopieren und fügen Sie einfach die folgende Funktion ein und rufen Sie sie auf, indem Sie Ihr pandas Dataframe übergeben
def missing_zero_values_table(df):
zero_val = (df == 0.00).astype(int).sum(axis=0)
mis_val = df.isnull().sum()
mis_val_percent = 100 * df.isnull().sum() / len(df)
mz_table = pd.concat([zero_val, mis_val, mis_val_percent], axis=1)
mz_table = mz_table.rename(
columns = {0 : 'Nullwerte', 1 : 'Fehlende Werte', 2 : '% der Gesamtwerte'})
mz_table['Gesamtanzahl der Null- und fehlenden Werte'] = mz_table['Nullwerte'] + mz_table['Fehlende Werte']
mz_table['% des Gesamtwerts an Null- und fehlenden Werten'] = 100 * mz_table['Gesamtanzahl der Null- und fehlenden Werte'] / len(df)
mz_table['Datentyp'] = df.dtypes
mz_table = mz_table[
mz_table.iloc[:,1] != 0].sort_values(
'% der Gesamtwerte', ascending=False).round(1)
print ("Ihr ausgewähltes DataFrame hat " + str(df.shape[1]) + " Spalten und " + str(df.shape[0]) + " Zeilen.\n"
"Es gibt " + str(mz_table.shape[0]) +
" Spalten, die fehlende Werte enthalten.")
# mz_table.to_excel('D:/sampledata/missing_and_zero_values.xlsx', freeze_panes=(1,0), index = False)
return mz_table
missing_zero_values_table(ergebnisse)
Ausgabe
Ihr ausgewähltes DataFrame hat 6 Spalten und 5 Zeilen.
Es gibt 6 Spalten, die fehlende Werte enthalten.
Nullwerte Fehlende Werte % der Gesamtwerte Gesamtanzahl der Null- und fehlenden Werte % des Gesamtwerts an Null- und fehlenden Werten Datentyp
Nachname 0 2 40.0 2 40.0 object
Prüfung2_Ergebnis 2 2 40.0 4 80.0 float64
Vorname 0 1 20.0 1 20.0 object
Alter 0 1 20.0 1 20.0 float64
Geschlecht 0 1 20.0 1 20.0 object
Prüfung1_Ergebnis 3 1 20.0 4 80.0 float64
Wenn es Ihnen zu kompliziert ist, dann können Sie folgende Funktion verwenden, um die fehlenden Werte in % zu erhalten
def missing(dff):
print (round((dff.isnull().sum() * 100/ len(dff)),2).sort_values(ascending=False))
missing(ergebnisse)
'''
Prüfung2_Ergebnis 40.0
Nachname 40.0
Prüfung1_Ergebnis 20.0
Geschlecht 20.0
Alter 20.0
Vorname 20.0
dtype: float64
'''
Anurag Bhakuni
Punkte
2281
Pygirl
Punkte
11724
abdul
Punkte
496
Itachi
Punkte
2283