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:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonTärkeät parametrit groupby
| Parametri | Kuvaus | Oletusarvo |
|---|---|---|
by
|
Avain tai Python-luettelo avaimista, jotka ryhmitellään; ei saa yhdistää levelkanssa
|
None
|
level
|
Käytetään MultiIndexissä yhden tai useamman ryhmittelytason määrittämiseen. | None
|
as_index
|
Jos True, ryhmäavaimet asetetaan tuloksena olevan DataFrame-kehyksen indeksiksi.
|
True
|
group_keys
|
Jos True, ryhmäavaimet sisällytetään ryhmien indeksiin.
|
True
|
dropna
|
Määrittää, suljetaanko ryhmät, joissa on NaN-arvoja, pois. | True
|
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ä:
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)pythonTuloksena 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 10Seuraavaksi ryhmittelemme tietojoukon tuotteittain pandas groupby() avulla. Sitten laskemme kunkin tuotteen kokonaismyynnin sum() funktiolla:
# 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ä:
Product
A 35
B 45
Name: Quantity, dtype: int64Useita aggregointeja
Seuraavassa esimerkissä käytämme laajennettua tietojoukkoa, 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)pythonDataFrame 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 100Kä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.
# 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