# Sådan renser du data i pandas med dropna()

Python-funktionen pandas `DataFrame.dropna()` bruges til at fjerne alle rækker eller kolonner, der indeholder manglende værdier (NaN) fra en DataFrame. Dette gør den særlig vigtig til **forberedelse og rensning af data**.

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

Funktionen `dropna()` accepterer **op til fem parametre**. Her er dens syntaks:

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

### Vigtige parametre for `dropna()`

Du kan **bruge parametre til at påvirke** funktionen pandas `DataFrame.dropna()` s **adfærd**. Her er en oversigt over de vigtigste:

<table>
  <thead>
    <tr>
      <th><strong>Parameter</strong></th>
      <th><strong>Beskrivelse</strong></th>
      <th><strong>Standardværdi</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Bestemmer, om rækker (0 eller `index`) eller kolonner (1 eller `columns`) skal fjernes</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Angiver, om alle (`all`) eller kun nogle (`any`) værdier skal være NaN.</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`thresh`</td>
      <td>Angiver det mindste antal ikke-NaN-værdier, som en række eller kolonne skal have for at undgå at blive fjernet; kan ikke kombineres med `how`</td>
      <td>valgfri</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Angiver, hvilke rækker eller kolonner der skal betragtes som</td>
      <td>valgfri</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Bestemmer, om operationen udføres på den oprindelige DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Hvis `True`, mærkes den resterende akse fra 0 til n-1</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Sådan bruges pandas `DataFrame.dropna()`

Pandas `dropna()` bruges til at rense data, før de analyseres. Fjernelsen af rækker eller kolonner med manglende værdier hjælper med at **forhindre skævheder** i statistiske evalueringer. Da manglende værdier også kan føre til problemer med datavisualisering, er **det** også **en fordel** at bruge funktionen, **når man opretter diagrammer** og rapporter.

### Fjernelse af rækker med manglende værdier

I det følgende eksempel ser vi på en DataFrame, der indeholder NaN-værdier:

```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 således ud:

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

Dernæst vil vi anvende pandas `dropna()` -funktionen:

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

Kørsel af ovenstående kode giver følgende resultat:

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

Da alle de andre rækker indeholder NaN-værdier, er det kun den nulte og tredje række, der er tilbage.

### Fjernelse af kolonner med manglende værdier

På samme måde kan du fjerne kolonner med manglende værdier ved at indstille 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 kolonne, der er tilbage, da det er den eneste, der ikke indeholder NaN-værdier:

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

### Brug af `thresh`

Hvis du vil fjerne rækker, der indeholder færre end to ikke-NaN-værdier, kan du bruge parameteren `thresh`:

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

Kørsel af koden giver følgende output:

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

Række 1 fjernes ikke fra outputtet, da den indeholder 2 ikke-NaN-værdier (2,0 og 10).

### Brug af `subset`

Med parameteren `subset` kan du angive de kolonner, hvor programmet skal søge efter manglende værdier. Kun rækker, der indeholder manglende værdier i de angivne kolonner, fjernes.

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

Her fjernes kun den anden række. NaN-værdien i den første række ignoreres på grund af undergruppe-parameteren, som kun tager kolonne A i betragtning:

```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/da-dk/digitalguide/websteder/webudvikling/python-pandas-dataframe-dropna/](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/python-pandas-dataframe-dropna/) for AI/LLM consumption.