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.

Webhosting
Top-Hosting für Ihre Website
  • 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)
python

Relevante 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)
python

Der 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)
python

Die 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)
python

Im 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)
python

Nach 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)
python

Es 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
War dieser Artikel hilfreich?
Page top