Funkce Python pandas DataFrame.fillna() se používá k nahrazení chybějících hodnot v DataFrame. To může pomoci zjednodušit procesy čištění dat nebo být užitečným nástrojem při provádění analýz.

Jaká je syntaxe pro pandas fillna()?

Funkce fillna() přijímá až pět parametrů a má následující strukturu:

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

Důležité parametry pro fillna()

Chování funkce DataFrame.fillna() lze upravit pomocí různých parametrů:

Parametr Popis Výchozí hodnota
value Skalarní hodnota nebo slovník (nebo řada) nahrazující hodnoty NaN. None
method Určuje metodu vyplnění; vyplnění dopředu (ffill) nebo vyplnění dozadu (bfill) None
axis Určuje, na které ose se má operace provést (0 nebo index pro řádky, 1 nebo columns pro sloupce) 0
inplace Pokud je True, změny se provedou přímo v původním DataFrame. False
limit Celé číslo, které omezuje počet hodnot NaN, které mají být nahrazeny. None
Poznámka

V budoucích verzích Pandas nebude parametr methodpravděpodobně již podporován. Pokud k tomu dojde, můžete místo něj použít parametry obj.ffill() nebo obj.bfill(), protože tyto funkce mají stejný účinek jako parametr method.

Jak používat Pandas DataFrame.fillna()

Funkci Pandas fillna() lze použít několika různými způsoby:

Nahrazení hodnot NaN pevnou hodnotou

Nejprve vytvoříme datový rámec:

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 vypadá 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 je hodnota None v DataFrames a Series interpretována jako NaN

Chybějící hodnoty můžete nahradit hodnotou 0 pomocí funkce pandas fillna():

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

Výsledkem je, že každá hodnota NaN byla nahrazena 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žití metody předběžného vyplňování ffill

Pokud chcete hodnoty NaN nahradit hodnotou, která je v daném sloupci bezprostředně předchází, můžete jako parametr předat metodu ffill:

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

V tomto příkladu byly hodnoty NaN ve sloupcích A a C vyplněny předchozími hodnotami ve stejném sloupci. Protože ve sloupci B pro řádek 0 nebyla žádná předchozí hodnota, hodnota NaN zůstala zachována:

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žití metody zpětného vyplňování bfill pro řádky

Hodnoty NaN lze také vyplnit následujícími hodnotami na základě jejich pozice v řádku. K tomu je třeba použít metodu bfill a nastavit parametr axis na hodnotu 1:

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

Výsledek ukazuje, že hodnoty NaN v řádcích 0 a 2 byly nahrazeny hodnotami, které následují za nimi ve stejném řádku. Hodnota NaN v prvním řádku však zůstává stejná, protože je to poslední hodnota v tomto řádku:

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
Přejít do hlavního menu