# Τι είναι το 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.