De methode agg()
Pas meerdere aggregatiefuncties tegelijk toe met agg() en geef een dict door om verschillende statistieken voor verschillende kolommen te berekenen.
De methode agg() is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Waarom agg() gebruiken?
Als je rechtstreeks sum() of mean() aanroept op een GroupBy-object, krijg je één statistiek. Bij echte analyses heb je echter vaak meerdere statistieken tegelijk nodig — bijvoorbeeld de totale omzet, de gemiddelde ordergrootte en het aantal orders per regio. Met de methode agg() (een afkorting van aggregate) kun je dit allemaal in één efficiënte aanroep berekenen, in plaats van afzonderlijke aggregaties uit te voeren en de resultaten samen te voegen.
Een lijst met functienamen doorgeven
De eenvoudigste manier om agg() te gebruiken is een lijst met tekenreeksen met functienamen doorgeven. Pandas past elke functie toe op de geselecteerde kolom en retourneert een DataFrame waarin elke kolom overeenkomt met één functie. Deze aanpak werkt met elke ingebouwde aggregatienaam: 'sum', 'mean', 'min', 'max', 'count', 'std', 'median' en andere.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'revenue': [200, 340, 150, 290, 310, 410],
'units': [20, 35, 15, 30, 28, 40]
})
result = df.groupby('region')['revenue'].agg(['sum', 'mean', 'count', 'max'])
print(result)
# sum mean count max
# region
# East 660 220.000000 3 310
# West 1040 346.666667 3 410Uitvoerkolommen hernoemen met benoemde aggregaties
Wanneer je een lijst met tekenreeksen doorgeeft, worden de uitvoerkolommen genoemd naar de functies zelf ('sum', 'mean' enzovoort). Gebruik voor overzichtelijkere uitvoer benoemde aggregaties: geef sleutelwoordargumenten door waarbij de sleutel jouw gewenste kolomnaam is en de waarde een tuple van (column, function). Dit is de moderne Pandas-aanpak en levert code op die zichzelf documenteert.
result = df.groupby('region').agg(
total_revenue=('revenue', 'sum'),
avg_revenue=('revenue', 'mean'),
order_count=('revenue', 'count'),
max_order=('revenue', 'max')
)
print(result)
# total_revenue avg_revenue order_count max_order
# region
# East 660 220.000000 3 310
# West 1040 346.666667 3 410Verschillende functies voor verschillende kolommen
Je kunt een woordenboek doorgeven aan agg() waarbij elke sleutel een kolomnaam is en elke waarde een functie (of een lijst met functies) die op die kolom moet worden toegepast. Zo kun je bijvoorbeeld sum berekenen voor revenue en mean voor units, allemaal in één GroupBy-aanroep.
result = df.groupby('region').agg({
'revenue': ['sum', 'mean'],
'units': ['sum', 'max']
})
print(result)
# revenue units
# sum mean sum max
# region
# East 660 220.000000 63 28
# West 1040 346.666667 105 40Kolom-MultiIndex uit dict agg()
Wanneer je een woordenboek met meerdere functies per kolom doorgeeft, heeft het resultaat een MultiIndex voor de kolommen. Het eerste niveau is de oorspronkelijke kolomnaam en het tweede niveau is de functienaam. Je kunt deze kolomnamen met een lijstcomprehensie afvlakken tot één tekenreeks, zodat je gemakkelijker met het resultaat kunt werken in vervolgstappen.
result = df.groupby('region').agg({'revenue': ['sum', 'mean'], 'units': 'sum'})
# Flatten MultiIndex columns
result.columns = ['_'.join(c).strip() for c in result.columns]
print(result.columns.tolist())
# ['revenue_sum', 'revenue_mean', 'units_sum']Aangepaste functies gebruiken in agg()
Naast tekenreeksen met namen kun je elke aanroepbare Python-functie doorgeven aan agg(). De functie ontvangt een Series (de waarden voor die kolom in één groep) en moet een scalaire waarde retourneren. Je kunt een lambda of een benoemde functie doorgeven. Aangepaste functies zijn flexibeler, maar langzamer dan ingebouwde functies met een naam, omdat ze geen gebruik kunnen maken van optimalisaties op C-niveau.
def revenue_range(s):
return s.max() - s.min()
result = df.groupby('region')['revenue'].agg(['sum', revenue_range])
print(result)
# sum revenue_range
# region
# East 660 160
# West 1040 120Benoemde aggregaties met aangepaste functies
De syntaxis voor benoemde aggregaties werkt ook met aanroepbare functies, niet alleen met namen als tekenreeksen. Geef als waarde van het trefwoordargument gewoon een tuple van (column, function) door, waarbij de functie elke aanroepbare functie kan zijn die een Series accepteert en een scalaire waarde retourneert. Zo blijft je code leesbaar, ook wanneer je ingebouwde functies combineert met aangepaste logica.
result = df.groupby('region').agg(
total=('revenue', 'sum'),
spread=('revenue', lambda s: s.max() - s.min()),
top_units=('units', 'max')
)
print(result)
# total spread top_units
# region
# East 660 160 28
# West 1040 120 40Aggregaties uitvoeren zonder een kolom te selecteren
Wanneer je agg() aanroept op een GroupBy zonder een specifieke kolom te selecteren, past Pandas de functie toe op elke numerieke kolom in de DataFrame. Dit is een snelle manier om alle numerieke kolommen tegelijk samen te vatten. Houd er rekening mee dat kolommen met niet-numerieke gegevenstypen bij de meeste aggregaties stilzwijgend worden overgeslagen.
# Aggregate all numeric columns in one call
result = df.groupby('region').agg(['sum', 'mean'])
print(result)
# revenue units
# sum mean sum mean
# region
# East 660 220.000000 63 21.00
# West 1040 346.666667 105 35.00agg() combineren met reset_index()
Na agg() staan de kolom(men) waarop je groepeerde in de index. Een veelgebruikt patroon is om direct daarna reset_index() aan te roepen, zodat je een vlakke DataFrame krijgt waarin de groepssleutels gewone kolommen zijn. Je kunt het resultaat daarna net als elke andere DataFrame hernoemen, sorteren en filteren, waardoor je het eenvoudig verder kunt verwerken of exporteren.
summary = (
df.groupby('region')
.agg(total=('revenue', 'sum'), orders=('revenue', 'count'))
.reset_index()
.sort_values('total', ascending=False)
)
print(summary)
# region total orders
# 1 West 1040 3
# 0 East 660 3agg() versus transform() versus apply()
Het is belangrijk om drie GroupBy-methoden van elkaar te onderscheiden: agg() reduceert elke groep tot één scalaire waarde, waardoor het resultaat minder rijen bevat dan het origineel. transform() retourneert een array met dezelfde vorm als de invoer, zodat je statistieken op groepsniveau als nieuwe kolommen kunt toevoegen. apply() is het meest flexibel, maar ook het traagst; dit wordt in de volgende les behandeld.
# agg: one row per group
print(df.groupby('region')['revenue'].agg('mean'))
# region
# East 220.0
# West 346.7
# transform: one row per original row (group mean broadcast back)
df['group_mean'] = df.groupby('region')['revenue'].transform('mean')
print(df[['region', 'revenue', 'group_mean']].head())Praktisch voorbeeld: verkoopsamenvatting
Hier is een realistisch voorbeeld van begin tot eind: bereken een tabel met een verkoopsamenvatting met de totale omzet, de gemiddelde orderwaarde, het aantal orders en het omzetbereik per regio, met duidelijke kolomnamen en gesorteerd op aflopende totale omzet. Dit patroon is direct toepasbaar in werkstromen voor product-, financiële en marketinganalyses.
summary = (
df.groupby('region')
.agg(
total_revenue=('revenue', 'sum'),
avg_order=('revenue', 'mean'),
num_orders=('revenue', 'count'),
revenue_range=('revenue', lambda s: s.max() - s.min())
)
.reset_index()
.sort_values('total_revenue', ascending=False)
.round(2)
)
print(summary)Korte controle
Test je begrip van de methode agg() uit deze les.
Samenvatting van de les
In deze les heb je geleerd hoe je meerdere aggregaties tegelijk uitvoert met agg(), hoe je benoemde aggregaties gebruikt voor duidelijke kolomnamen en hoe je met een dict verschillende functies op verschillende kolommen toepast. Hierna bekijken we transform() en filter(), waarmee je informatie op groepsniveau terug aan de oorspronkelijke DataFrame toevoegt.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “De methode agg()” gratis?
Ja — de volledige tekst van “De methode agg()” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Wat leer ik in “De methode agg()”?
Pas meerdere aggregatiefuncties tegelijk toe met agg() en geef een dict door om verschillende statistieken voor verschillende kolommen te berekenen. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?
Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “De methode agg()”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?
Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Het split-apply-combine-patroon
- GroupBy met één en meerdere sleutels
- De methode agg()
- GroupBy transformeren en filteren