Funkcia Python pandas DataFrame.fillna() sa používa na nahradenie chýbajúcich hodnôt v DataFrame. To môže pomôcť zjednodušiť procesy čistenia údajov alebo byť užitočným nástrojom pri vykonávaní analýz.

Aká je syntax pre pandas fillna()?

Funkcia fillna() prijíma až päť parametrov a má nasledujúcu štruktúru:

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

Dôležité parametre pre fillna()

Správanie funkcie DataFrame.fillna() možno nastaviť pomocou rôznych parametrov:

Parameter Popis Predvolená hodnota
value Skalarová hodnota alebo slovník (alebo séria) na nahradenie hodnôt NaN None
method Určuje metódu vyplnenia; vyplnenie dopredu (ffill) alebo vyplnenie dozadu (bfill) None
axis Určuje, na ktorej osi sa má operácia vykonať (0 alebo index pre riadky, 1 alebo columns pre stĺpce) 0
inplace Ak je hodnota True, zmeny sa vykonajú priamo v pôvodnom DataFrame. False
limit Celé číslo, ktoré obmedzuje počet hodnôt NaN, ktoré sa majú nahradiť. None
Poznámka

V budúcich verziách Pandas bude parameter methodpravdepodobne už nepodporovaný. Ak k tomu dôjde, môžete namiesto neho použiť obj.ffill() alebo obj.bfill(), pretože tieto funkcie majú rovnaký účinok ako parameter method.

Ako používať Pandas DataFrame.fillna()

Funkcia Pandas fillna() sa dá použiť viacerými spôsobmi:

Nahradenie hodnôt NaN pevnou hodnotou

Najskôr vytvoríme DataFrame:

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)
python

DataFrame vyzerá takto:

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
Poznámka

V pandách sa hodnota None v DataFrames a Series interpretuje ako NaN

Na nahradenie chýbajúcich hodnôt hodnotou 0 môžete použiť funkciu pandas fillna():

# Replacing missing values with zero
df_filled = df.fillna(0)
print(df_filled)
python

Výsledkom je, že každá hodnota NaN bola nahradená hodnotou 0:

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

Použitie metódy dopredu vyplňovania ffill

Ak chcete vyplniť hodnoty NaN hodnotou, ktorá ich priamo predchádza v stĺpci, v ktorom sa nachádzajú, môžete ako parameter odovzdať metódu ffill:

# Replace all NaN values with the value that precedes them
df_ffill = df.fillna(method='ffill')
print(df_ffill)
python

V tomto príklade boli hodnoty NaN v stĺpcoch A a C vyplnené predchádzajúcimi hodnotami v tom istom stĺpci. Keďže v stĺpci B neboli žiadne predchádzajúce hodnoty pre riadok 0, hodnota NaN zostala zachovaná:

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

Použitie metódy spätného vyplňovania bfill pre riadky

Hodnoty NaN môžu byť tiež vyplnené nasledujúcimi hodnotami na základe ich pozície v riadku. Na to je potrebné použiť metódu bfill a nastaviť parameter axis na hodnotu 1:

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

Výsledok ukazuje, že hodnoty NaN v riadkoch 0 a 2 boli nahradené hodnotami, ktoré nasledujú za nimi v tom istom riadku. Hodnota NaN v prvom riadku však zostáva nezmenená, pretože je to posledná hodnota v tomto riadku:

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
Prejsť na hlavné menu