Visualizzare l'andamento mensile
Rappresenti i ricavi mensili con un grafico a linee, sovrapponga una media mobile a 3 mesi e annoti i mesi di picco e di minimo.
Visualizzare l'andamento mensile è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Calcolo dei ricavi mensili totali
Prima di creare il grafico, aggreghi il DataFrame delle vendite per ottenere i totali mensili. Raggruppi per la colonna Period year_month e sommi i ricavi. Converta il PeriodIndex in un DatetimeIndex con .to_timestamp(), così il formattatore delle date di Matplotlib visualizza correttamente le etichette degli assi. Ordinare per indice garantisce che il grafico proceda cronologicamente da sinistra a destra.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_parquet('sales_features.parquet')
monthly = df.groupby('year_month')['revenue'].sum().sort_index()
monthly.index = monthly.index.to_timestamp()
print(monthly.head())Creazione del grafico a linee dei ricavi mensili
Crei una Figure e degli Axes con plt.subplots(figsize=(12, 5)) e chiami ax.plot() per tracciare la tendenza mensile dei ricavi. Usi marker='o' per inserire un punto in corrispondenza di ogni mese, così i singoli valori restano visibili anche quando la linea è uniforme. Imposti il colore e lo spessore della linea in modo che la tendenza principale risalti rispetto agli eventuali elementi sovrapposti aggiunti in seguito.
fig, ax = plt.subplots(figsize=(12, 5))
ax.plot(monthly.index, monthly.values,
color='steelblue', linewidth=2, marker='o', markersize=5,
label='Monthly Revenue')
ax.set_title('Monthly Revenue Trend')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue (USD)')
plt.tight_layout()
plt.show()Sovrapposizione di una media mobile a 3 mesi
Una linea dei ricavi mensili grezzi può apparire irregolare a causa del rumore stagionale. Sovrapponga una media mobile a 3 mesi calcolata con monthly.rolling(3).mean() per mostrare più chiaramente la tendenza sottostante. La tracci come linea tratteggiata di un colore a contrasto, così risalta rispetto alla serie grezza senza nasconderla.
rolling_avg = monthly.rolling(3).mean()
ax.plot(rolling_avg.index, rolling_avg.values,
color='darkorange', linewidth=2, linestyle='--',
label='3-Month Moving Avg')
ax.legend()
plt.show()Annotazione del mese di picco
Usi ax.annotate() per contrassegnare il mese con il ricavo più alto. Trovi il picco con monthly.idxmax() e il relativo valore con monthly.max(). La freccia dell’annotazione va dall’etichetta testuale al punto dei dati corrispondente al picco, rendendo immediatamente visibile l’informazione a chiunque legga il grafico, anche se lo riceve come PNG o PDF.
peak_date = monthly.idxmax()
peak_val = monthly.max()
ax.annotate(f'Peak: ${peak_val:,.0f}',
xy=(peak_date, peak_val),
xytext=(peak_date, peak_val * 1.1),
arrowprops=dict(arrowstyle='->', color='red'),
color='red', fontsize=10)
plt.show()Annotazione del mese di minimo
Analogamente, contrassegni il mese con il fatturato più basso usando monthly.idxmin() per segnalare una possibile stagionalità o eventuali anomalie. Le annotazioni sia del picco sia del minimo offrono un quadro completo: consentono agli stakeholder di vedere non solo il mese migliore, ma anche quanto può diminuire il fatturato, fornendo informazioni utili per la pianificazione del flusso di cassa.
trough_date = monthly.idxmin()
trough_val = monthly.min()
ax.annotate(f'Trough: ${trough_val:,.0f}',
xy=(trough_date, trough_val),
xytext=(trough_date, trough_val * 0.85),
arrowprops=dict(arrowstyle='->', color='navy'),
color='navy', fontsize=10)
plt.show()Formattazione delle etichette delle tacche delle date
Le etichette predefinite delle tacche delle date di Matplotlib spesso si sovrappongono o usano un formato di difficile lettura. Importi mdates da matplotlib e imposti un MonthLocator e un DateFormatter per controllare la frequenza delle tacche e il formato delle etichette. Ruotare le etichette delle tacche di 45 gradi evita sovrapposizioni su un asse di 12 mesi.
import matplotlib.dates as mdates
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()Aggiunta di una regione ombreggiata per il quarto trimestre
Evidenzi il periodo del quarto trimestre (ottobre–dicembre) con uno sfondo ombreggiato usando ax.axvspan(). In questo modo i modelli stagionali diventano immediatamente visibili: se il picco ricade regolarmente nella zona ombreggiata, il quarto trimestre è un periodo di vendita fondamentale da prendere di mira con promozioni. Il parametro alpha controlla la trasparenza dell'ombreggiatura.
import datetime
q4_start = datetime.datetime(2023, 10, 1)
q4_end = datetime.datetime(2023, 12, 31)
ax.axvspan(q4_start, q4_end, alpha=0.15, color='gold', label='Q4')
ax.legend()
plt.show()Rappresentazione del fatturato per categoria nel tempo
Crei un grafico a più linee, in cui ogni linea rappresenta una categoria di prodotto. Esegua il pivot del DataFrame mensile per categoria, in modo che le colonne siano le categorie e l'indice sia il tempo; quindi iteri sulle colonne e chiami ax.plot() per ciascuna di esse. Matplotlib assegna automaticamente un colore diverso a ogni linea quando viene chiamato ripetutamente sullo stesso Axes.
monthly_cat = df.groupby(['year_month', 'category'])['revenue'].sum().unstack('category')
monthly_cat.index = monthly_cat.index.to_timestamp()
fig, ax = plt.subplots(figsize=(12, 6))
for col in monthly_cat.columns:
ax.plot(monthly_cat.index, monthly_cat[col], label=col, linewidth=1.5)
ax.legend(loc='upper left', fontsize=8)
ax.set_title('Monthly Revenue by Category')
plt.tight_layout()
plt.show()Grafico a barre impilate del fatturato mensile
Un grafico a barre impilate mostra il fatturato mensile totale e, al contempo, il contributo di ciascuna categoria all'insieme. Usi direttamente monthly_cat.plot(kind='bar', stacked=True, ax=ax) sul DataFrame sottoposto a pivot. Le barre impilate sono ideali quando si hanno meno di sei categorie; in caso contrario, i colori diventano difficili da distinguere.
fig, ax = plt.subplots(figsize=(12, 5))
monthly_cat.plot(kind='bar', stacked=True, ax=ax, colormap='tab10')
ax.set_title('Monthly Revenue by Category (Stacked)')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue')
ax.legend(loc='upper left', fontsize=8)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()Tasso di crescita mese su mese
Rappresenti il tasso di crescita percentuale mese su mese insieme al fatturato per fornire un contesto: una barra visivamente piccola a gennaio potrebbe rappresentare un aumento del 20 % rispetto al mese precedente. Calcoli la crescita con monthly.pct_change() * 100 e la rappresenti su un asse y secondario usando ax.twinx(), così da condividere lo stesso asse x senza confondere le unità di misura.
growth = monthly.pct_change() * 100
fig, ax1 = plt.subplots(figsize=(12, 5))
ax2 = ax1.twinx()
ax1.bar(monthly.index, monthly.values, width=20, color='steelblue', alpha=0.6, label='Revenue')
ax2.plot(growth.index, growth.values, color='red', marker='o', label='MoM Growth %')
ax1.set_ylabel('Revenue')
ax2.set_ylabel('MoM Growth %')
plt.title('Revenue and Month-over-Month Growth')
plt.tight_layout()
plt.show()Salvataggio della figura per i report
Usi fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight') per produrre un file PNG ad alta risoluzione, adatto a presentazioni o dashboard web. L'argomento bbox_inches='tight' elimina lo spazio bianco in eccesso, mentre dpi=150 garantisce un'immagine nitida senza creare un file eccessivamente grande. Salvi anche in PDF per ottenere report di qualità adatta alla stampa.
fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight')
fig.savefig('monthly_trend.pdf', bbox_inches='tight')
print('Figure saved as PNG and PDF')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: calcolare i totali mensili del fatturato e rappresentarli in un grafico a linee, sovrapporre una media mobile e annotare i mesi di picco e di minimo e salvare figure di qualità editoriale in formato PNG e PDF. Ora esploreremo la sessionizzazione e la sequenza degli eventi nei dati sul comportamento degli utenti.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Visualizzare l'andamento mensile» è gratuita?
Sì — il testo completo di «Visualizzare l'andamento mensile» è 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 «Visualizzare l'andamento mensile»?
Rappresenti i ricavi mensili con un grafico a linee, sovrapponga una media mobile a 3 mesi e annoti i mesi di picco e di minimo. 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 4 di 4.
Quanto tempo richiede la lezione «Visualizzare l'andamento mensile»?
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