Daten glattziehen mit Pandas dropna()
Die Python Pandas DataFrame.dropna()-Funktion dient dazu, alle Zeilen oder Spalten aus einem DataFrame zu entfernen, die fehlende Werte (NaN) enthalten. Insbesondere bei der Datenaufbereitung und -bereinigung spielt sie daher eine entscheidende Rolle.
Syntax von Pandas dropna()
Die dropna()-Funktion nimmt bis zu fünf Parameter entgegen. Die grundlegende Syntax ist dabei denkbar einfach:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)pythonRelevante Parameter
Das Verhalten der Pandas-DataFrame.dropna()-Funktion kann durch die übergebenen Parameter gesteuert werden. Die wichtigsten Parameter sind in der folgenden Tabelle zusammengefasst:
| Parameter | Beschreibung | Standardwert |
|---|---|---|
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 Mindestanzahl an Nicht-NaN-Werten für den Erhalt; nicht kombinierbar 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 restlichen Achsen von 0 bis n-1 neu nummeriert
|
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, Verzerrungen in der Statistik zu vermeiden. Zudem gelingen Diagramme und Reports leichter, da fehlende Werte oft zu Darstellungsfehlern 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)pythonDer 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 12Nun wenden wir die Pandas-dropna()-Funktion an:
## Entfernen aller Zeilen, die mindestens einen NaN-Wert enthalten
df_cleaned = df.dropna()
print(df_cleaned)pythonDas Ergebnis der Ausführung:
A B C
0 1.0 5.0 9
3 4.0 8.0 12Nur die Zeilen 0 und 3 bleiben übrig, da alle anderen Zeilen NaN-Werte enthielten.
Spalten mit fehlenden Werten löschen
Das Entfernen von Spalten mit Lücken funktioniert 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)pythonIm Ergebnis bleibt nur Spalte „C“ übrig, da diese keine NaN-Werte besitzt:
C
0 9
1 10
2 11
3 12Nutzen 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)pythonNach 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 12Nutzen 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)pythonHier 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