Python pandas DataFrame.groupby() -toi­min­nol­la voit ryh­mi­tel­lä tietoja tiettyjen kri­tee­rien pe­rus­teel­la ja suorittaa erilaisia aggre­goin­te­ja ja muun­nok­sia tietoihin.

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

Pandas groupby() hyväksyy enintään neljä pa­ra­met­ria. Pe­rus­syn­tak­si on seuraava:

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

Tärkeät pa­ra­met­rit groupby

Parametri Kuvaus Ole­tusar­vo
by Avain tai Python-luettelo avaimista, jotka ryh­mi­tel­lään; ei saa yhdistää levelkanssa None
level Käytetään Mul­tiIn­dexis­sä yhden tai useamman ryh­mit­te­ly­ta­son mää­rit­tä­mi­seen. None
as_index Jos True, ryh­mä­avai­met asetetaan tuloksena olevan DataFrame-kehyksen in­dek­sik­si. True
group_keys Jos True, ryh­mä­avai­met si­säl­ly­te­tään ryhmien indeksiin. True
dropna Määrittää, sul­je­taan­ko ryhmät, joissa on NaN-arvoja, pois. True

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

Pandas groupby() -funktio on erityisen hyö­dyl­li­nen suurten tie­to­jouk­ko­jen ana­ly­soin­nis­sa ja tii­vis­tä­mi­ses­sä, sillä se auttaa tun­nis­ta­maan malleja tai poik­kea­mia.

Ryh­mit­te­ly ja aggre­goin­ti

Alla on esimerkki myyn­ti­tie­to­kan­nas­ta, joka sisältää tietoja myyn­ti­päi­väs­tä, myydystä tuot­tees­ta ja myydystä määrästä:

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

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

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

Seu­raa­vak­si ryh­mit­te­lem­me tie­to­jou­kon tuot­teit­tain pandas groupby() avulla. Sitten laskemme kunkin tuotteen ko­ko­nais­myyn­nin sum() funk­tiol­la:

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

Tu­lok­ses­sa näkyy kunkin tuotteen myytyjen yk­si­köi­den ko­ko­nais­mää­rä:

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

Useita aggre­goin­te­ja

Seu­raa­vas­sa esi­mer­kis­sä käytämme laa­jen­net­tua tie­to­jouk­koa, joka sisältää myös tulot:

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

DataFrame näyttää tältä:

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äyt­tä­mäl­lä pandas DataFrame.groupby()-funktiota ryh­mit­te­lem­me tiedot tuot­teit­tain ja laskemme sitten agg() -funk­tiol­la ko­ko­nais­mää­rän ja -tuoton sekä kes­ki­mää­räi­sen tuoton tuotetta kohden.

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

Tässä on tulos:

Quantity Revenue        
          sum    sum    mean
Product                  
A          35    350  116.666667
B          45    450  225.000000
Siirry pää­va­lik­koon