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)
pythonRelevante 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
|
In zukünftigen Versionen wird der Parameter method
voraussichtlich 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)
pythonDer 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
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)
pythonIm 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)
pythonIn 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)
pythonIm 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