Naudodami Python pandas DataFrame.groupby() funkciją, galite su­gru­puo­ti duomenis pagal konk­re­čius kri­te­ri­jus ir atlikti įvairius duomenų ag­re­ga­vi­mus ir trans­for­ma­vi­mus.

Kokia yra pandas DataFrame.groupby() sintaksė?

Pandas groupby() priima iki keturių parametrų. Pag­rin­di­nė sintaksė yra tokia:

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

Svarbūs pa­ra­met­rai groupby

Pa­ra­met­ras Aprašymas Nu­ma­ty­ta­sis vertė
by Raktas arba Python raktų sąrašas, pagal kurį grupuoti; negalima derinti su level None
level Nau­do­ja­mas Mul­tiIn­dex, norint nurodyti vieną ar daugiau gru­puo­ja­mų lygių. None
as_index Jei True, grupės raktus nustato kaip gauto DataFrame indeksą. True
group_keys Jei True, grupės raktus įtrau­kia­ma į grupių indeksą. True
dropna Nurodo, ar reikia pašalinti grupes su NaN reikš­mė­mis. True

Kaip naudoti pandas DataFrame.groupby()

Funkcija „pandas groupby() yra ypač naudinga ana­li­zuo­jant ir api­bend­ri­nant didelius duomenų rinkinius, padedant nustatyti modelius ar ano­ma­li­jas.

Gru­pa­vi­mas ir ag­re­ga­vi­mas

Toliau pa­tei­kia­mas pardavimo duomenų rinkinio pavyzdys, kuriame yra in­for­ma­ci­ja apie pardavimo datą, parduotą produktą ir parduotą kiekį:

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

Gautas duomenų rėmelis atrodo taip:

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

Toliau su­gru­puo­si­me duomenų rinkinį pagal produktus naudodami pandas groupby(). Tada ap­skai­čiuo­si­me bendrą kiekvieno produkto parduotą kiekį naudodami sum() funkciją:

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

Re­zul­ta­tas rodo bendrą kiekvieno produkto parduotų vienetų skaičių:

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

Daug­kar­ti­niai su­jun­gi­mai

Šiame pavyzdyje naudosime išplėstą duomenų rinkinį, kuris taip pat apima pajamas:

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

Duomenų rėmelis atrodo taip:

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

Naudodami pandas DataFrame.groupby(), su­gru­puo­si­me duomenis pagal produktus, tada naudodami agg() funkciją ap­skai­čiuo­si­me bendrą kiekį ir pajamas, taip pat vidutines pajamas pagal produktą.

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

Štai re­zul­ta­tas:

Quantity Revenue        
          sum    sum    mean
Product                  
A          35    350  116.666667
B          45    450  225.000000
Go to Main Menu