Med Python pandas DataFrame.groupby() -funk­tio­nen kan du gruppere data baseret på spe­ci­fik­ke kriterier og udføre for­skel­li­ge ag­gre­ge­rin­ger og trans­for­ma­tio­ner af dataene.

Hvad er syntaksen for pandas DataFrame.groupby()?

Pandas groupby() ac­cep­te­rer op til fire parametre. Den grund­læg­gen­de syntaks er som følger:

DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
python

Vigtige parametre for groupby

Parameter Be­skri­vel­se Stan­dard­vær­di
by Nøgle eller Python-liste over nøgler, der skal grupperes efter; må ikke kom­bi­ne­res med level None
level Bruges til Mul­ti­In­dex til at angive et eller flere niveauer for grup­pe­ring. None
as_index Hvis True, indstil­les grup­pe­ko­der­ne som indeks for den re­sul­te­ren­de DataFrame. True
group_keys Hvis True, in­klu­de­res grup­pe­ko­der­ne i indeks for grupperne. True
dropna Angiver, om grupper med NaN-værdier skal udelades. True

Sådan bruges pandas DataFrame.groupby()

Funk­tio­nen pandas groupby() er særligt nyttig til analyse og sam­men­fat­ning af store datasæt, da den hjælper med at iden­ti­fi­ce­re mønstre eller af­vi­gel­ser.

Grup­pe­ring og ag­gre­ge­ring

Nedenfor ses et eksempel på et salgs­da­ta­sæt, der in­de­hol­der op­lys­nin­ger om salgsdato, solgt produkt og solgt mængde:

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)
python

Den re­sul­te­ren­de DataFrame ser således ud:

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       10

Dernæst grupperer vi da­ta­sæt­tet efter produkt ved hjælp af pandas groupby(). Derefter beregner vi det samlede solgte antal for hvert produkt ved hjælp af funk­tio­nen sum():

# Group by product and calculate the sum of the quantity sold
summe = df.groupby('Product')['Quantity'].sum()
print(total)

Re­sul­ta­tet viser det samlede antal solgte enheder for hvert produkt:

Product
A    35
B    45
Name: Quantity, dtype: int64

Flere ag­gre­ge­rin­ger

I det følgende eksempel bruger vi et udvidet datasæt, der også in­de­hol­der indtægter:

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)
python

DataFrame ser således ud:

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      100

Ved hjælp af pandas DataFrame.groupby() grupperer vi dataene efter produkt og bruger derefter funk­tio­nen agg() til at beregne den samlede mængde og omsætning samt den gen­nem­snit­li­ge omsætning pr. produkt.

# Group by product and apply multiple aggregations
groups = df.groupby('Product').agg({
    'Quantity': 'sum',
    'Revenue': ['sum', 'mean']
})
print(groups)

Her er re­sul­ta­tet:

Quantity Revenue        
          sum    sum    mean
Product                  
A          35    350  116.666667
B          45    450  225.000000
Gå til ho­ved­me­nu­en