Co je pandas groupby() a jak jej používat
Pomocí funkce Python pandas DataFrame.groupby() můžete seskupovat data na základě konkrétních kritérií a provádět různé agregace a transformace dat.
Jaká je syntaxe pro pandas DataFrame.groupby()?
Pandas groupby() přijímá až čtyři parametry. Základní syntaxe je následující:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonDůležité parametry pro groupby
| Parametr | Popis | Výchozí hodnota |
|---|---|---|
by
|
Klíč nebo seznam klíčů Pythonu pro seskupení; nelze kombinovat s level
|
None
|
level
|
Používá se pro MultiIndex k určení jedné nebo více úrovní pro seskupení. | None
|
as_index
|
Pokud je hodnota True, klíče skupiny jsou nastaveny jako index výsledného DataFrame.
|
True
|
group_keys
|
Pokud True, klíče skupiny jsou zahrnuty do indexu skupin.
|
True
|
dropna
|
Určuje, zda mají být vyloučeny skupiny s hodnotami NaN. | True
|
Jak používat pandas DataFrame.groupby()
Funkce pandas groupby() je obzvláště užitečná pro analýzu a shrnutí velkých datových sad, pomáhá identifikovat vzorce nebo anomálie.
Seskupování a agregace
Níže je uveden příklad datového souboru o prodeji obsahující informace o datu prodeje, prodaném produktu a prodaném množství:
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 vypadá 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 10Dále seskupíme datový soubor podle produktů pomocí pandas groupby(). Poté vypočítáme celkové množství prodané pro každý produkt pomocí funkce sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Výsledek ukazuje celkový počet prodaných jednotek pro každý produkt:
Product
A 35
B 45
Name: Quantity, dtype: int64Více agregací
V následujícím příkladu použijeme rozšířený datový soubor, který zahrnuje také 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 vypadá 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 100Pomocí pandas DataFrame.groupby() seskupíme data podle produktů a poté pomocí funkce agg() vypočítáme celkové množství a tržby, stejně jako průměrné tržby na produkt.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Tady je výsledek:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000