# Hvordan rense data i pandas med dropna()

Python-funksjonen pandas `DataFrame.dropna()` brukes til å fjerne alle rader eller kolonner som inneholder manglende verdier (NaN) fra en DataFrame. Dette gjør den spesielt viktig for **å forberede og rense data**.

## Hva er syntaksen for pandas `dropna()`?

Funksjonen `dropna()` aksepterer **opptil fem parametere**. Her er syntaksen:

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

### Viktige parametere for `dropna()`

Du kan **bruke parametere til å påvirke oppførselen** til pand `DataFrame.dropna()` -funksjonen. Her er en oversikt over de viktigste:

<table>
  <thead>
    <tr>
      <th><strong>Parameter</strong></th>
      <th><strong>Beskrivelse</strong></th>
      <th><strong>Standardverdi</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Bestemmer om rader (0 eller `index`) eller kolonner (1 eller `columns`) skal fjernes</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Angir om alle (`all`) eller bare noen (`any`) verdier må være NaN.</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`thresh`</td>
      <td>Angir minimum antall ikke-NaN-verdier en rad eller kolonne må ha for å unngå å bli fjernet; kan ikke kombineres med `how`.</td>
      <td>valgfritt</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Angir hvilke rader eller kolonner som skal vurderes</td>
      <td>valgfritt</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Bestemmer om operasjonen skal utføres på den opprinnelige DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Hvis `True`, blir den gjenværende aksen merket fra 0 til n-1.</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Hvordan bruke pandas `DataFrame.dropna()`

Pandas `dropna()` brukes til å rense data før de analyseres. Fjerning av rader eller kolonner med manglende verdier bidrar til **å forhindre skjevheter** i statistiske evalueringer. Siden manglende verdier også kan føre til problemer med datavisualisering, er **det** også **en fordel** å bruke funksjonen **når man lager diagrammer** og rapporter.

### Fjerne rader med manglende verdier

I det følgende eksemplet skal vi se på en DataFrame som inneholder NaN-verdier:

```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 ser slik ut:

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

Neste skal vi bruke pandas `dropna()` -funksjonen:

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

Kjøring av koden ovenfor gir følgende resultat:

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

Siden alle de andre radene inneholder NaN-verdier, er det bare den nullte og tredje raden som gjenstår.

### Fjerne kolonner med manglende verdier

På samme måte kan du fjerne kolonner med manglende verdier ved å sette parameteren `axis` til 1:

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

Kolonne C er den eneste kolonnen som gjenstår, siden den er den eneste som ikke inneholder NaN-verdier:

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

### Bruker `thresh`

Hvis du vil fjerne rader som inneholder færre enn to ikke-NaN-verdier, kan du bruke parameteren `thresh`:

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

Kjøring av koden gir følgende utdata:

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

Rad 1 blir ikke fjernet fra utdataene fordi den inneholder to ikke-NaN-verdier (2,0 og 10).

### Bruker `subset`

Parameteren `subset` lar deg spesifisere kolonnene der programmet skal lete etter manglende verdier. Bare rader som inneholder manglende verdier i de angitte kolonnene, vil bli fjernet.

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

Her fjernes bare den andre raden. NaN-verdien i den første raden ignoreres på grunn av delmengdeparameteren, som bare tar hensyn til kolonne 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/nb-no/digitalguide/nettsteder/webutvikling/python-pandas-dataframe-dropna/](https://www.ionos.com/nb-no/digitalguide/nettsteder/webutvikling/python-pandas-dataframe-dropna/) for AI/LLM consumption.