# Kaip valyti duomenis pandas naudojant dropna()

Python pandas `DataFrame.dropna()` funkcija naudojama pašalinti visas eilutes ar stulpelius, kuriuose yra trūkstamų verčių (NaN), iš DataFrame. Tai ypač svarbu **ruošiant ir valant duomenis**.

## Kokia yra pandas `dropna()` sintaksė?

`dropna()` funkcija priima **iki penkių parametrų**. Štai jos sintaksė:

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

### Svarbūs parametrai `dropna()`

**Parametrus** galite **naudoti, kad paveiktumėte** pandas `DataFrame.dropna()` funkcijos **veikimą**. Čia pateikiama svarbiausių parametrų apžvalga:

<table>
  <thead>
    <tr>
      <th><strong>Parametras</strong></th>
      <th><strong>Aprašymas</strong></th>
      <th><strong>Numatytasis vertė</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Nustato, ar bus pašalintos eilutės (0 arba `index`) ar stulpeliai (1 arba `columns`)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Nurodo, ar visos (`all`) ar tik kai kurios (`any`) reikšmės turi būti NaN.</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`thresh`</td>
      <td>Nurodo mažiausią ne NaN verčių skaičių, kurį turi turėti eilutė arba stulpelis, kad nebūtų pašalintas; negali būti derinamas su `how`</td>
      <td>pasirinktinai</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Nurodo, kurios eilutės ar stulpeliai turėtų būti laikomi</td>
      <td>pasirinktinai</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Nustato, ar operacija atliekama su originalia DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Jei `True`, likusi ašis pažymima nuo 0 iki n-1.</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Kaip naudoti pandas `DataFrame.dropna()`

Pandas `dropna()` naudojamas duomenims valyti prieš juos analizuojant. Trūkstamų verčių eilučių ar stulpelių pašalinimas padeda **išvengti** statistinių vertinimų **iškraipymų**. Kadangi trūkstamos vertės taip pat gali sukelti problemų vizualizuojant duomenis, šią funkciją **naudinga** taikyti **ir kuriant diagramas** bei ataskaitas.

### Eilučių su trūkstamomis reikšmėmis pašalinimas

Šiame pavyzdyje pažvelgsime į DataFrame, kuriame yra NaN reikšmės:

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

Duomenų rėmelis atrodo taip:

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

Toliau taikysime pandas `dropna()` funkciją:

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

Vykdant aukščiau pateiktą kodą gaunamas toks rezultatas:

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

Kadangi visos kitos eilutės turi NaN reikšmes, lieka tik nulinė ir trečioji eilutės.

### Stulpelių su trūkstamomis reikšmėmis pašalinimas

Panašiai, galite pašalinti stulpelius su trūkstamomis reikšmėmis, nustatydami parametrą `axis` į 1:

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

C stulpelis yra vienintelis likęs stulpelis, nes jis yra vienintelis, kuriame nėra NaN verčių:

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

### Naudojant `thresh`

Jei norite pašalinti eilutes, kuriose yra mažiau nei dvi ne NaN reikšmės, galite naudoti parametrą `thresh`:

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

Vykdant kodą gaunamas toks rezultatas:

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

1 eilutė nėra pašalinta iš išvesties, nes joje yra 2 ne NaN reikšmės (2,0 ir 10).

### Naudojant `subset`

`subset` parametras leidžia nurodyti stulpelius, kuriuose programa turi ieškoti trūkstamų verčių. Bus pašalintos tik tos eilutės, kurių nurodytuose stulpeliuose yra trūkstamų verčių.

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

Čia pašalinama tik antra eilutė. Pirmoje eilutėje esanti NaN reikšmė ignoruojama dėl parametro subset, kuris atsižvelgia tik į A stulpelį:

```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/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/python-pandas-dataframe-dropna/](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/python-pandas-dataframe-dropna/) for AI/LLM consumption.