Calcolo delle metriche di retention e churn
Scorri per mostrare il menu
Le metriche di retention e churn sono strumenti essenziali nell'analisi delle coorti, utili per misurare quanto efficacemente il prodotto trattiene gli utenti nel tempo e dove si possono verificare perdite. Il tasso di retention quantifica la percentuale di utenti di una coorte che rimangono attivi dopo un determinato periodo. Il tasso di churn è il complemento, mostrando la percentuale di utenti che hanno smesso di interagire. Il tasso di sopravvivenza traccia la probabilità che un utente rimanga attivo fino a ciascun periodo, offrendo una panoramica della longevità degli utenti.
Formule:
- Tasso di Retention (al periodo n):
Retention Rate = (Number of users active in period n) / (Number of users in cohort at period 0); - Tasso di Churn (al periodo n):
Churn Rate = 1 - Retention Rate (at period n); - Tasso di Sopravvivenza (al periodo n):
Survival Rate = (Number of users still active at period n) / (Number of users in cohort at period 0).
Queste metriche vengono spesso visualizzate tramite curve di retention o grafici di sopravvivenza, che aiutano a individuare rapidamente pattern come cali improvvisi o periodi di stabilità. Monitorando questi tassi su più coorti e periodi temporali, è possibile identificare strategie di engagement efficaci e aree che necessitano miglioramenti.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566import pandas as pd import numpy as np import matplotlib.pyplot as plt # Example cohort data: each row is a user, columns are activity in each month (1 = active, 0 = inactive) data = { "user_id": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "cohort_month": ["2023-01"] * 5 + ["2023-02"] * 5, "month_0": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # All users active at signup "month_1": [1, 0, 1, 1, 0, 1, 1, 0, 1, 1], "month_2": [1, 0, 0, 1, 0, 1, 0, 0, 1, 0], "month_3": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], } df = pd.DataFrame(data) # Calculating retention, churn, and survival rates for each cohort results = [] for cohort, group in df.groupby("cohort_month"): cohort_size = len(group) retention = [] churn = [] survival = [] users_remaining = cohort_size for month in ["month_0", "month_1", "month_2", "month_3"]: active = group[month].sum() retention_rate = active / cohort_size retention.append(retention_rate) churn.append(1 - retention_rate) survival.append(users_remaining / cohort_size) users_remaining = active # Update for next period results.append({ "cohort_month": cohort, "retention": retention, "churn": churn, "survival": survival, }) # Converting results to DataFrame for plotting metrics_df = pd.DataFrame(results) months = ["month_0", "month_1", "month_2", "month_3"] # Plot retention curves plt.figure(figsize=(10, 5)) for idx, row in metrics_df.iterrows(): plt.plot(months, row["retention"], marker="o", label=f"Cohort {row['cohort_month']}") plt.title("Cohort Retention Curves") plt.xlabel("Months Since Signup") plt.ylabel("Retention Rate") plt.legend() plt.show() # Plot survival curves plt.figure(figsize=(10, 5)) for idx, row in metrics_df.iterrows(): plt.plot(months, row["survival"], marker="o", label=f"Cohort {row['cohort_month']}") plt.title("Cohort Survival Curves") plt.xlabel("Months Since Signup") plt.ylabel("Survival Rate") plt.legend() plt.show() # Printing calculated metrics print(metrics_df[["cohort_month", "retention", "churn", "survival"]])
Questo codice mostra come calcolare e visualizzare i tassi di retention, churn e sopravvivenza per coorti di utenti utilizzando pandas e matplotlib in Python.
L'obiettivo è analizzare come si comportano nel tempo i gruppi di utenti (coorti), concentrandosi sul loro coinvolgimento e sulla loro longevità rispetto a un prodotto.
Struttura dei dati:
- I dati sono organizzati in un DataFrame dove ogni riga rappresenta un utente;
- Le colonne includono un identificativo univoco dell'utente, il mese di coorte (quando l'utente si è registrato) e indicatori binari di attività per ciascun mese (1 = attivo, 0 = inattivo).
Logica di calcolo:
Per ogni coorte, il codice:
- Calcola il tasso di retention per ogni mese come proporzione di utenti ancora attivi rispetto alla dimensione iniziale della coorte;
- Calcola il tasso di churn come complemento della retention (1 - tasso di retention);
- Traccia il tasso di sopravvivenza, che mostra la probabilità che un utente rimanga attivo fino a ciascun periodo, aggiornando il conteggio degli utenti rimanenti dopo ogni mese.
Visualizzazione:
- Le curve di retention e sopravvivenza vengono tracciate per ciascuna coorte utilizzando matplotlib;
- Questi grafici permettono di confrontare visivamente quanto rapidamente gli utenti abbandonano (churn) o rimangono coinvolti (retention/sopravvivenza) tra coorti e periodi temporali, rivelando trend e pattern nel coinvolgimento degli utenti.
Interpretare i metriche di retention e churn è fondamentale per prendere decisioni aziendali informate. Alti tassi di retention indicano che gli utenti trovano valore continuo nel prodotto, suggerendo un forte coinvolgimento e un buon product-market fit. Al contrario, alti tassi di churn possono segnalare problemi come bisogni degli utenti non soddisfatti, onboarding inefficace o pressione competitiva. Le curve di sopravvivenza aiutano a visualizzare la velocità con cui i cohorti si riducono: cali ripidi possono rivelare quando gli utenti tipicamente perdono interesse.
Monitorando regolarmente queste metriche, è possibile identificare tendenze nel tempo e tra diversi cohorti. Ad esempio, se il lancio di una nuova funzionalità coincide con un aumento della retention, potrebbe valere la pena investire ulteriormente in quella direzione. Al contrario, se il churn aumenta dopo un aggiornamento specifico, potrebbe essere necessario migliorare il prodotto o offrire ulteriore supporto agli utenti. In definitiva, queste metriche consentono di testare ipotesi, ottimizzare i percorsi utente e allocare le risorse in modo efficace.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione