Vad är pandas groupby() och hur använder man det?
Med funktionen Python pandas DataFrame.groupby() kan du gruppera data utifrån specifika kriterier och utföra olika aggregeringar och transformationer av data.
Vad är syntaxen för pandas DataFrame.groupby()?
Pandas groupby() accepterar upp till fyra parametrar. Den grundläggande syntaxen är följande:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonViktiga parametrar för groupby
| Parameter | Beskrivning | Standardvärde |
|---|---|---|
by
|
Nyckel eller Python-lista med nycklar att gruppera efter; får inte kombineras med level
|
None
|
level
|
Används för MultiIndex för att ange en eller flera nivåer för gruppering. | None
|
as_index
|
Om True, anges gruppnycklarna som index för den resulterande DataFrame.
|
True
|
group_keys
|
Om True, inkluderas gruppnycklarna i indexet för grupperna.
|
True
|
dropna
|
Anger om grupper med NaN-värden ska exkluderas. | True
|
Hur man använder pandas DataFrame.groupby()
Funktionen pandas groupby() är särskilt användbar för att analysera och sammanfatta stora datamängder, vilket hjälper till att identifiera mönster eller avvikelser.
Gruppering och aggregering
Nedan följer ett exempel på en försäljningsdatabas som innehåller information om försäljningsdatum, såld produkt och såld kvantitet:
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)pythonDen resulterande DataFrame ser ut så här:
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ärefter grupperar vi datasetet efter produkt med hjälp av pandas groupby(). Sedan beräknar vi den totala sålda kvantiteten för varje produkt med hjälp av funktionen sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Resultatet visar det totala antalet sålda enheter för varje produkt:
Product
A 35
B 45
Name: Quantity, dtype: int64Flera aggregeringar
I följande exempel kommer vi att använda en utökad dataset som även inkluderar intäkter:
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 ser ut så här:
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 100Med hjälp av pandas DataFrame.groupby() kommer vi att gruppera data efter produkt och sedan använda funktionen agg() för att beräkna den totala kvantiteten och intäkterna, samt den genomsnittliga intäkten per produkt.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Här är resultatet:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000