# Πώς να καθαρίσετε δεδομένα σε pandas με τη συνάρτηση dropna()

Η συνάρτηση Python pandas `DataFrame.dropna()` χρησιμοποιείται για την αφαίρεση όλων των σειρών ή στηλών που περιέχουν ελλείπουσες τιμές (NaN) από ένα DataFrame. Αυτό την καθιστά ιδιαίτερα σημαντική για **την προετοιμασία και τον καθαρισμό των δεδομένων**.

## Ποια είναι η σύνταξη για το pandas `dropna()`;

Η συνάρτηση `dropna()` δέχεται **έως και πέντε παραμέτρους**. Ακολουθεί η σύνταξή της:

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

### Σημαντικές παράμετροι για `dropna()`

Μπορείτε **να χρησιμοποιήσετε παραμέτρους για να επηρεάσετε τη συμπεριφορά** της συνάρτησης pandas `DataFrame.dropna()`. Ακολουθεί μια επισκόπηση των πιο σημαντικών παραμέτρων:

<table>
  <thead>
    <tr>
      <th><strong>Παράμετρος</strong></th>
      <th><strong>Περιγραφή</strong></th>
      <th><strong>Προεπιλεγμένη τιμή</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Καθορίζει αν θα αφαιρεθούν σειρές (0 ή `index`) ή στήλες (1 ή `columns`)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Καθορίζει αν όλες (`all`) ή μόνο μερικές (`any`) τιμές πρέπει να είναι NaN.</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`thresh`</td>
      <td>Καθορίζει τον ελάχιστο αριθμό τιμών που δεν είναι NaN που πρέπει να έχει μια σειρά ή στήλη για να μην αφαιρεθεί. Δεν μπορεί να συνδυαστεί με `how`.</td>
      <td>προαιρετικό</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Καθορίζει ποιες σειρές ή στήλες πρέπει να θεωρούνται</td>
      <td>προαιρετικές</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Καθορίζει εάν η λειτουργία εκτελείται στο αρχικό DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Εάν `True`, ο υπόλοιπος άξονας επισημαίνεται από 0 έως n-1</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Πώς να χρησιμοποιήσετε pandas `DataFrame.dropna()`

Το Pandas `dropna()` χρησιμοποιείται για τον καθαρισμό των δεδομένων πριν από την ανάλυσή τους. Η αφαίρεση σειρών ή στηλών με ελλείπουσες τιμές βοηθά στην **αποφυγή μεροληψιών** στις στατιστικές αξιολογήσεις. Δεδομένου ότι οι ελλείπουσες τιμές μπορούν επίσης να οδηγήσουν σε προβλήματα με την οπτικοποίηση των δεδομένων, η χρήση της λειτουργίας είναι επίσης **επωφελής κατά τη δημιουργία γραφημάτων** και αναφορών.

### Αφαίρεση σειρών με ελλείπουσες τιμές

Στο παρακάτω παράδειγμα, θα εξετάσουμε ένα DataFrame που περιέχει τιμές 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 έχει την εξής μορφή:

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

Στη συνέχεια, θα εφαρμόσουμε τη συνάρτηση pandas `dropna()`:

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

Η εκτέλεση του παραπάνω κώδικα παράγει το ακόλουθο αποτέλεσμα:

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

Δεδομένου ότι όλες οι άλλες σειρές περιέχουν τιμές NaN, παραμένουν μόνο η μηδενική και η τρίτη σειρά.

### Αφαίρεση στηλών με ελλείπουσες τιμές

Ομοίως, μπορείτε να αφαιρέσετε στήλες με ελλείπουσες τιμές ρυθμίζοντας την παράμετρο `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 είναι η μόνη στήλη που παραμένει, καθώς είναι η μόνη που δεν περιέχει τιμές NaN:

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

### Χρήση `thresh`

Εάν θέλετε να καταργήσετε σειρές που περιέχουν λιγότερες από δύο τιμές που δεν είναι NaN, μπορείτε να χρησιμοποιήσετε την παράμετρο `thresh`:

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

Η εκτέλεση του κώδικα παράγει το ακόλουθο αποτέλεσμα:

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

Η σειρά 1 δεν αφαιρείται από την έξοδο επειδή περιέχει 2 τιμές που δεν είναι NaN (2,0 και 10).

### Χρήση `subset`

Η παράμετρος `subset` σας επιτρέπει να καθορίσετε τις στήλες στις οποίες το πρόγραμμα θα αναζητήσει τις ελλείπουσες τιμές. Μόνο οι σειρές που περιέχουν ελλείπουσες τιμές στις στήλες που έχουν καθοριστεί θα αφαιρεθούν.

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

Εδώ, αφαιρείται μόνο η δεύτερη σειρά. Η τιμή NaN στην πρώτη σειρά αγνοείται λόγω της παραμέτρου υποσύνολου, η οποία λαμβάνει υπόψη μόνο τη στήλη Α:

```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/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe-dropna/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe-dropna/) for AI/LLM consumption.