Python pandas DataFrame.fillna() -funktiota käytetään kor­vaa­maan puuttuvat arvot DataFrame-ke­hyk­ses­sä. Tämä voi auttaa yk­sin­ker­tais­ta­maan tietojen puh­dis­ta­mispro­ses­se­ja tai olla hyö­dyl­li­nen työkalu ana­lyy­se­ja suo­ri­tet­taes­sa.

Mikä on pandas fillna():n syntaksi?

fillna() hyväksyy enintään viisi pa­ra­met­ria ja on ra­ken­net­tu seu­raa­vas­ti:

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

Tärkeät pa­ra­met­rit fillna()

DataFrame.fillna() funktion toimintaa voidaan säätää useilla pa­ra­met­reil­la:

Parametri Kuvaus Ole­tusar­vo
value Skaa­laa­ri­nen arvo tai sanakirja (tai sarja), joka korvaa NaN-arvot None
method Määrittää täyt­tö­me­ne­tel­män; eteenpäin täyttö (ffill) tai taak­se­päin täyttö (bfill) None
axis Määrittää, millä akselilla operaatio suo­ri­te­taan (0 tai index riveille, 1 tai columns sa­rak­keil­le) 0
inplace Jos True, muutokset tehdään suoraan al­ku­pe­räi­seen DataFrame-tau­luk­koon. False
limit Ko­ko­nais­lu­ku, joka rajoittaa kor­vat­ta­vien NaN-arvojen määrää. None
Huomio

Pandasin tulevissa ver­siois­sa pa­ra­met­ria methodei to­den­nä­köi­ses­ti enää tueta. Jos näin tapahtuu, voit käyttää sen sijaan pa­ra­met­ria obj.ffill() tai obj.bfill(), koska nämä funktiot toimivat samalla tavalla kuin parametri method.

Pandas DataFrame.fillna():n käyttö

Pandas fillna() -funktiota voidaan käyttää useilla eri tavoilla:

NaN-arvojen kor­vaa­mi­nen kiin­teäl­lä arvolla

Luodaan ensin 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 näyttää tältä:

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
Huomio

Panda-oh­jel­mis­tos­sa Da­taFra­mes- ja Series-muut­tu­jien arvo None tulkitaan arvoksi NaN.

Puuttuvat arvot voidaan korvata nollilla käyt­tä­mäl­lä pandas fillna() -funktiota:

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

Tuloksena jokainen NaN-arvo on korvattu arvolla 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

Eteenpäin täyt­tä­mi­sen me­ne­tel­män käyttö ffill

Jos haluat täyttää NaN-arvot arvolla, joka sijaitsee vä­lit­tö­mäs­ti niiden edessä sa­rak­kees­sa, jossa ne si­jait­se­vat, voit välittää ffill pa­ra­met­ri­na:

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

Tässä esi­mer­kis­sä sa­rak­kei­den A ja C NaN-arvot on täytetty saman sarakkeen edel­tä­vil­lä arvoilla. Koska sa­rak­kees­sa B ei ollut edeltävää arvoa riville 0, NaN-arvo on säi­ly­tet­ty:

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

Käyt­tä­mäl­lä taak­se­päin täyt­tä­mis­me­ne­tel­mää bfill riveille

NaN-arvot voidaan myös täyttää niiden rivin sijainnin pe­rus­teel­la seu­raa­vil­la arvoilla. Tätä varten sinun on käy­tet­tä­vä bfill me­ne­tel­mää ja ase­tet­ta­va axis arvoon 1:

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

Tu­lok­ses­ta näkyy, että rivien 0 ja 2 NaN-arvot on korvattu niiden jäl­kei­sil­lä arvoilla samassa rivissä. En­sim­mäi­sen rivin NaN-arvo pysyy kuitenkin samana, koska se on kyseisen rivin viimeinen arvo:

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
Siirry pää­va­lik­koon