Lücken schließen: NaN-Werte mit Pandas fillna() bereinigen
Die Python-Pandas DataFrame.fillna()-Funktion nutzt du, um fehlende Werte in einem DataFrame zu ersetzen. Das hilft dir dabei, deine Daten unkompliziert zu bereinigen und präzise Analysen durchzuführen.
Syntax von Pandas fillna()
Die fillna()-Funktion akzeptiert bis zu fünf Parameter. Der Aufbau sieht so aus:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)pythonRelevante Parameter
Du kannst das Verhalten von pandas DataFrame.fillna() mit diesen Parametern individuell steuern:
| Parameter | Beschreibung | Standardwert |
|---|---|---|
value
|
Ein einzelner Wert, ein Dictionary oder eine Serie, um NaNs zu ersetzen. | None
|
method
|
Bestimmt die Füllmethode: Vorwärts (ffill) oder Rückwärts (bfill).
|
None
|
axis
|
Legt die Achse fest (0 oder index für Zeilen, 1 oder columns für Spalten).
|
0 |
inplace
|
Bei True wird der ursprüngliche DataFrame direkt überschrieben.
|
False
|
limit
|
Ganzzahl, die begrenzt, wie viele NaN-Werte maximal ersetzt werden. | None
|
Gut zu wissen: Der Parameter method wird in künftigen Versionen vermutlich nicht mehr unterstützt. Nutze stattdessen am besten gleich obj.ffill() oder obj.bfill(). Diese Funktionen liefern dir dasselbe Ergebnis wie der bisherige method-Parameter.
So wendest du pandas DataFrame.fillna() an
Du kannst die pandas-fillna()-Funktion flexibel einsetzen:
NaN-Werte durch einen fixen Wert ersetzen
Zuerst erstellen wir einen Beispiel-DataFrame:
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)pythonDer definierte DataFrame stellt sich so dar:
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.0In python pandas wird der Wert None innerhalb von DataFrames und Series automatisch als NaN erkannt.
Um die Lücken nun mit einer 0 zu füllen, nutzt du einfach fillna():
# Ersetzen der fehlenden Werte durch den Wert 0
df_filled = df.fillna(0)
print(df_filled)pythonAls Resultat wurde jedes NaN durch die Zahl 0 ersetzt:
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.0Vorwärtsfüllen mit ffill
Möchtest du NaN-Werte mit dem jeweils vorherigen Wert der Spalte auffüllen? Dann übergib der Funktion die Methode ffill:
# Ersetzen aller NaN-Werte durch den vorhergehenden Wert
df_ffill = df.fillna(method='ffill')
print(df_ffill)pythonHier wurden die NaNs in den Spalten „A“ und „C“ durch die Werte darüber ersetzt. In Spalte „B“ bleibt NaN bestehen, da kein Wert davor existiert:
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.0Zeilenweises Rückwärtsfüllen mit bfill
Du kannst Lücken auch mit dem jeweils nächsten Wert in der Zeile schließen. Kombiniere dazu die Methode bfill mit dem axis-Parameter auf 1:
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)pythonDadurch werden die NaNs in der ersten und dritten Zeile durch ihre Nachfolger ersetzt. Nur in der ersten Spalte bleibt ein NaN übrig, falls dort kein Nachfolgewert in der Zeile vorhanden ist:
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