Python -funk­tio­nen pandas DataFrame.fillna() bruges til at erstatte manglende værdier i en DataFrame. Dette kan hjælpe med at forenkle da­ta­rens­nings­pro­ces­ser eller være et nyttigt værktøj, når der udføres analyser.

Hvad er syntaksen for pandas fillna()?

Funk­tio­nen fillna() ac­cep­te­rer op til fem parametre og er opbygget som følger:

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

Vigtige parametre for fillna()

F DataFrame.fillna() s adfærd kan justeres ved hjælp af for­skel­li­ge parametre:

Parameter Be­skri­vel­se Stan­dard­vær­di
value En skalær­vær­di eller en ordbog (eller serie) til er­stat­ning af NaN’er None
method Angiver ud­fyld­nings­me­to­den; fremad­ret­tet ud­fyld­ning (ffill) eller bag­ud­ret­tet ud­fyld­ning (bfill) None
axis Bestemmer, hvilken akse ope­ra­tio­nen skal udføres på (0 eller index for rækker, 1 eller columns for kolonner) 0
inplace Hvis True, foretages æn­drin­ger­ne direkte i den op­rin­de­li­ge DataFrame. False
limit Et heltal, der begrænser antallet af NaN-værdier, der skal erstattes. None
Note

I frem­ti­di­ge versioner af Pandas vil pa­ra­me­te­ren methodsand­syn­lig­vis ikke længere blive un­der­støt­tet. Hvis dette sker, kan du i stedet bruge obj.ffill() eller obj.bfill(), da disse funk­tio­ner har samme effekt som pa­ra­me­te­ren method.

Sådan bruges Pandas DataFrame.fillna()

Pandas fillna() -funk­tio­nen kan bruges på flere for­skel­li­ge måder:

Er­stat­ning af NaN-værdier med en fast værdi

Først skal vi oprette en 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 ser således ud:

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
Note

I pandas fortolkes værdien None i Da­ta­F­ra­mes og Series som NaN

For at erstatte de manglende værdier med 0 kan du bruge pandas fillna() -funk­tio­nen:

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

Re­sul­ta­tet er, at alle NaN-værdier er blevet erstattet med 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

Brug af fremad­ret­tet ud­fyld­nings­me­to­de ffill

Hvis du vil udfylde NaN-værdier med den værdi, der ligger umid­del­bart foran dem i den kolonne, hvor de befinder sig, kan du overføre metoden ffill som parameter:

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

I dette eksempel er NaN-værdierne i kolonne A og C blevet udfyldt med de fo­re­gå­en­de værdier i samme kolonne. Da der ikke var nogen fo­re­gå­en­de værdi i kolonne B for række 0, bevares NaN-værdien:

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

Brug af bag­ud­fyld­nings­me­to­den bfill til rækker

NaN-værdier kan også udfyldes med ef­ter­føl­gen­de værdier baseret på deres ræk­ke­pla­ce­ring. For at gøre dette skal du bruge metoden bfill og indstille pa­ra­me­te­ren axis til 1:

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

Re­sul­ta­tet viser, at NaN-værdierne i række 0 og 2 er blevet erstattet af de værdier, der følger efter dem i samme række. NaN-værdien i den første række forbliver dog den samme, da det er den sidste værdi i den række:

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
Gå til ho­ved­me­nu­en