Hva er pandas groupby() og hvordan bruker man det?
Med Python pandas DataFrame.groupby() -funksjonen kan du gruppere data basert på spesifikke kriterier og utføre ulike aggregeringer og transformasjoner av dataene.
Hva er syntaksen for pandas DataFrame.groupby()?
Pandas groupby() aksepterer opptil fire parametere. Den grunnleggende syntaksen er som følger:
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)pythonViktige parametere for groupby
| Parameter | Beskrivelse | Standardverdi |
|---|---|---|
by
|
Nøkkel eller Python-liste over nøkler som skal grupperes etter; skal ikke kombineres med level
|
None
|
level
|
Brukes for MultiIndex for å spesifisere ett eller flere nivåer for gruppering. | None
|
as_index
|
Hvis True, blir gruppekodene angitt som indeksen for den resulterende DataFrame.
|
True
|
group_keys
|
Hvis True, blir gruppekodene inkludert i indeksen for gruppene.
|
True
|
dropna
|
Angir om grupper med NaN-verdier skal ekskluderes. | True
|
Hvordan bruke pandas DataFrame.groupby()
Funksjonen pandas groupby() er spesielt nyttig for å analysere og oppsummere store datasett, og hjelper til med å identifisere mønstre eller avvik.
Gruppering og aggregering
Nedenfor er et eksempel på et salgsdatasett som inneholder informasjon om salgsdato, solgt produkt og solgt mengde:
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 resulterende DataFrame ser slik ut:
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 10Deretter grupperer vi datasettet etter produkt ved hjelp av pandas groupby(). Deretter beregner vi det totale antallet solgte enheter for hvert produkt ved hjelp av funksjonen sum():
# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)Resultatet viser det totale antallet solgte enheter for hvert produkt:
Product
A 35
B 45
Name: Quantity, dtype: int64Flere aggregeringer
I det følgende eksemplet skal vi bruke et utvidet datasett som også inkluderer inntekter:
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 slik ut:
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 100Ved hjelp av pandas DataFrame.groupby() skal vi gruppere dataene etter produkt og deretter bruke funksjonen agg() til å beregne total mengde og omsetning, samt gjennomsnittlig omsetning per produkt.
# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
'Quantity': 'sum',
'Revenue': ['sum', 'mean']
})
print(groups)Her er resultatet:
Quantity Revenue
sum sum mean
Product
A 35 350 116.666667
B 45 450 225.000000