# Mikä on pandas groupby() ja miten sitä käytetään?

Python pandas `DataFrame.groupby()` -toiminnolla voit **ryhmitellä tietoja tiettyjen kriteerien perusteella** ja suorittaa erilaisia aggregointeja ja muunnoksia tietoihin.

## Mikä on pandas `DataFrame.groupby()`:n syntaksi?

Pandas `groupby()` hyväksyy **enintään neljä parametria**. Perussyntaksi on seuraava:

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

### Tärkeät parametrit `groupby`

<table>
  <thead>
    <tr>
      <th><strong>Parametri</strong></th>
      <th><strong>Kuvaus</strong></th>
      <th><strong>Oletusarvo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`by`</td>
      <td>Avain tai Python-luettelo avaimista, jotka ryhmitellään; ei saa yhdistää `level`kanssa</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Käytetään MultiIndexissä yhden tai useamman ryhmittelytason määrittämiseen.</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`as_index`</td>
      <td>Jos `True`, ryhmäavaimet asetetaan tuloksena olevan DataFrame-kehyksen indeksiksi.</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`group_keys`</td>
      <td>Jos `True`, ryhmäavaimet sisällytetään ryhmien indeksiin.</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`dropna`</td>
      <td>Määrittää, suljetaanko ryhmät, joissa on NaN-arvoja, pois.</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## Kuinka käyttää pandas `DataFrame.groupby()`

Pandas `groupby()` -funktio on erityisen hyödyllinen **suurten tietojoukkojen analysoinnissa ja tiivistämisessä**, sillä se auttaa tunnistamaan malleja tai poikkeamia.

### Ryhmittely ja aggregointi

Alla on esimerkki myyntitietokannasta, joka sisältää tietoja myyntipäivästä, myydystä tuotteesta ja myydystä määrästä:

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

Tuloksena oleva DataFrame näyttää tältä:

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

Seuraavaksi ryhmittelemme tietojoukon tuotteittain pandas `groupby()` avulla. Sitten laskemme kunkin tuotteen kokonaismyynnin `sum()` funktiolla:

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

Tuloksessa näkyy kunkin tuotteen myytyjen yksiköiden kokonaismäärä:

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

### Useita aggregointeja

Seuraavassa esimerkissä käytämme laajennettua tietojoukkoa, joka sisältää myös tulot:

```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 näyttää tältä:

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

Käyttämällä pandas `DataFrame.groupby()`-funktiota ryhmittelemme tiedot tuotteittain ja laskemme sitten `agg()` -funktiolla kokonaismäärän ja -tuoton sekä keskimääräisen tuoton tuotetta kohden.

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

Tässä on tulos:

```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/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-groupby/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-groupby/) for AI/LLM consumption.