Pandas & NumPy Academy · Lezione

Visualizzare i percorsi degli utenti

Rappresenti il funnel con un grafico a barre orizzontali e la matrice di retention con una heatmap per comunicare i risultati agli stakeholder.

Lezione 4 di 413 passaggi

Visualizzare i percorsi degli utenti è 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.

Perché visualizzare i percorsi degli utenti

Le tabelle grezze degli eventi e i tassi di conversione espressi come numeri sono difficili da comunicare agli stakeholder non tecnici. Le rappresentazioni visive dei percorsi degli utenti — grafici a imbuto, heatmap della retention e diagrammi di Sankey — rendono immediatamente evidenti i pattern. L’obiettivo non è sostituire i numeri, ma presentarli in una forma che renda le informazioni comprensibili a colpo d’occhio, riducendo il carico cognitivo del pubblico.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Assume funnel_summary and retention_pct are already computed
print('Visualisation libraries loaded')

Grafico a barre orizzontali per il funnel

Un grafico a barre orizzontali è la visualizzazione del funnel più semplice e più facilmente comprensibile. Ogni barra rappresenta un passaggio del funnel; la lunghezza della barra rappresenta il numero di utenti. Ordini i passaggi dall’alto verso il basso, seguendo l’ordine del funnel, così il grafico assume l’aspetto di un imbuto che si restringe. Utilizzi un unico colore a contrasto per tutte le barre, in modo che l’attenzione rimanga sui valori e non sulla varietà dei colori.

FUNNEL_STEPS = ['homepage', 'product_page', 'add_to_cart', 'checkout', 'purchase']
users = [10000, 7200, 4100, 2300, 980]

fig, ax = plt.subplots(figsize=(9, 5))
bars = ax.barh(FUNNEL_STEPS[::-1], users[::-1], color='steelblue', height=0.6)
ax.set_xlabel('Unique Users')
ax.set_title('Conversion Funnel')
plt.tight_layout()
plt.show()

Annotare i tassi di conversione sul grafico

Aggiunga le annotazioni dei tassi di conversione sul bordo destro di ogni barra utilizzando ax.text(). Mostri sia il numero assoluto di utenti sia la percentuale di conversione tra un passaggio e il successivo, così il grafico contiene tutte le informazioni necessarie senza una tabella dati separata. Posizioni il testo leggermente all’esterno dell’estremità della barra, con un piccolo scarto orizzontale, per evitare che si sovrapponga al colore di riempimento.

conversions = [None, 72.0, 56.9, 56.1, 42.6]

for i, (u, c) in enumerate(zip(users[::-1], conversions[::-1])):
    label = f'{u:,} users'
    if c is not None:
        label += f'  ({c}% conv)'
    ax.text(u + 100, i, label, va='center', fontsize=9)

plt.tight_layout()
plt.show()

Rivedere la heatmap della retention

La heatmap della retention è l’output standard dell’analisi delle coorti. Ogni riga rappresenta una coorte, ogni colonna uno scarto settimanale e ogni cella è colorata in base alla percentuale di retention. Utilizzi la mappa di colori RdYlGn (rosso = bassa, verde = alta) con vmin=0, vmax=100 espliciti, così la scala dei colori rimane coerente tra le presentazioni e non viene ricalibrata per ogni heatmap.

import numpy as np

# Simulated retention data for illustration
data = [[100, 55, 42, 38, 35, 33],
        [100, 52, 40, 36, 33, 0],
        [100, 58, 45, 41, 0, 0],
        [100, 60, 48, 0, 0, 0]]
retention_pct = pd.DataFrame(data, columns=range(6),
                             index=['Wk1', 'Wk2', 'Wk3', 'Wk4'])

fig, ax = plt.subplots(figsize=(10, 4))
sns.heatmap(retention_pct, annot=True, fmt='.0f', cmap='RdYlGn',
            vmin=0, vmax=100, linewidths=0.5, ax=ax)
