Python -funk­tio­nen pandas DataFrame.fillna() används för att ersätta saknade värden i en DataFrame. Detta kan bidra till att förenkla da­ta­rens­nings­pro­ces­ser eller vara ett an­vänd­bart verktyg vid analyser.

Vad är syntaxen för pandas fillna()?

Funk­tio­nen fillna() ac­cep­te­rar upp till fem pa­ra­met­rar och är struk­tu­re­rad enligt följande:

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

Viktiga pa­ra­met­rar för fillna()

Funk­tio­nen DataFrame.fillna():s beteende kan justeras med hjälp av olika pa­ra­met­rar:

Parameter Be­skriv­ning Stan­dard­vär­de
value Ett skalärt värde eller en ordbok (eller serie) som ska ersätta NaN-värden. None
method Anger fyll­nings­me­to­den; fram­åt­fyll­ning (ffill) eller bak­åt­fyll­ning (bfill) None
axis Bestämmer vilken axel ope­ra­tio­nen ska utföras på (0 eller index för rader, 1 eller columns för kolumner) 0
inplace Om True, görs änd­ring­ar­na direkt i den ur­sprung­li­ga DataFrame. False
limit Ett heltal som begränsar antalet NaN-värden som ska ersättas. None
Notis

I framtida versioner av Pandas kommer pa­ra­me­tern methodsannolikt inte längre att stödjas. Om så blir fallet kan du istället använda obj.ffill() eller obj.bfill(), eftersom dessa funk­tio­ner har samma effekt som pa­ra­me­tern method.

Hur man använder Pandas DataFrame.fillna()

Funk­tio­nen Pandas fillna() kan användas på flera olika sätt:

Ersätta NaN-värden med ett fast värde

Först skapar vi 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 ut så här:

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
Notis

I pandas tolkas värdet None i Da­taFrames och Series som NaN.

För att ersätta de saknade värdena med 0 kan du använda funk­tio­nen pandas fillna():

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

Re­sul­ta­tet är att varje NaN-värde har ersatts 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

An­vänd­ning av metoden för fram­åt­fyll­ning ffill

Om du vill fylla NaN-värden med det värde som direkt föregår dem i kolumnen där de finns kan du skicka 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 det här exemplet har NaN-värdena i ko­lum­ner­na A och C fyllts i med de fö­re­gå­en­de värdena i samma kolumn. Eftersom det inte fanns något fö­re­gå­en­de värde i kolumn B för rad 0 behålls NaN-värdet:

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

Använda metoden för bak­åt­fyll­ning bfill för rader

NaN-värden kan också fyllas med ef­ter­föl­jan­de värden baserat på deras rad­po­si­tion. För att göra detta måste du använda metoden bfill och ställa in pa­ra­me­tern axis till 1:

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

Re­sul­ta­tet visar att NaN-värdena i raderna 0 och 2 har ersatts av värdena som följer efter dem i samma rad. NaN-värdet i den första raden förblir dock oför­änd­rat eftersom det är det sista värdet i den raden:

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å till huvudmeny