Analisi GroupBy per area e categoria
Agregghi i ricavi totali e il numero di ordini per area e categoria di prodotto e individui i 5 SKU principali per margine.
Analisi GroupBy per area e categoria è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Pandas & NumPy Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Pandas & NumPy Academy include 4 lezioni in totale.
Configurazione dell’analisi con GroupBy
Dopo aver calcolato una colonna revenue, il passo successivo naturale è aggregarla per dimensioni aziendali come region e category. La chiamata Pandas groupby() suddivide il DataFrame in gruppi; si applica una funzione di aggregazione e Pandas combina i risultati in una tabella di riepilogo. Questo schema split-apply-combine sostituisce le query SQL GROUP BY annidate.
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)Raggruppamento per categoria
Aggréghi i ricavi per categoria di prodotto per identificare quali categorie generano più vendite. Usi .agg() per calcolare più statistiche contemporaneamente — ricavi totali, numero di ordini e valore medio dell’ordine — in un’unica scansione dei dati, invece di eseguire tre chiamate separate a groupby.
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)Raggruppamento per due chiavi: area geografica e categoria
Passi un elenco di colonne a groupby() per creare un riepilogo a due livelli. Il risultato ha un MultiIndex: il livello esterno è l’area geografica, quello interno è la categoria. Usi .reset_index() per trasformarlo in un DataFrame semplice, adatto a ulteriori filtri o all’esportazione in un report.
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))Calcolo della percentuale di quota dei ricavi
I valori assoluti dei ricavi sono utili, ma la quota dei ricavi mostra il contributo di ogni categoria al totale. Divida il totale della singola categoria per il totale complessivo e moltiplichi per 100. Il metodo transform('sum') riporta il totale complessivo su ogni riga, consentendo di calcolare la percentuale in un unico passaggio vettorializzato.
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_%'))Individuazione dei primi 5 SKU per ricavi
Identifichi i primi 5 prodotti per ricavi totali usando groupby('product')['revenue'].sum().nlargest(5). Il metodo nlargest() è più conciso rispetto all’ordinamento seguito dal slicing. Conoscere gli SKU principali orienta le decisioni sulle scorte e aiuta a concentrare le attività promozionali dove l’impatto sui ricavi è maggiore.
top5_sku = df.groupby('product')['revenue'].sum().nlargest(5)
print('Top 5 Products by Revenue:')
print(top5_sku)Numero di ordini e ricavi per area geografica
Un’area geografica può avere un numero elevato di ordini ma un valore medio dell’ordine basso, o viceversa. Calcoli entrambe le metriche affiancate per distinguere le aree trainate dai volumi da quelle trainate dal valore. Usi agg() con un dizionario per assegnare nomi descrittivi alle colonne e mantenere leggibile l’output.
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))Percentuale dei ricavi per area geografica
Calcoli la quota dei ricavi totali generata da ciascuna area geografica. Usi groupby().sum() e divida poi per il totale scalare. In questo modo può rispondere facilmente a domande di livello dirigenziale come "Quale percentuale dei nostri ricavi proviene dall’area Nord?" con una singola espressione DataFrame.
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))Filtraggio dei gruppi in base a una soglia di ricavi
Usi groupby().filter() per mantenere solo le righe appartenenti a categorie il cui ricavo totale supera una determinata soglia. È utile quando desidera rimuovere le categorie di nicchia da una visualizzazione o da un modello, concentrandosi sui segmenti rilevanti. Il filtro riceve un DataFrame di gruppo e restituisce un booleano.
THRESHOLD = 10000
df_major = df.groupby('category').filter(
lambda g: g['revenue'].sum() >= THRESHOLD
)
print('Major categories:', df_major['category'].nunique())Ricavi mese su mese per categoria
Combini due chiavi di groupby — mese e categoria — per monitorare l’evoluzione dei ricavi di ogni categoria nel tempo. Trasformi il risultato con unstack('category') per ottenere una matrice in cui le righe sono i mesi e le colonne le categorie, rendendo facile individuare i modelli stagionali per categoria.
monthly_cat = df.groupby(['month', 'category'])['revenue'].sum().unstack('category').fillna(0)
print(monthly_cat.round(0))SKU principale per area geografica
Identifichi il prodotto più venduto in ciascuna area geografica concatenando groupby con idxmax(). Raggruppi per area geografica e prodotto per ottenere il ricavo totale per combinazione, quindi scelga per ogni area l’indice del prodotto con il ricavo massimo. Questo schema rivela se aree geografiche diverse preferiscono prodotti diversi.
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)Esportazione della tabella di riepilogo
Dopo aver calcolato il riepilogo per area geografica e categoria, lo esporti in Excel con to_excel(), così gli stakeholder che preferiscono i fogli di calcolo possono utilizzarlo. Usi ExcelWriter per scrivere più DataFrame di riepilogo in fogli separati all’interno di un’unica cartella di lavoro. Aggiunga un timestamp al nome del file, così ogni esecuzione produce un output versionato.
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)Verifica rapida
Verifichi la Sua comprensione dei concetti di analisi dei dati trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato a: raggruppare per una e due chiavi per calcolare riepiloghi dei ricavi, calcolare le percentuali di quota dei ricavi e gli SKU principali ed esportare report riepilogativi Excel con più fogli. Ora esploreremo la visualizzazione delle tendenze mensili con grafici a linee e medie mobili.
Domande Frequenti
La lezione «Analisi GroupBy per area e categoria» è gratuita?
Sì — il testo completo di «Analisi GroupBy per area e categoria» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Pandas & NumPy Academy, passa a CoddyKit PRO. Il corso Pandas & NumPy Academy include 4 lezioni in totale.
Cosa imparerò in «Analisi GroupBy per area e categoria»?
Agregghi i ricavi totali e il numero di ordini per area e categoria di prodotto e individui i 5 SKU principali per margine. Eserciti Pandas & NumPy Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Pandas & NumPy Academy?
Non è richiesta alcuna esperienza precedente. Pandas & NumPy Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Analisi GroupBy per area e categoria»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Pandas & NumPy Academy?
Sì. Ogni lezione Pandas & NumPy Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Caricare e verificare il dataset delle vendite
- Calcolo dei ricavi e feature engineering
- Analisi GroupBy per area e categoria
- Visualizzare l'andamento mensile