ax.set_title('Cohort Retention Heatmap')
plt.tight_layout()
plt.show()

Mascherare le celle incomplete delle coorti

Le coorti più recenti non hanno ancora avuto il tempo di completare tutti gli scarti settimanali. Queste celle dovrebbero apparire vuote anziché come 0 %, per evitare che chi legge scambi l’assenza di dati per una retention nulla. Crei una maschera booleana in cui il valore della cella è 0 e l’indice della colonna supera il numero di settimane di esistenza della coorte, quindi la passi a sns.heatmap(mask=...).

mask = retention_pct == 0  # cells with no data yet

fig, ax = plt.subplots(figsize=(10, 4))
sns.heatmap(retention_pct, annot=True, fmt='.0f', cmap='RdYlGn',
            vmin=0, vmax=100, linewidths=0.5,
            mask=mask, ax=ax)
ax.set_title('Cohort Retention (incomplete cells masked)')
plt.tight_layout()
plt.show()

Tracciare la curva di retention media

Visualizzi la curva di retention media tracciando le medie delle colonne della matrice di retention. Questa singola linea riassume il profilo complessivo di retention del prodotto. Aggiunga una banda ombreggiata pari a ±1 deviazione standard per mostrare la variabilità tra le coorti. Una banda stretta indica che le coorti si comportano in modo simile; una banda ampia suggerisce differenze importanti tra coorti che meritano di essere analizzate.

avg = retention_pct.mean(axis=0)
std = retention_pct.std(axis=0)

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(avg.index, avg, marker='o', color='steelblue', linewidth=2)
ax.fill_between(avg.index, avg - std, avg + std, alpha=0.2, color='steelblue')
ax.set_xlabel('Week Number')
ax.set_ylabel('Avg Retention %')
ax.set_title('Average Cohort Retention Curve')
plt.tight_layout()
plt.show()

Funnel segmentato: desktop e dispositivi mobili

Tracciare i funnel dei diversi segmenti affiancati mostra se i problemi del prodotto sono generali o specifici di un dispositivo. Crei un grafico a barre raggruppate con due gruppi di barre per ogni passaggio del funnel, utilizzando ax.bar() con uno scarto sull’asse x. In alternativa, disegni due grafici del funnel separati in una griglia di sottografici 1×2 utilizzando plt.subplots(1, 2) per un confronto più chiaro.

steps = ['Homepage', 'Product', 'Cart', 'Checkout', 'Purchase']
desktop = [5000, 3800, 2300, 1500, 700]
mobile = [5000, 3400, 1800, 900, 280]

x = range(len(steps))
fig, ax = plt.subplots(figsize=(10, 5))
ax.bar([i - 0.2 for i in x], desktop, width=0.4, label='Desktop', color='steelblue')
ax.bar([i + 0.2 for i in x], mobile, width=0.4, label='Mobile', color='darkorange')
ax.set_xticks(list(x))
ax.set_xticklabels(steps)
ax.legend()
ax.set_title('Funnel by Device Type')
plt.tight_layout()
plt.show()

Distribuzione della frequenza degli eventi

Visualizzare la distribuzione degli eventi per sessione mostra se le sessioni si concentrano attorno a un numero ridotto di eventi (segno che gli utenti raggiungono rapidamente il loro obiettivo) o coprono un intervallo ampio (segno di percorsi complessi o confusione). Tracci il grafico con ax.hist() sulla colonna event_count, utilizzando una scala logaritmica sull’asse y se la distribuzione è fortemente asimmetrica a destra.

import numpy as np

event_counts = pd.Series([3, 5, 2, 8, 1, 12, 3, 4, 6, 20, 2, 3, 1, 7, 5])

fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(event_counts, bins=15, color='steelblue', edgecolor='white')
ax.set_xlabel('Events per Session')
ax.set_ylabel('Number of Sessions')
ax.set_title('Session Event Frequency Distribution')
plt.tight_layout()
plt.show()

Sequenze di eventi più frequenti

