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­vor­be­rei­tung und -be­rei­ni­gung spielt sie daher eine ent­schei­den­de Rolle.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

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 be­ein­flusst werden. Die wich­tigs­ten Parameter sind in der folgenden Tabelle zu­sam­men­ge­fasst:

Parameter Be­schrei­bung De­fault­wert
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 Min­dest­an­zahl der Nicht-NaN-Werte an, die eine Zeile oder Spalte haben muss, um nicht entfernt zu werden; kann nicht mit how kom­bi­niert werden optional
subset Bestimmt, welche Zeilen oder Spalten be­trach­tet werden sollen optional
inplace Ent­schei­det, ob die Operation im ur­sprüng­li­chen DataFrame durch­ge­führt wird False
ignore_index Wenn True, werden ver­blei­ben­de Achsen be­schrif­tet mit 0 bis n-1 False

Anwendung von Pandas DataFrame.dropna()

Pandas dropna() wird benötigt, um Daten vor der Analyse zu be­rei­ni­gen, indem Zeilen oder Spalten mit fehlenden Werten entfernt werden. Dies hilft dabei, Ver­zer­run­gen in sta­tis­ti­schen Aus­wer­tun­gen zu vermeiden. Zudem er­leich­tert sie das Erstellen von Dia­gram­men und Berichten, da fehlende Werte in einigen Fällen zu feh­ler­haf­ten Dar­stel­lun­gen führen können.

Entfernen von Zeilen mit fehlenden Werten

Im folgenden Code­bei­spiel be­trach­ten wir einen DataFrame, der NaN-Werte enthält:

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 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 Aus­füh­rung 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 Da­ta­Frames sind noch vorhanden, da alle anderen Zeilen NaN-Werte ent­hiel­ten.

Entfernen von Spalten mit fehlenden Werten

Analog funk­tio­niert 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 Aus­füh­rung 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 spe­zi­fi­schen Spalten anzugeben, in denen nach fehlenden Werten gesucht werden soll. Nur die Zeilen, die in den an­ge­ge­be­nen 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 Pa­ra­me­ters ignoriert, da Spalte „B“ nicht be­trach­tet wurde:

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