Co je Pandas fillna() a jak jej používat
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)pythonDů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
|
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)pythonDataFrame 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.0V 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)pythonVý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.0Použ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)pythonV 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.0Použ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)pythonVý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