# Kuinka puhdistaa dataa pandas-kirjastossa dropna()-funktiolla

Python pandas `DataFrame.dropna()` -funktiota käytetään poistamaan kaikki rivit tai sarakkeet, jotka sisältävät puuttuvia arvoja (NaN) DataFrame-taulukosta. Tämä tekee siitä erityisen tärkeän **datan valmistelussa ja puhdistamisessa**.

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

`dropna()` -funktio hyväksyy **enintään viisi parametria**. Sen syntaksi on seuraava:

```python
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)
```

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

Voit **käyttää parametreja vaikuttamaan** pandas `DataFrame.dropna()` -funktion **toimintaan**. Tässä on yhteenveto tärkeimmistä parametreista:

<table>
  <thead>
    <tr>
      <th><strong>Parametri</strong></th>
      <th><strong>Kuvaus</strong></th>
      <th><strong>Oletusarvo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Määrittää, poistetaanko rivejä (0 tai `index`) vai sarakkeita (1 tai `columns`)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Määrittää, onko kaikkien (`all`) vai vain joidenkin (`any`) arvojen oltava NaN.</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`thresh`</td>
      <td>Määrittää, kuinka monta ei-NaN-arvoa rivillä tai sarakkeessa on oltava, jotta se ei poisteta; ei voi yhdistää kohtaan `how`</td>
      <td>valinnainen</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Määrittää, mitkä rivit tai sarakkeet on otettava huomioon</td>
      <td>valinnainen</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Määrittää, suoritetaanko operaatio alkuperäisessä DataFrame-kehyksessä.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Jos `True`, jäljellä oleva akseli nimetään 0:sta n-1:een.</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Kuinka käyttää pandas `DataFrame.dropna()`

Pandas `dropna()` käytetään tietojen puhdistamiseen ennen niiden analysointia. Puuttuvia arvoja sisältävien rivien tai sarakkeiden poistaminen auttaa **estämään** tilastollisten arvioiden **vääristymistä**. Koska puuttuvat arvot voivat aiheuttaa ongelmia myös tietojen visualisoinnissa, tämän toiminnon käyttö on **edullista** myös **kaavioiden** ja raporttien **luomisessa**.

### Puuttuvia arvoja sisältävien rivien poistaminen

Seuraavassa esimerkissä tarkastelemme DataFrame-taulukkoa, joka sisältää NaN-arvoja:

```python
import pandas as pd
import numpy as np
# Creating a DataFrame with sample data
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df)
```

DataFrame näyttää tältä:

```none
A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  NaN  11
3  4.0  8.0  12
```

Seuraavaksi sovellamme pandas `dropna()` -funktiota:

```python
## Remove all rows that contain at least one NaN value
df_cleaned = df.dropna()
print(df_cleaned)
```

Yllä olevan koodin suorittaminen tuottaa seuraavan tuloksen:

```none
A    B  C
0  1.0  5.0  9
3  4.0  8.0 12
```

Koska kaikki muut rivit sisältävät NaN-arvoja, vain nollas ja kolmas rivi jäävät jäljelle.

### Puuttuvia arvoja sisältävien sarakkeiden poistaminen

Vastaavasti voit poistaa sarakkeet, joissa on puuttuvia arvoja, asettamalla parametrin `axis` arvoksi 1:

```python
## Remove all columns that contain at least one NaN value
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
```

Sarakkeesta C jää jäljelle ainoastaan yksi sarake, koska se on ainoa, joka ei sisällä NaN-arvoja:

```none
C
0   9
1  10
2  11
3  12
```

### Käyttämällä `thresh`

Jos haluat poistaa rivit, jotka sisältävät vähemmän kuin kaksi ei-NaN-arvoa, voit käyttää parametria `thresh`:

```python
## Only keeps rows that have 2 or more non-NaN values
df_thresh = df.dropna(thresh=2)
print(df_thresh)
```

Koodin suorittaminen tuottaa seuraavan tuloksen:

```none
A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
```

Rivi 1 ei poisteta tulosteesta, koska se sisältää 2 ei-NaN-arvoa (2,0 ja 10).

### Käyttämällä `subset`

Parametrilla `subset` voit määrittää sarakkeet, joista ohjelma etsii puuttuvia arvoja. Vain rivit, jotka sisältävät puuttuvia arvoja määritetyissä sarakkeissa, poistetaan.

```python
## Removes all rows where column A contains a NaN value
df_subset = df.dropna(subset=['A'])
print(df_subset)
```

Tässä vain toinen rivi poistetaan. Ensimmäisen rivin NaN-arvo ohitetaan, koska osajoukko-parametri ottaa huomioon vain sarakkeen A:

```none
A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
```


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