Tabella di retention per coorte
Costruisca una matrice di retention per coorte che mostri la percentuale di utenti della settimana 0 ancora attivi nelle settimane successive usando pivot_table.
Tabella di retention per coorte è 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.
Che cos’è una tabella di retention per coorte
Una tabella di retention per coorte raggruppa gli utenti in base alla settimana (o al mese) in cui hanno utilizzato per la prima volta il prodotto, quindi monitora quale percentuale di ogni coorte è ancora attiva nelle settimane successive. La riga 0 mostra sempre il 100 %, perché la settimana 0 corrisponde, per definizione, alla settimana di registrazione. I valori nelle colonne successive mostrano con quale rapidità il prodotto perde utenti: più lenta è la diminuzione, più solida è la retention.
import pandas as pd
df = pd.read_csv('user_events.csv', parse_dates=['event_date'])
print(df.dtypes)
print(df.head())Assegnare a ogni utente la settimana di coorte
La settimana di coorte è la settimana del primo evento di ogni utente. Utilizzi groupby('user_id')['event_date'].min() per trovare la data del primo evento di ogni utente, quindi la converta in una settimana ISO con .dt.to_period('W'). Unisca nuovamente questa etichetta di coorte al DataFrame principale degli eventi, in modo che ogni riga sappia a quale settimana di coorte appartiene il relativo utente.
cohort_week = df.groupby('user_id')['event_date'].min().dt.to_period('W').rename('cohort_week')
df = df.join(cohort_week, on='user_id')
df['event_week'] = df['event_date'].dt.to_period('W')
print(df[['user_id', 'event_date', 'cohort_week', 'event_week']].head())Calcolare il numero di settimane dalla coorte
Il numero della settimana (chiamato anche numero del periodo o anzianità) è la differenza tra la settimana dell’evento e la settimana di coorte. La sottrazione tra Period di Pandas restituisce uno scarto intero. La settimana 0 indica che l’utente era attivo durante la settimana di registrazione; la settimana 4 indica che è tornato quattro settimane dopo. Questa colonna degli scarti diventa l’asse delle colonne della matrice di retention.
df['week_number'] = (df['event_week'] - df['cohort_week']).apply(lambda x: x.n)
print(df[['user_id', 'cohort_week', 'event_week', 'week_number']].head(10))Contare gli utenti attivi per coppia coorte-settimana
Raggruppi i dati per cohort_week e week_number e conti gli utenti unici per ottenere la matrice grezza dei conteggi di retention. Ogni cella indica quanti utenti della coorte C erano attivi nella settimana N. La diagonale dall’angolo in alto a sinistra a quello in basso a destra (settimana 0 per ogni coorte) fornisce le dimensioni delle coorti, che costituiscono i denominatori per il calcolo delle percentuali.
retention_counts = (
df.groupby(['cohort_week', 'week_number'])['user_id']
.nunique()
.reset_index(name='active_users')
)
print(retention_counts.head(10))Convertire i dati in una matrice di retention
Utilizzi pivot_table() per trasformare i conteggi di retention in formato lungo in una matrice larga: le righe rappresentano le settimane di coorte e le colonne i numeri delle settimane. aggfunc='sum' gestisce eventuali chiavi duplicate create dal raggruppamento. Riempa con 0 le celle relative alle settimane in cui nessun utente della coorte era attivo. Questa matrice è il nucleo dell’analisi della retention.
retention_matrix = retention_counts.pivot_table(
index='cohort_week',
columns='week_number',
values='active_users',
aggfunc='sum'
).fillna(0)
print(retention_matrix.iloc[:5, :8])Calcolare le percentuali di retention
Divida ogni riga per il relativo valore della settimana 0 per convertire i conteggi in percentuali. La colonna della settimana 0 rappresenta la dimensione della coorte ed è memorizzata in retention_matrix[0]. Utilizzi divide(cohort_sizes, axis=0) e moltiplichi per 100. Arrotondi a una cifra decimale per migliorare la leggibilità. Il risultato è la heatmap standard della retention prevista nei report di product analytics.
cohort_sizes = retention_matrix[0]
retention_pct = retention_matrix.divide(cohort_sizes, axis=0) * 100
retention_pct = retention_pct.round(1)
print(retention_pct.iloc[:5, :8])Interpretare la curva di retention
Legga la tabella di retention in diagonale: ogni riga diminuisce nel tempo. Un prodotto con retention elevata mostrerà valori come 100, 60, 50, 45, 42: un calo iniziale rapido seguito da un plateau stabile. Un prodotto con retention scarsa mostrerà 100, 30, 15, 8, 4: un calo continuo senza plateau. Il livello del plateau, se presente, è chiamato tasso di retention a lungo termine ed è il KPI di retention più importante.
# Average retention rate per week number across all cohorts
avg_retention = retention_pct.mean(axis=0)
print('Average retention by week:')
print(avg_retention.round(1))Individuare le coorti migliori e peggiori
Confronti le prestazioni delle coorti osservando la retention alla settimana 4 o 8 tra le diverse coorti. La coorte con la retention più alta alla settimana 4 ha beneficiato di un miglioramento del prodotto o di un canale di acquisizione efficace; la coorte peggiore potrebbe essere stata acquisita tramite un canale di bassa qualità. Utilizzi .loc[:, 4].sort_values(ascending=False) per ordinare le coorti in base alla retention della settimana 4.
if 4 in retention_pct.columns:
week4 = retention_pct[4].sort_values(ascending=False)
print('Cohorts ranked by week-4 retention:')
print(week4)Visualizzare la retention con una heatmap
Una heatmap con codifica a colori è la visualizzazione canonica per le tabelle di retention. Utilizzi sns.heatmap() con annot=True per mostrare il valore percentuale all’interno di ogni cella e una mappa di colori divergente (retention bassa = rosso, alta = verde). Imposti vmin=0 e vmax=100 per rendere confrontabili i colori tra scale di retention diverse.
import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(14, 6))
sns.heatmap(retention_pct.iloc[:, :13],
annot=True, fmt='.0f',
cmap='RdYlGn', vmin=0, vmax=100,
ax=ax, linewidths=0.5)
ax.set_title('Weekly Cohort Retention (%)')
ax.set_xlabel('Week Number')
ax.set_ylabel('Cohort Week')
plt.tight_layout()
plt.show()Tracciare la curva di retention
Un grafico a linee della retention media per settimana comunica la curva complessiva di calo più chiaramente di una heatmap quando si presenta l’analisi a stakeholder non tecnici. Tracci la curva media di retention con una banda ombreggiata che mostri più o meno una deviazione standard, così da comunicare la variabilità tra le coorti. Il plateau, dove la linea si appiattisce, rappresenta il livello minimo naturale di retention del prodotto.
avg_ret = retention_pct.mean(axis=0)
std_ret = retention_pct.std(axis=0)
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(avg_ret.index, avg_ret.values, color='steelblue', linewidth=2, marker='o')
ax.fill_between(avg_ret.index, avg_ret - std_ret, avg_ret + std_ret, alpha=0.2)
ax.set_xlabel('Week Number')
ax.set_ylabel('Retention %')
ax.set_title('Average Cohort Retention Curve')
plt.tight_layout()
plt.show()Esportare la tabella di retention
Esporti la tabella di retention in Excel, così i product manager potranno condividerla nelle revisioni settimanali. Utilizzi to_excel() e applichi manualmente la formattazione condizionale in Excel, oppure utilizzi Styler.background_gradient() in Pandas per aggiungere direttamente i colori al file esportato. La tabella di retention è uno degli output più richiesti nella product analytics.
styled = retention_pct.style.background_gradient(cmap='RdYlGn', vmin=0, vmax=100)
styled.to_excel('retention_table.xlsx', engine='openpyxl')
print('Retention table saved to retention_table.xlsx')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: assegnare gli utenti alle settimane di coorte e calcolare gli scarti settimanali, trasformare i dati in una matrice di retention e convertire i conteggi in percentuali e visualizzare la retention delle coorti con una heatmap e una curva di retention media. Ora analizzeremo la visualizzazione dei percorsi degli utenti tramite grafici a barre del funnel e heatmap.
Domande Frequenti
La lezione «Tabella di retention per coorte» è gratuita?
Sì — il testo completo di «Tabella di retention per coorte» è 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 «Tabella di retention per coorte»?
Costruisca una matrice di retention per coorte che mostri la percentuale di utenti della settimana 0 ancora attivi nelle settimane successive usando pivot_table. 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 «Tabella di retention per coorte»?
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
- Sessionizzazione e sequenza degli eventi
- Analisi del funnel
- Tabella di retention per coorte
- Visualizzare i percorsi degli utenti