Pandas & NumPy Academy · Les

GroupBy-analyse per regio en categorie

Aggregeer de totale omzet en het aantal orders per regio en productcategorie en identificeer de vijf SKU's met de hoogste marge.

Les 3 van 413 stappen

GroupBy-analyse per regio en categorie 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.

GroupBy-analyse instellen

Na het berekenen van een kolom revenue is de logische volgende stap om deze te aggregeren op bedrijfsdimensies zoals region en category. De aanroep groupby() van Pandas splitst de DataFrame op in groepen, je past een aggregatiefunctie toe en Pandas voegt de resultaten samen tot een samenvattingstabel. Dit patroon van splitsen, toepassen en combineren vervangt geneste SQL GROUP BY-query's.

import pandas as pd

df = pd.read_parquet('sales_features.parquet')

# Total revenue by region
region_rev = df.groupby('region')['revenue'].sum().sort_values(ascending=False)
print(region_rev)

Groeperen op categorie

Aggregeer de omzet per productcategorie om te bepalen welke categorieën de meeste verkopen genereren. Gebruik .agg() om meerdere statistieken tegelijk te berekenen — totale omzet, aantal bestellingen en gemiddelde bestelwaarde — in één doorgang over de gegevens in plaats van met drie afzonderlijke groupby-aanroepen.

cat_summary = df.groupby('category')['revenue'].agg(
    total_revenue='sum',
    order_count='count',
    avg_order_value='mean'
).sort_values('total_revenue', ascending=False)

print(cat_summary)

Groeperen op twee sleutels: regio en categorie

Geef een lijst met kolommen door aan groupby() om een samenvatting met twee niveaus te maken. Het resultaat heeft een MultiIndex: het buitenste niveau is de regio en het binnenste de categorie. Gebruik .reset_index() om deze om te zetten naar een gewone DataFrame die geschikt is voor verdere filtering of export naar een rapport.

region_cat = df.groupby(['region', 'category'])['revenue'].sum().reset_index()
region_cat.columns = ['region', 'category', 'total_revenue']
region_cat = region_cat.sort_values(['region', 'total_revenue'], ascending=[True, False])
print(region_cat.head(10))

Het omzetpercentage berekenen

Absolute omzetcijfers zijn nuttig, maar het omzetaandeel laat zien welke bijdrage elke categorie aan het totaal levert. Deel het categorietotaal door het eindtotaal en vermenigvuldig dit met 100. Met de truc transform('sum') verspreid je het eindtotaal terug naar elke rij, zodat je het percentage in één gevectoriseerde stap kunt berekenen.

df['total_revenue_all'] = df['revenue'].sum()
cat_share = df.groupby('category')['revenue'].sum() / df['revenue'].sum() * 100
cat_share = cat_share.sort_values(ascending=False).round(2)
print(cat_share.rename('revenue_share_%'))

De 5 beste SKU's op omzet vinden

Identificeer de vijf producten met de hoogste totale omzet met groupby('product')['revenue'].sum().nlargest(5). De methode nlargest() is beknopter dan sorteren en een deel selecteren. Kennis van de beste SKU's helpt bij voorraadbeslissingen en om promotie-inspanningen te richten op de gebieden met de grootste omzetimpact.

top5_sku = df.groupby('product')['revenue'].sum().nlargest(5)
print('Top 5 Products by Revenue:')
print(top5_sku)

Aantal bestellingen versus omzet per regio

Een regio kan een hoog aantal bestellingen maar een lage gemiddelde bestelwaarde hebben, of omgekeerd. Bereken beide metrieken naast elkaar om regio's die door volume worden gedreven te onderscheiden van regio's die door waarde worden gedreven. Gebruik agg() met een woordenboek om beschrijvende kolomnamen toe te wijzen en de uitvoer leesbaar te houden.

region_profile = df.groupby('region').agg(
    order_count=('order_id', 'count'),
    total_revenue=('revenue', 'sum'),
    avg_order=('revenue', 'mean')
).round(2)

print(region_profile.sort_values('total_revenue', ascending=False))

Percentage van de omzet per regio

