Datenbereinigung 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 Datenvorbereitung und -bereinigung spielt sie daher eine entscheidende Rolle.
- Flexibel: Hosting, das jedem Website-Traffic standhält
- Verlässlich: Inklusive 24/7-Support und persönlicher Beratung
- Sicher: Kostenloses SSL-Zertifikat, DDoS-Schutz und Backups
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 beeinflusst werden. Die wichtigsten Parameter sind in der folgenden Tabelle zusammengefasst:
Parameter | Beschreibung | Defaultwert |
---|---|---|
axis
|
Bestimmt, ob Zeilen (0 oder index ) oder Spalten (1 oder columns ) entfernt werden
|
0 |
how
|
Gibt an, ob alle (all ) oder nur einige Werte NaN (any ) sein müssen
|
any
|
tresh
|
Gibt die Mindestanzahl der Nicht-NaN-Werte an, die eine Zeile oder Spalte haben muss, um nicht entfernt zu werden; kann nicht mit how kombiniert werden
|
optional |
subset
|
Bestimmt, welche Zeilen oder Spalten betrachtet werden sollen | optional |
inplace
|
Entscheidet, ob die Operation im ursprünglichen DataFrame durchgeführt wird | False
|
ignore_index
|
Wenn True , werden verbleibende Achsen beschriftet mit 0 bis n-1
|
False
|
Anwendung von Pandas DataFrame.dropna()
Pandas dropna()
wird benötigt, um Daten vor der Analyse zu bereinigen, indem Zeilen oder Spalten mit fehlenden Werten entfernt werden. Dies hilft dabei, Verzerrungen in statistischen Auswertungen zu vermeiden. Zudem erleichtert sie das Erstellen von Diagrammen und Berichten, da fehlende Werte in einigen Fällen zu fehlerhaften Darstellungen führen können.
Entfernen von Zeilen mit fehlenden Werten
Im folgenden Codebeispiel betrachten wir einen DataFrame, der NaN-Werte enthält:
import pandas as pd
import numpy as np
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 wie folgt 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
Im nächsten Schritt wenden wir die Pandas-dropna()
-Funktion an:
## Entfernen aller Zeilen, die mindestens einen NaN-Wert enthalten
df_cleaned = df.dropna()
print(df_cleaned)
pythonDie Ausführung des Codes liefert folgendes Ergebnis:
A B C
0 1.0 5.0 9
3 4.0 8.0 12
Nur die nullte und die dritte Zeile des DataFrames sind noch vorhanden, da alle anderen Zeilen NaN-Werte enthielten.
Entfernen von Spalten mit fehlenden Werten
Analog funktioniert das Entfernen von Spalten mit fehlenden Werten. Hierfür muss lediglich der axis
-Parameter der Funktion auf 1 gesetzt werden:
## Entfernen aller Spalten, die mindestens einen NaN-Wert enthalten
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
pythonIm Ergebnis ist zu sehen, dass nur noch die Spalte „C“ vorhanden ist, da sie als einzige keinen NaN-Wert enthält:
C
0 9
1 10
2 11
3 12
Anwendung von thresh
Wenn nur Zeilen entfernt werden sollen, die weniger als zwei Nicht-NaN-Werte haben, kann der thresh
-Parameter verwendet werden:
## Entfernen aller Zeilen mit weniger als zwei Nicht-NaN-Werten
df_thresh = df.dropna(thresh=2)
print(df_thresh)
pythonNach Ausführung des Codes ist die erste Zeile nun ebenfalls noch vorhanden, da sie zwei Nicht-NaN-Werte enthält:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12
Anwendung von subset
Der Parameter subset
wird verwendet, um die spezifischen Spalten anzugeben, in denen nach fehlenden Werten gesucht werden soll. Nur die Zeilen, die in den angegebenen Spalten fehlende Werte haben, werden entfernt.
## Entfernen aller Zeilen, die in Spalte „A“ einen NaN-Wert enthalten:
df_subset = df.dropna(subset=['A'])
print(df_subset)
pythonEs fällt auf, dass nur die zweite Zeile entfernt worden ist. Der NaN-Wert in der ersten Zeile wird aufgrund des gesetzten Parameters ignoriert, da Spalte „B“ nicht betrachtet wurde:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
3 4.0 8.0 12