# Mikä on Pandas fillna() ja miten sitä käytetään

Python pandas `DataFrame.fillna()` -funktiota käytetään **korvaamaan puuttuvat arvot DataFrame-kehyksessä**. Tämä voi auttaa yksinkertaistamaan tietojen puhdistamisprosesseja tai olla hyödyllinen työkalu analyyseja suoritettaessa.

## Mikä on pandas `fillna()`:n syntaksi?

`fillna()` hyväksyy **enintään viisi parametria** ja on rakennettu seuraavasti:

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

### Tärkeät parametrit `fillna()`

`DataFrame.fillna()` funktion toimintaa voidaan säätää useilla parametreilla:

<table>
  <thead>
    <tr>
      <th><strong>Parametri</strong></th>
      <th><strong>Kuvaus</strong></th>
      <th><strong>Oletusarvo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`value`</td>
      <td>Skaalaarinen arvo tai sanakirja (tai sarja), joka korvaa NaN-arvot</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`method`</td>
      <td>Määrittää täyttömenetelmän; eteenpäin täyttö (`ffill`) tai taaksepäin täyttö (`bfill`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Määrittää, millä akselilla operaatio suoritetaan (0 tai `index` riveille, 1 tai `columns` sarakkeille)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Jos `True`, muutokset tehdään suoraan alkuperäiseen DataFrame-taulukkoon.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`limit`</td>
      <td>Kokonaisluku, joka rajoittaa korvattavien NaN-arvojen määrää.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

Huomio Pandasin tulevissa versioissa parametria `method` **ei todennäköisesti enää tueta**. Jos näin tapahtuu, voit käyttää sen sijaan parametria `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 korvaaminen kiinteällä arvolla

Luodaan ensin DataFrame:

```python
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)
```

DataFrame näyttää tältä:

```none
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-ohjelmistossa DataFrames- ja Series-muuttujien arvo `None` tulkitaan arvoksi `NaN`.

Puuttuvat arvot voidaan korvata nollilla käyttämällä pandas `fillna()` -funktiota:

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

Tuloksena jokainen NaN-arvo on korvattu arvolla 0:

```none
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äyttämisen menetelmän käyttö `ffill`

Jos haluat täyttää NaN-arvot arvolla, joka sijaitsee välittömästi niiden edessä sarakkeessa, jossa ne sijaitsevat, voit välittää `ffill` parametrina:

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

Tässä esimerkissä sarakkeiden A ja C NaN-arvot on täytetty saman sarakkeen edeltävillä arvoilla. Koska sarakkeessa B ei ollut edeltävää arvoa riville 0, NaN-arvo on säilytetty:

```none
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äyttämällä taaksepäin täyttämismenetelmää `bfill` riveille

NaN-arvot voidaan myös täyttää niiden rivin sijainnin perusteella seuraavilla arvoilla. Tätä varten sinun on käytettävä `bfill` menetelmää ja asetettava `axis` arvoon 1:

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

Tuloksesta näkyy, että rivien 0 ja 2 NaN-arvot on korvattu niiden jälkeisillä arvoilla samassa rivissä. Ensimmäisen rivin NaN-arvo pysyy kuitenkin samana, koska se on kyseisen rivin viimeinen arvo:

```none
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
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-fillna/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-fillna/) for AI/LLM consumption.