Bereken welk aandeel van de totale omzet door elke regio wordt bijgedragen. Gebruik groupby().sum() en deel vervolgens door het scalaire totaal. Zo kun je vragen op directieniveau eenvoudig beantwoorden, zoals "Welk percentage van onze omzet komt uit de regio North?", met één DataFrame-expressie.

region_rev = df.groupby('region')['revenue'].sum()
region_share = (region_rev / region_rev.sum() * 100).round(2)
region_share.name = 'revenue_share_%'
print(region_share.sort_values(ascending=False))

Groepen filteren op een omzetdrempel

Gebruik groupby().filter() om alleen rijen te behouden die behoren tot categorieën waarvan de totale omzet een drempel overschrijdt. Dit is nuttig wanneer je nichecategorieën uit een visualisatie of model wilt verwijderen om je op belangrijke segmenten te richten. Het filter ontvangt een groeps-DataFrame en retourneert een booleaanse waarde.

THRESHOLD = 10000

df_major = df.groupby('category').filter(
    lambda g: g['revenue'].sum() >= THRESHOLD
)

print('Major categories:', df_major['category'].nunique())

Omzet per categorie van maand tot maand

Combineer twee groupby-sleutels — maand en categorie — om bij te houden hoe de omzet van elke categorie zich in de loop van de tijd ontwikkelt. Draai het resultaat met unstack('category') naar een matrix waarin de rijen maanden en de kolommen categorieën zijn. Zo zie je seizoenspatronen per categorie eenvoudig.

monthly_cat = df.groupby(['month', 'category'])['revenue'].sum().unstack('category').fillna(0)
print(monthly_cat.round(0))

Beste SKU per regio

Identificeer het best verkopende product in elke regio door groupby te combineren met idxmax(). Groepeer op regio en product om de totale omzet per combinatie te verkrijgen en kies vervolgens voor elke regio de productindex met de hoogste omzet. Met dit patroon zie je of verschillende regio's een voorkeur hebben voor verschillende producten.

rev_by_region_sku = df.groupby(['region', 'product'])['revenue'].sum()
top_sku_per_region = rev_by_region_sku.groupby('region').idxmax()
print(top_sku_per_region)

De samenvattingstabel exporteren

Exporteer de samenvatting per regio en categorie na het berekenen ervan naar Excel met to_excel(), zodat belanghebbenden die de voorkeur geven aan spreadsheets de gegevens kunnen gebruiken. Gebruik ExcelWriter om meerdere samenvattings-DataFrames naar afzonderlijke werkbladen in één werkmap te schrijven. Voeg een tijdstempel toe aan de bestandsnaam, zodat elke uitvoering een versie-uitvoer oplevert.

from datetime import date

filename = f'sales_summary_{date.today()}.xlsx'

with pd.ExcelWriter(filename, engine='openpyxl') as writer:
    region_profile.to_excel(writer, sheet_name='By Region')
    cat_summary.to_excel(writer, sheet_name='By Category')

print('Saved:', filename)

Korte controle

Test je begrip van de concepten voor gegevensanalyse uit deze les.

Samenvatting van de les

In deze les heb je geleerd hoe je: op één en twee sleutels groepeert om omzetsamenvattingen te berekenen, omzetaandelen en de beste N SKU's berekent, en Excel-samenvattingsrapporten met meerdere werkbladen exporteert. Hierna verkennen we maandelijkse trendvisualisatie met lijngrafieken en voortschrijdende gemiddelden.

Gratis beginnen

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 “GroupBy-analyse per regio en categorie” gratis?

Ja — de volledige tekst van “GroupBy-analyse per regio en categorie” 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 “GroupBy-analyse per regio en categorie”?

Aggregeer de totale omzet en het aantal orders per regio en productcategorie en identificeer de vijf SKU's met de hoogste marge. 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 “GroupBy-analyse per regio en categorie”?

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

  1. De salesdataset laden en controleren
  2. Omzetberekeningen en feature-engineering
  3. GroupBy-analyse per regio en categorie
  4. Maandelijkse trendvisualisatie
← Terug naar Pandas & NumPy Academy