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)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 indexfür Zeilen, 1 odercolumnsfü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 | 
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
# Beispiel DataFrame mit verschiedenen Werten
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)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.0Beachten 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)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.0Verwendung 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)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.0Zeilenweise 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)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- 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