Mi az a Pandas fillna() és hogyan kell használni?
A Python pandas DataFrame.fillna() függvényt a DataFrame hiányzó értékeinek pótlására használják. Ez segíthet egyszerűsíteni az adat tisztítási folyamatokat, vagy hasznos eszköz lehet elemzések elvégzésekor.
Mi a pandas fillna() szintaxisa?
A fillna() függvény legfeljebb öt paramétert fogad el, és a következőképpen épül fel:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)pythonFontos paraméterek a fillna()
A DataFrame.fillna() funkció viselkedése különböző paraméterek segítségével állítható be:
| Paraméter | Leírás | Alapértelmezett érték |
|---|---|---|
value
|
NaN-értékek helyettesítésére szolgáló skalár érték vagy szótár (vagy sorozat) | None
|
method
|
Meghatározza a kitöltési módszert: előre kitöltés (ffill) vagy visszafelé kitöltés (bfill)
|
None
|
axis
|
Meghatározza, melyik tengelyen kell végrehajtani a műveletet (0 vagy index a sorok esetében, 1 vagy columns az oszlopok esetében)
|
0 |
inplace
|
Ha True, a módosítások közvetlenül az eredeti DataFrame-ben történnek.
|
False
|
limit
|
Egy egész szám, amely korlátozza a helyettesítendő NaN értékek számát. | None
|
A Pandas jövőbeli verzióiban a method paraméter valószínűleg már nem lesz támogatott. Ha ez bekövetkezik, akkor obj.ffill() vagy obj.bfill() paraméterre támaszkodhat, mivel ezek a funkciók ugyanazt a hatást gyakorolják, mint a method paraméter.
A Pandas DataFrame.fillna() használata
A Pandas fillna() függvény többféle módon használható:
A NaN értékek helyettesítése egy fix értékkel
Először hozzunk létre egy DataFrame-et:
import pandas as pd
# Sample DataFrame with different values
data = {
'A': [1, 2, None, 4],
'B': [None, 2, 3, 4],
'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)pythonA DataFrame így néz ki:
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.0A pandákban a DataFrames és Series None értéke NaN-ként értelmeződik.
A hiányzó értékeket 0-val helyettesíteni a pandas fillna() függvénnyel lehet:
# Replacing missing values with zero
df_filled = df.fillna(0)
print(df_filled)pythonAz eredmény az, hogy minden NaN érték 0-ra lett cserélve:
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.0Az előre kitöltési módszer használata ffill
Ha a NaN értékeket az oszlopban közvetlenül előttük álló értékkel szeretné kitölteni, akkor a ffill metódust paraméterként adhatja meg:
# Replace all NaN values with the value that precedes them
df_ffill = df.fillna(method='ffill')
print(df_ffill)pythonEbben a példában az A és C oszlopok NaN értékeit az ugyanazon oszlop előző értékeivel töltöttük ki. Mivel a B oszlopban a 0. sorhoz nem volt előző érték, a NaN érték megmaradt:
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.0A sorokhoz a visszafelé töltési módszer bfill használata
A NaN értékeket a sorpozíciójuk alapján követő értékekkel is kitölthetjük. Ehhez a bfill metódust kell használni, és a axis paramétert 1-re kell állítani:
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)pythonAz eredmény azt mutatja, hogy a 0. és 2. sorban található NaN értékeket az ugyanazon sorban utánuk következő értékek váltották fel. Az első sorban található NaN érték azonban változatlan maradt, mivel ez az adott sor utolsó értéke:
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