GroupBy-analys efter region och kategori
Summera totala intäkter och antal order efter region och produktkategori och identifiera de fem främsta SKU:erna efter marginal.
GroupBy-analys efter region och kategori är en gratis lektion i Pandas & NumPy Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Pandas & NumPy Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.
Konfigurera GroupBy-analys
När ni har beräknat en kolumn för revenue är nästa naturliga steg att aggregera den efter affärsdimensioner som region och category. Anropet groupby() i Pandas delar upp DataFrame i grupper, ni tillämpar en aggregeringsfunktion och Pandas kombinerar resultaten till en sammanfattningstabell. Mönstret dela upp–tillämpa–kombinera ersätter nästlade SQL-frågor med GROUP BY.
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)Gruppera efter kategori
Aggregera intäkter efter produktkategori för att identifiera vilka kategorier som står för den största försäljningen. Använd .agg() för att beräkna flera statistiska mått samtidigt – totala intäkter, antal order och genomsnittligt ordervärde – i en enda genomgång av data i stället för tre separata groupby-anrop.
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)Gruppera efter två nycklar: region och kategori
Skicka en lista med kolumner till groupby() för att skapa en sammanfattning i två nivåer. Resultatet har ett MultiIndex – den yttre nivån är region och den inre kategorin. Använd .reset_index() för att omvandla det till en vanlig DataFrame som lämpar sig för vidare filtrering eller export till en 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))Beräkna procentuell intäktsandel
Absoluta intäktsbelopp är användbara, men intäktsandel visar varje kategoris bidrag till totalen. Dividera totalsumman per kategori med totalsumman för alla kategorier och multiplicera med 100. Tricket transform('sum') sprider totalsumman till varje rad, så att ni kan beräkna procentandelen i ett enda vektoriserat steg.
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_%'))Hitta de fem främsta SKU:erna efter intäkter
Identifiera de fem främsta produkterna efter totala intäkter med groupby('product')['revenue'].sum().nlargest(5). Metoden nlargest() är mer koncis än att sortera och ta ett utsnitt. Kunskap om de främsta SKU:erna vägleder lagerbeslut och hjälper er att fokusera marknadsföringsinsatser där intäktseffekten är störst.
top5_sku = df.groupby('product')['revenue'].sum().nlargest(5)
print('Top 5 Products by Revenue:')
print(top5_sku)Antal order kontra intäkter per region
En region kan ha många order men ett lågt genomsnittligt ordervärde, eller tvärtom. Beräkna båda måtten bredvid varandra för att skilja regioner som drivs av volym från regioner som drivs av värde. Använd agg() med en ordlista för att tilldela beskrivande kolumnnamn och hålla resultatet lättläst.
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))Andel av intäkterna per region
Beräkna varje regions andel av de totala intäkterna. Använd groupby().sum() och dividera sedan med totalsumman. Då blir det enkelt att besvara frågor på ledningsnivå, som "Hur stor andel av våra intäkter kommer från region North?", med ett enda DataFrame-uttryck.
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))Filtrera grupper efter ett intäktströskelvärde
Använd groupby().filter() för att behålla endast rader som tillhör kategorier vars totala intäkter överstiger ett tröskelvärde. Detta är användbart när ni vill ta bort nischkategorier från en visualisering eller modell för att fokusera på väsentliga segment. Filtret tar emot en grupp-DataFrame och returnerar ett booleskt värde.
THRESHOLD = 10000
df_major = df.groupby('category').filter(
lambda g: g['revenue'].sum() >= THRESHOLD
)
print('Major categories:', df_major['category'].nunique())Månad över månad-intäkter per kategori
Kombinera två groupby-nycklar – månad och kategori – för att följa hur varje kategoris intäkter utvecklas över tid. Pivotera resultatet med unstack('category') för att få en matris där raderna är månader och kolumnerna kategorier, vilket gör det enkelt att upptäcka säsongsmönster för varje kategori.
monthly_cat = df.groupby(['month', 'category'])['revenue'].sum().unstack('category').fillna(0)
print(monthly_cat.round(0))Främsta SKU per region
Identifiera den bäst säljande produkten i varje region genom att kombinera groupby med idxmax(). Gruppera efter region och produkt för att få totala intäkter per kombination och välj sedan, för varje region, produktindexet med högst intäkt. Det här mönstret visar om olika regioner föredrar olika produkter.
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)Exportera sammanfattningstabellen
När ni har beräknat sammanfattningen per region och kategori exporterar ni den till Excel med to_excel(), så att intressenter som föredrar kalkylblad kan använda den. Använd ExcelWriter för att skriva flera sammanfattande DataFrame-objekt till separata blad i samma arbetsbok. Lägg till en tidsstämpel i filnamnet, så att varje körning skapar en versionsmärkt utdatafil.
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)Snabbkontroll
Testa dina kunskaper om Data Analysis-begrepp från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har du lärt dig: gruppera efter en och två nycklar för att beräkna intäktssammanfattningar, beräkna procentuella intäktsandelar och de främsta N SKU:erna samt exportera sammanfattande Excel-rapporter med flera blad. Härnäst utforskar vi visualisering av månadstrender med linjediagram och glidande medelvärden.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”GroupBy-analys efter region och kategori” gratis?
Ja – hela texten till ”GroupBy-analys efter region och kategori” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Pandas & NumPy Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”GroupBy-analys efter region och kategori”?
Summera totala intäkter och antal order efter region och produktkategori och identifiera de fem främsta SKU:erna efter marginal. Ni övar på Pandas & NumPy Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Pandas & NumPy Academy?
Du behöver inga förkunskaper. Utbildningen i Pandas & NumPy Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”GroupBy-analys efter region och kategori”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Pandas & NumPy Academy-lektionen?
Ja. Varje Pandas & NumPy Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Läs in och granska försäljningsdatasetet
- Intäktsberäkningar och feature engineering
- GroupBy-analys efter region och kategori
- Visualisera månadstrender