Mostri le sequenze più comuni di due eventi (bigrammi) nel clickstream per comprendere i percorsi tipici degli utenti. Raggruppi i dati per sessione, li ordini in base a event_rank ed estragga le coppie consecutive utilizzando zip(events, events[1:]). Conti la frequenza delle coppie con un Counter e rappresenti le prime 10 in un grafico a barre orizzontali. Questo mostra quali percorsi di navigazione predominano nel comportamento degli utenti.

from collections import Counter

events_per_session = [['homepage', 'product_page', 'add_to_cart'],
                       ['homepage', 'search', 'product_page'],
                       ['homepage', 'product_page', 'purchase']]

bigrams = Counter()
for session in events_per_session:
    for pair in zip(session, session[1:]):
        bigrams[pair] += 1

print(bigrams.most_common(5))

Distribuzione della durata delle sessioni

Un istogramma della durata delle sessioni mostra se gli utenti interagiscono brevemente (meno di 2 minuti), moderatamente o a lungo. Utilizzi una scala logaritmica sull’asse x se un numero ridotto di sessioni molto lunghe comprimerebbe la maggior parte dei dati nella barra più a sinistra. Sovrapponga una linea verticale sulla mediana con ax.axvline() per aiutare il pubblico a interpretare la durata “tipica” di una sessione.

durations = pd.Series([1.2, 3.5, 0.5, 12.3, 2.1, 8.7, 1.8, 0.3, 45.1, 4.6])

fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(durations, bins=20, color='steelblue', edgecolor='white')
ax.axvline(durations.median(), color='red', linestyle='--', label=f'Median: {durations.median():.1f} min')
ax.set_xlabel('Session Duration (min)')
ax.set_ylabel('Sessions')
ax.legend()
plt.tight_layout()
plt.show()

Salvare il grafico della dashboard

Combini più visualizzazioni in un unico grafico della dashboard utilizzando una griglia di sottografici con plt.subplots(2, 2, figsize=(14, 10)). Assegni a ciascun pannello il grafico a barre del funnel, la heatmap della retention, la curva di retention media e la distribuzione degli eventi. Salvi il risultato in PNG per la pubblicazione sul Web o in PDF per i report stampabili. Un grafico unificato è più facile da condividere rispetto a quattro file separati.

fig, axes = plt.subplots(2, 2, figsize=(14, 10))

# Panel 1: funnel
axes[0, 0].barh(FUNNEL_STEPS[::-1], users[::-1], color='steelblue')
axes[0, 0].set_title('Funnel')

# Panel 2: retention heatmap
sns.heatmap(retention_pct, ax=axes[0, 1], cmap='RdYlGn', annot=True, fmt='.0f', vmin=0, vmax=100)
axes[0, 1].set_title('Cohort Retention')

fig.suptitle('User Journey Dashboard', fontsize=16)
plt.tight_layout()
fig.savefig('user_journey_dashboard.png', dpi=150, bbox_inches='tight')
print('Dashboard saved')

Verifica rapida

Verifichi la Sua comprensione dei concetti di analisi dei dati presentati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato a: creare grafici a barre del funnel annotati e heatmap della retention, tracciare curve di retention media con bande di variabilità e combinare più grafici in un’unica dashboard salvata in PNG. Ora analizzeremo l’individuazione e la rimozione dei record duplicati nella pulizia avanzata dei dati.

Gratis per iniziare

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 i percorsi degli utenti» è gratuita?

Sì — il testo completo di «Visualizzare i percorsi degli utenti» è 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 i percorsi degli utenti»?

Rappresenti il funnel con un grafico a barre orizzontali e la matrice di retention con una heatmap per comunicare i risultati agli stakeholder. 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 i percorsi degli utenti»?

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

  1. Sessionizzazione e sequenza degli eventi
  2. Analisi del funnel
  3. Tabella di retention per coorte
  4. Visualizzare i percorsi degli utenti
← Torna a Pandas & NumPy Academy