Pandas fillna() zum Ersetzen von NaN-Werten

Die Python-Pandas DataFrame.fillna()-Funktion wird verwendet, um fehlende Werte in einem DataFrame zu ersetzen. Das ist in vielen Fällen hilfreich, um Datenbereinigungsprozesse zu erleichtern oder Analysen durchzuführen.

Syntax von Pandas fillna()

Die fillna()-Funktion nimmt bis zu fünf Parameter entgegen und ist syntaktisch wie folgt aufgebaut:

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
python

Relevante Parameter

Das Verhalten von Pandas DataFrame.fillna() kann unter Zuhilfenahme verschiedener Parameter angepasst werden:

Parameter Beschreibung Defaultwert
value Ein skalierter Wert oder ein Dictionary bzw. eine Serie zur Ersetzung der NaNs None
method Gibt die Methode zum Füllen an; Vorwärtsauffüllen (ffill) oder Rückwärtsauffüllen (bfill) None
axis Bestimmt, entlang welcher Achse die Operation durchgeführt wird (0 oder index für Zeilen, 1 oder columns für Spalten) 0
inplace Wenn True, werden die Änderungen direkt im ursprünglichen DataFrame durchgeführt. False
limit Integer, der die Anzahl zu ersetzender NaN-Werte begrenzt None
Hinweis

In zukünftigen Versionen wird der Parameter methodvoraussichtlich nicht mehr unterstützt werden. Programmiererinnen und Programmierer können dann auf obj.ffill() bzw. obj.bfill() zurückgreifen. Die beiden Funktionen haben denselben Effekt wie der entsprechende method-Parameter.

Anwendung von Pandas DataFrame.fillna()

Die Pandas-fillna()-Funktion kann auf verschiedene Weise genutzt werden:

Ersetzen von NaN-Werten durch einen festen Wert

In einem ersten Schritt wir ein DataFrame definiert:

import pandas as pd
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
python

Der soeben definierte DataFrame sieht folgendermaßen aus:

A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
Hinweis

Beachten Sie, dass in Python Pandas der Wert None in DataFrames und Series als NaN interpretiert wird.

Um die fehlenden Werte nun durch den Wert 0 zu ersetzen, kann die Pandas-Funktion fillna() genutzt werden:

# Ersetzen der fehlenden Werte durch den Wert 0
df_filled = df.fillna(0)
print(df_filled)
python

Im Ergebnis wurde jedes NaN durch den Wert 0 ersetzt, der der Funktion übergeben wurde:

A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0

Verwendung der Vorwärtsfüllmethode ffill

Wenn die NaN-Werte mit den vorhergehenden Werten der jeweiligen Spalte aufgefüllt werden sollen, kann die Methode ffill genutzt werden, die der Funktion als Parameter übergeben wird:

# Ersetzen aller NaN-Werte durch den vorhergehenden Wert
df_ffill = df.fillna(method='ffill')
print(df_ffill)
python

In diesem Beispiel wurden die NaN-Werte in den Spalten „A“ und „C“ durch die vorhergehenden Werte in derselben Spalte ersetzt. Da es in der Spalte „B“ keinen vorausgehenden Wert gab, verbleibt dort der Wert NaN:

A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0

Zeilenweise Verwendung der Rückwärtsfüllmethode bfill

Die NaN-Werte können auch mit ihren Nachfolgewerten der jeweiligen Zeile aufgefüllt werden. Hierzu muss nicht nur die Methode bfill genutzt werden, sondern es muss darüber hinaus der axis-Parameter auf 1 gesetzt werden:

df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
python

Im Ergebnis sind die NaN-Werte in der nullten und zweiten Zeile durch ihre jeweiligen Nachfolgewerte ersetzt worden. Nur in der ersten Spalte verbleibt noch einen NaN-Wert, denn es gibt in dieser Zeile keinen entsprechenden Nachfolgewert:

A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
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
War dieser Artikel hilfreich?
Page top