Kas yra pandas groupby() ir kaip jį naudoti
Naudodami Python pandas DataFrame.groupby() funkciją, galite sugrupuoti duomenis pagal konkrečius kriterijus ir atlikti įvairius duomenų agregavimus ir transformavimus.
Kokia yra pandas DataFrame.groupby() sintaksė?
Pandas groupby() priima iki keturių parametrų. Pagrindinė sintaksė yra tokia:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonSvarbūs parametrai groupby
| Parametras | Aprašymas | Numatytasis vertė |
|---|---|---|
by
|
Raktas arba Python raktų sąrašas, pagal kurį grupuoti; negalima derinti su level
|
None
|
level
|
Naudojamas MultiIndex, norint nurodyti vieną ar daugiau grupuojamų lygių. | None
|
as_index
|
Jei True, grupės raktus nustato kaip gauto DataFrame indeksą.
|
True
|
group_keys
|
Jei True, grupės raktus įtraukiama į grupių indeksą.
|
True
|
dropna
|
Nurodo, ar reikia pašalinti grupes su NaN reikšmėmis. | True
|
Kaip naudoti pandas DataFrame.groupby()
Funkcija „pandas groupby() yra ypač naudinga analizuojant ir apibendrinant didelius duomenų rinkinius, padedant nustatyti modelius ar anomalijas.
Grupavimas ir agregavimas
Toliau pateikiamas pardavimo duomenų rinkinio pavyzdys, kuriame yra informacija apie pardavimo datą, parduotą produktą ir parduotą kiekį:
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)pythonGautas duomenų rėmelis atrodo taip:
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 10Toliau sugrupuosime duomenų rinkinį pagal produktus naudodami pandas groupby(). Tada apskaičiuosime bendrą kiekvieno produkto parduotą kiekį naudodami sum() funkciją:
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Rezultatas rodo bendrą kiekvieno produkto parduotų vienetų skaičių:
Product
A 35
B 45
Name: Quantity, dtype: int64Daugkartiniai sujungimai
Šiame pavyzdyje naudosime išplėstą duomenų rinkinį, kuris taip pat apima pajamas:
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)pythonDuomenų rėmelis atrodo taip:
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 100Naudodami pandas DataFrame.groupby(), sugrupuosime duomenis pagal produktus, tada naudodami agg() funkciją apskaičiuosime bendrą kiekį ir pajamas, taip pat vidutines pajamas pagal produktą.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Štai rezultatas:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000