# Kako očistiti podatke v pandas z dropna()

Funkcija Python pandas `DataFrame.dropna()` se uporablja za odstranjevanje vseh vrstic ali stolpcev, ki vsebujejo manjkajoče vrednosti (NaN), iz DataFrame. To je še posebej pomembno za **pripravo in čiščenje podatkov**.

## Kakšna je sintaksa za pandas `dropna()`?

Funkcija `dropna()` sprejme **do pet parametrov**. Tukaj je njena sintaksa:

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

### Pomembni parametri za `dropna()`

**S parametri** lahko **vplivate na delovanje** funkcije pandas `DataFrame.dropna()`. Tukaj je pregled najpomembnejših:

<table>
  <thead>
    <tr>
      <th><strong>Parameter</strong></th>
      <th><strong>Opis</strong></th>
      <th><strong>Privzeta vrednost</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Določa, ali bodo odstranjene vrstice (0 ali `index`) ali stolpci (1 ali `columns`).</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Določa, ali morajo biti vse (`all`) ali samo nekatere (`any`) vrednosti NaN.</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`thresh`</td>
      <td>Določa minimalno število vrednosti, ki niso NaN, ki jih mora imeti vrstica ali stolpec, da se ne odstrani; ni mogoče kombinirati z `how`</td>
      <td>neobvezno</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Določa, katere vrstice ali stolpce je treba upoštevati.</td>
      <td>neobvezno</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Določa, ali se operacija izvede na izvirnem DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Če je `True`, se preostala os označi od 0 do n-1.</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Kako uporabljati pandas `DataFrame.dropna()`

Pandas `dropna()` se uporablja za čiščenje podatkov pred njihovo analizo. Odstranjevanje vrstic ali stolpcev z manjkajočimi vrednostmi pomaga **preprečiti pristranskost** v statističnih ocenah. Ker lahko manjkajoče vrednosti povzročajo tudi težave pri vizualizaciji podatkov, je uporaba te funkcije **koristna** tudi **pri ustvarjanju grafikonov** in poročil.

### Odstranjevanje vrstic z manjkajočimi vrednostmi

V naslednjem primeru si bomo ogledali DataFrame, ki vsebuje vrednosti NaN:

```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 izgleda takole:

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

Nato bomo uporabili funkcijo pandas `dropna()`:

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

Izvedba zgornjega kode da naslednji rezultat:

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

Ker vse druge vrstice vsebujejo vrednosti NaN, ostanejo le ničta in tretja vrstica.

### Odstranjevanje stolpcev z manjkajočimi vrednostmi

Podobno lahko odstranite stolpce z manjkajočimi vrednostmi, tako da nastavite parameter `axis` na 1:

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

Stolpec C je edini stolpec, ki ostane, saj je edini, ki ne vsebuje vrednosti NaN:

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

### Uporaba `thresh`

Če želite odstraniti vrstice, ki vsebujejo manj kot dve vrednosti, ki niso NaN, lahko uporabite parameter `thresh`:

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

Izvedba kode da naslednji izpis:

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

Vrstica 1 ni odstranjena iz izhoda, ker vsebuje 2 vrednosti, ki niso NaN (2,0 in 10).

### Uporaba `subset`

Parameter `subset` omogoča določitev stolpcev, v katerih naj program poišče manjkajoče vrednosti. Odstranjene bodo samo vrstice, ki vsebujejo manjkajoče vrednosti v določenih stolpcih.

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

Tukaj je odstranjena samo druga vrstica. Vrednost NaN v prvi vrstici je prezrta zaradi parametra podskupine, ki upošteva samo stolpec 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/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-pandas-dataframe-dropna/](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/python-pandas-dataframe-dropna/) for AI/LLM consumption.