Die Python Pandas DataFrame.dropna()-Funktion dient dazu, alle Zeilen oder Spalten aus einem DataFrame zu entfernen, die fehlende Werte (NaN) enthalten. Ins­be­son­de­re bei der Da­ten­auf­be­rei­tung und -be­rei­ni­gung spielt sie daher eine ent­schei­den­de Rolle.

Syntax von Pandas dropna()

Die dropna()-Funktion nimmt bis zu fünf Parameter entgegen. Die grund­le­gen­de Syntax ist dabei denkbar einfach:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)
python

Relevante Parameter

Das Verhalten der Pandas-DataFrame.dropna()-Funktion kann durch die über­ge­be­nen Parameter gesteuert werden. Die wich­tigs­ten Parameter sind in der folgenden Tabelle zu­sam­men­ge­fasst:

Parameter Be­schrei­bung Stan­dard­wert
axis Legt fest, ob Zeilen (0 oder index) oder Spalten (1 oder columns) entfernt werden 0
how Gibt an, ob alle (all) oder nur einzelne Werte NaN (any) sein müssen any
tresh Definiert die Min­dest­an­zahl an Nicht-NaN-Werten für den Erhalt; nicht kom­bi­nier­bar mit how optional
subset Legt fest, welche Zeilen oder Spalten geprüft werden optional
inplace Bestimmt, ob die Änderung direkt im Original-DataFrame erfolgt False
ignore_index Falls True, werden die rest­li­chen Achsen von 0 bis n-1 neu num­me­riert False

Anwendung von Pandas DataFrame.dropna()

Pandas dropna() wird genutzt, um Daten vor der Analyse zu säubern, indem Lücken entfernt werden. Das hilft dabei, Ver­zer­run­gen in der Statistik zu vermeiden. Zudem gelingen Diagramme und Reports leichter, da fehlende Werte oft zu Dar­stel­lungs­feh­lern führen.

Zeilen mit fehlenden Werten löschen

In diesem Beispiel nutzen wir einen DataFrame mit NaN-Werten:

import pandas as pd
import numpy as np
# Erstellen eines DataFrames mit Beispieldaten
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df)
python

Der DataFrame sieht so aus:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  NaN  11
3  4.0  8.0  12

Nun wenden wir die Pandas-dropna()-Funktion an:

## Entfernen aller Zeilen, die mindestens einen NaN-Wert enthalten
df_cleaned = df.dropna()
print(df_cleaned)
python

Das Ergebnis der Aus­füh­rung:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Nur die Zeilen 0 und 3 bleiben übrig, da alle anderen Zeilen NaN-Werte ent­hiel­ten.

Spalten mit fehlenden Werten löschen

Das Entfernen von Spalten mit Lücken funk­tio­niert fast gleich. Setze dafür einfach den axis-Parameter auf 1:

## Entfernen aller Spalten, die mindestens einen NaN-Wert enthalten
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
python

Im Ergebnis bleibt nur Spalte „C“ übrig, da diese keine NaN-Werte besitzt:

C
0   9
1  10
2  11
3  12

Nutzen von thresh

Sollen nur Zeilen mit weniger als zwei gültigen Werten entfernt werden, hilft der thresh-Parameter:

## Entfernen aller Zeilen mit weniger als zwei Nicht-NaN-Werten
df_thresh = df.dropna(thresh=2)
print(df_thresh)
python

Nach dem Ausführen bleibt die erste Zeile erhalten, da sie zwei Nicht-NaN-Werte hat:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12

Nutzen von subset

Mit subset gibst du gezielt Spalten an, die auf fehlende Werte geprüft werden sollen. Nur Zeilen mit Lücken in genau diesen Spalten fliegen raus.

## Entfernen aller Zeilen, die in Spalte „A“ einen NaN-Wert enthalten:
df_subset = df.dropna(subset=['A'])
print(df_subset)
python

Hier wurde nur die zweite Zeile gelöscht. Der NaN-Wert in Zeile 1 wird ignoriert, weil Spalte „B“ nicht im Fokus stand:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Zum Hauptmenü