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

Με τη συνάρτηση Python pandas `DataFrame.groupby()`, μπορείτε να **ομαδοποιήσετε δεδομένα με βάση συγκεκριμένα κριτήρια** και να εκτελέσετε διάφορες συγκεντρώσεις και μετασχηματισμούς στα δεδομένα.

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

Το Pandas `groupby()` δέχεται **έως και τέσσερις παραμέτρους**. Η βασική σύνταξη έχει ως εξής:

```python
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
```

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

<table>
  <thead>
    <tr>
      <th><strong>Παράμετρος</strong></th>
      <th><strong>Περιγραφή</strong></th>
      <th><strong>Προεπιλεγμένη τιμή</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`by`</td>
      <td>Κλειδί ή λίστα κλειδιών Python για ομαδοποίηση. Δεν πρέπει να συνδυάζεται με `level`.</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Χρησιμοποιείται για το MultiIndex για τον καθορισμό ενός ή περισσότερων επιπέδων ομαδοποίησης.</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`as_index`</td>
      <td>Εάν `True`, τα κλειδιά ομάδας ορίζονται ως δείκτης του DataFrame που προκύπτει.</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`group_keys`</td>
      <td>Εάν `True`, τα κλειδιά ομάδας περιλαμβάνονται στον δείκτη των ομάδων.</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`dropna`</td>
      <td>Καθορίζει εάν θα εξαιρούνται οι ομάδες με τιμές NaN.</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

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

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

### Ομαδοποίηση και συγκέντρωση

Παρακάτω ακολουθεί ένα παράδειγμα συνόλου δεδομένων πωλήσεων που περιέχει πληροφορίες σχετικά με την ημερομηνία πώλησης, το προϊόν που πωλήθηκε και την ποσότητα που πωλήθηκε:

```python
import pandas as pd
# Sample sales dataset
data = {
    'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Product': ['A', 'B', 'A', 'B', 'A'],
    'Quantity': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(data)
print(df)
```

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

```none
Date Product  Quantity
0  2021-01-01       A       10
1  2021-01-01       B       20
2  2021-01-02       A       15
3  2021-01-02       B       25
4  2021-01-03       A       10
```

Στη συνέχεια, θα ομαδοποιήσουμε το σύνολο δεδομένων ανά προϊόν χρησιμοποιώντας pandas `groupby()`. Έπειτα, θα υπολογίσουμε τη συνολική ποσότητα που πωλήθηκε για κάθε προϊόν χρησιμοποιώντας τη συνάρτηση `sum()`:

```none
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)
```

Το αποτέλεσμα δείχνει τον συνολικό αριθμό μονάδων που πωλήθηκαν για κάθε προϊόν:

```none
Product
A    35
B    45
Name: Quantity, dtype: int64
```

### Πολλαπλές συγκεντρώσεις

Στο παρακάτω παράδειγμα, θα χρησιμοποιήσουμε ένα εκτεταμένο σύνολο δεδομένων που περιλαμβάνει επίσης τα έσοδα:

```python
data = {
    'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Product': ['A', 'B', 'A', 'B', 'A'],
    'Quantity': [10, 20, 15, 25, 10],
    'Revenue': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(data)
print(df)
```

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

```none
Date Product  Quantity  Revenue
0  2021-01-01       A       10      100
1  2021-01-01       B       20      200
2  2021-01-02       A       15      150
3  2021-01-02       B       25      250
4  2021-01-03       A       10      100
```

Χρησιμοποιώντας pandas `DataFrame.groupby()`, θα ομαδοποιήσουμε τα δεδομένα ανά προϊόν και στη συνέχεια θα χρησιμοποιήσουμε τη συνάρτηση `agg()` για να υπολογίσουμε τη συνολική ποσότητα και τα έσοδα, καθώς και τα μέσα έσοδα ανά προϊόν.

```none
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
    'Quantity': 'sum',
    'Revenue': ['sum', 'mean']
})
print(groups)
```

Εδώ είναι το αποτέλεσμα:

```none
Quantity Revenue        
          sum    sum    mean
Product                  
A          35    350  116.666667
B          45    450  225.000000
```


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