Čo je pandas groupby() a ako ho používať
Pomocou funkcie Python pandas DataFrame.groupby() môžete zoskupiť údaje na základe konkrétnych kritérií a vykonávať rôzne agregácie a transformácie údajov.
Aká je syntax pre pandas DataFrame.groupby()?
Pandas groupby() prijíma až štyri parametre. Základná syntax je nasledovná:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonDôležité parametre pre groupby
| Parameter | Popis | Predvolená hodnota |
|---|---|---|
by
|
Kľúč alebo zoznam kľúčov Python na zoskupenie; nesmie sa kombinovať s level
|
None
|
level
|
Používa sa pre MultiIndex na určenie jednej alebo viacerých úrovní pre zoskupenie. | None
|
as_index
|
Ak je hodnota True, kľúče skupiny sú nastavené ako index výsledného DataFrame.
|
True
|
group_keys
|
Ak True, kľúče skupiny sú zahrnuté v indexe skupín.
|
True
|
dropna
|
Určuje, či sa majú vylúčiť skupiny s hodnotami NaN. | True
|
Ako používať pandas DataFrame.groupby()
Funkcia pandas groupby() je obzvlášť užitočná pri analýze a sumarizácii veľkých dátových súborov, kde pomáha identifikovať vzory alebo anomálie.
Zoskupovanie a agregovanie
Nižšie je uvedený príklad súboru údajov o predaji, ktorý obsahuje informácie o dátume predaja, predanom produkte a predanom množstve:
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)pythonVýsledný DataFrame vyzerá takto:
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Ďalej zoskupíme dátový súbor podľa produktu pomocou pandas groupby(). Potom vypočítame celkové množstvo predané pre každý produkt pomocou funkcie sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Výsledok ukazuje celkový počet predaných jednotiek pre každý produkt:
Product
A 35
B 45
Name: Quantity, dtype: int64Viacnásobné agregácie
V nasledujúcom príklade použijeme rozšírený súbor údajov, ktorý obsahuje aj tržby:
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 vyzerá takto:
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 100Pomocou pandas DataFrame.groupby() zoskupíme údaje podľa produktu a potom pomocou funkcie agg() vypočítame celkové množstvo a tržby, ako aj priemerné tržby na produkt.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Tu je výsledok:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000