Kaj je pandas groupby() in kako ga uporabljati
S funkcijo Python pandas DataFrame.groupby() lahko podatke razvrstite po določenih merilih in izvedete različne agregacije in preoblikovanja podatkov.
Kakšna je sintaksa za pandas DataFrame.groupby()?
Pandas groupby() sprejema do štiri parametre. Osnovna sintaksa je naslednja:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonPomembni parametri za groupby
| Parameter | Opis | Privzeta vrednost |
|---|---|---|
by
|
Ključ ali Pythonov seznam ključev za združevanje v skupine; ne sme se kombinirati s level
|
None
|
level
|
Uporablja se za MultiIndex za določitev ene ali več ravni za združevanje. | None
|
as_index
|
Če je True, so ključi skupine nastavljeni kot indeks končnega DataFrame-a.
|
True
|
group_keys
|
Če je True, so ključi skupin vključeni v indeks skupin.
|
True
|
dropna
|
Določa, ali naj se izključijo skupine z vrednostmi NaN. | True
|
Kako uporabljati pandas DataFrame.groupby()
Funkcija pandas groupby() je še posebej uporabna za analizo in povzemanje velikih podatkovnih nizov, saj pomaga pri prepoznavanju vzorcev ali anomalij.
Razvrščanje in združevanje
Spodaj je primer podatkovnega niza o prodaji, ki vsebuje informacije o datumu prodaje, prodanem izdelku in prodani količini:
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)pythonRezultatni DataFrame izgleda takole:
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 10Nato bomo podatkovni niz razvrstili po izdelkih z uporabo pandas groupby(). Nato bomo izračunali skupno prodano količino za vsak izdelek z uporabo funkcije sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Rezultat prikazuje skupno število prodanih enot za vsak izdelek:
Product
A 35
B 45
Name: Quantity, dtype: int64Večkratne agregacije
V naslednjem primeru bomo uporabili razširjen niz podatkov, ki vključuje tudi prihodke:
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 izgleda takole:
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 100Z uporabo pandas DataFrame.groupby() bomo podatke razvrstili po izdelkih in nato s funkcijo agg() izračunali skupno količino in prihodek ter povprečni prihodek na izdelek.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Tukaj je rezultat:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000