Ce este pandas groupby() și cum se utilizează
Cu funcția Python pandas DataFrame.groupby(), puteți grupa datele pe baza unor criterii specifice și puteți efectua diverse agregări și transformări ale datelor.
Care este sintaxa pentru pandas DataFrame.groupby()?
Pandas groupby() acceptă până la patru parametri. Sintaxa de bază este următoarea:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonParametri importanți pentru groupby
| Parametru | Descriere | Valoare implicită |
|---|---|---|
by
|
Cheie sau listă Python de chei pentru grupare; nu se combină cu level
|
None
|
level
|
Utilizat pentru MultiIndex pentru a specifica unul sau mai multe niveluri pentru grupare. | None
|
as_index
|
Dacă este True, cheile grupului sunt setate ca index al DataFrame-ului rezultat.
|
True
|
group_keys
|
Dacă True, cheile de grup sunt incluse în indexul grupurilor.
|
True
|
dropna
|
Specifică dacă se exclud grupurile cu valori NaN. | True
|
Cum se utilizează pandas DataFrame.groupby()
Funcția pandas groupby() este deosebit de utilă pentru analizarea și sintetizarea seturilor mari de date, ajutând la identificarea tiparelor sau anomaliilor.
Gruparea și agregarea
Mai jos este un exemplu de set de date privind vânzările, care conține informații despre data vânzării, produsul vândut și cantitatea vândută:
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)pythonDataFrame-ul rezultat arată astfel:
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 10Apoi, vom grupa setul de date în funcție de produs folosind pandas groupby(). Apoi, vom calcula cantitatea totală vândută pentru fiecare produs folosind funcția sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Rezultatul arată numărul total de unități vândute pentru fiecare produs:
Product
A 35
B 45
Name: Quantity, dtype: int64Agregări multiple
În exemplul următor, vom utiliza un set de date extins care include și veniturile:
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 arată astfel:
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 100Folosind pandas DataFrame.groupby(), vom grupa datele în funcție de produs și apoi vom utiliza funcția agg() pentru a calcula cantitatea totală și veniturile, precum și veniturile medii pe produs.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Iată rezultatul:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000