# Τι είναι το Pandas fillna() και πώς χρησιμοποιείται

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

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

Η συνάρτηση `fillna()` δέχεται **έως και πέντε παραμέτρους** και έχει την ακόλουθη δομή:

```python
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
```

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

Η συμπεριφορά της συνάρτησης `DataFrame.fillna()` μπορεί να ρυθμιστεί χρησιμοποιώντας διάφορες παραμέτρους:

<table>
  <thead>
    <tr>
      <th><strong>Παράμετρος</strong></th>
      <th><strong>Περιγραφή</strong></th>
      <th><strong>Προεπιλεγμένη τιμή</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`value`</td>
      <td>Μια σκαλαρική τιμή ή ένα λεξικό (ή σειρά) για την αντικατάσταση των NaN</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`method`</td>
      <td>Καθορίζει τη μέθοδο πλήρωσης: πλήρωση προς τα εμπρός (`ffill`) ή πλήρωση προς τα πίσω (`bfill`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Καθορίζει σε ποιον άξονα θα εκτελεστεί η λειτουργία (0 ή `index` για σειρές, 1 ή `columns` για στήλες)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Εάν είναι `True`, οι αλλαγές γίνονται απευθείας στο αρχικό DataFrame.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`limit`</td>
      <td>Ένας ακέραιος αριθμός που περιορίζει τον αριθμό των τιμών NaN που θα αντικατασταθούν.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

Note Στις μελλοντικές εκδόσεις του Pandas, η παράμετρος `method` **πιθανότατα δεν** θα **υποστηρίζεται πλέον**. Εάν αυτό συμβεί, μπορείτε να βασιστείτε στις παραμέτρους `obj.ffill()` ή `obj.bfill()`, καθώς αυτές οι συναρτήσεις έχουν το ίδιο αποτέλεσμα με την παράμετρο `method`.

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

Η συνάρτηση Pandas `fillna()` μπορεί να χρησιμοποιηθεί με διάφορους τρόπους:

### Αντικατάσταση τιμών NaN με μια σταθερή τιμή

Αρχικά, ας δημιουργήσουμε ένα DataFrame:

```python
import pandas as pd
# Sample DataFrame with different values
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
```

Το DataFrame έχει την εξής μορφή:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
```

Note Στις pandas, η τιμή `None` στα DataFrames και Series ερμηνεύεται ως `NaN`.

Για να αντικαταστήσετε τις ελλείπουσες τιμές με 0, μπορείτε να χρησιμοποιήσετε τη συνάρτηση pandas `fillna()`:

```python
# Replacing missing values with zero
df_filled = df.fillna(0)
print(df_filled)
```

Το αποτέλεσμα είναι ότι κάθε τιμή NaN έχει αντικατασταθεί με 0:

```none
A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0
```

### Χρησιμοποιώντας τη μέθοδο προώθησης πλήρωσης `ffill`

Αν θέλετε να συμπληρώσετε τις τιμές NaN με την τιμή που προηγείται άμεσα αυτών στη στήλη όπου βρίσκονται, μπορείτε να περάσετε τη μέθοδο `ffill` ως παράμετρο:

```python
# Replace all NaN values with the value that precedes them
df_ffill = df.fillna(method='ffill')
print(df_ffill)
```

Σε αυτό το παράδειγμα, οι τιμές NaN στις στήλες A και C έχουν συμπληρωθεί με τις προηγούμενες τιμές στην ίδια στήλη. Δεδομένου ότι δεν υπήρχε προηγούμενη τιμή στη στήλη B για τη σειρά 0, η τιμή NaN διατηρείται:

```none
A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0
```

### Χρησιμοποιώντας τη μέθοδο οπισθοδρόμησης `bfill` για σειρές

Οι τιμές NaN μπορούν επίσης να συμπληρωθούν με διαδοχικές τιμές με βάση τη θέση τους στη σειρά. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε τη μέθοδο `bfill` και να ορίσετε την παράμετρο `axis` σε 1:

```python
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
```

Το αποτέλεσμα δείχνει ότι οι τιμές NaN στις σειρές 0 και 2 έχουν αντικατασταθεί από τις τιμές που ακολουθούν στην ίδια σειρά. Η τιμή NaN στην πρώτη σειρά, ωστόσο, παραμένει η ίδια, επειδή είναι η τελευταία τιμή σε αυτή τη σειρά:

```none
A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
```


This is a markdown version of: [https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe-fillna/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe-fillna/) for AI/LLM consumption.