📊 Problématique Business

Contexte : L'app mobile perd 60% des utilisateurs après J+1.

Objectif : Comprendre les comportements et améliorer la rétention à 40%.

🗂️ Dataset

🎯 Livrables

  • Courbes de rétention par cohorte
  • Segmentation comportementale (K-means)
  • Recommandations actionnables
  • Notebook Marimo interactif

🛠️ Stack Technique

Python Polars Lifelines Marimo Plotly K-means

💻 Code de Démarrage

"""
PROJET 2 : Analyse Cohortes Application Mobile
Analyse de rétention et segmentation
"""

import pandas as pd
import numpy as np
import plotly.express as px

# Générer des événements utilisateurs
def generate_user_events(n_users=1000):
    np.random.seed(42)
    events = []
    
    for user_id in range(1, n_users + 1):
        # Date d"installation
        install_date = datetime(2024, 1, 1) + timedelta(days=np.random.randint(0, 180))
        
        # Source d"acquisition
        source = np.random.choice(["Google Ads", "Facebook", "Organic"])
        
        # Event: Install
        events.append({
            "user_id": user_id,
            "event_type": "install",
            "timestamp": install_date,
            "source": source
        })
        
        # Sessions sur les premiers jours
        for day in range(1, 31):
            retention_prob = max(0.1, 0.8 - day * 0.03)
            if np.random.random() < retention_prob:
                events.append({
                    "user_id": user_id,
                    "event_type": "session",
                    "timestamp": install_date + timedelta(days=day),
                    "source": source
                })
    
    return pd.DataFrame(events)

# Calculer la rétention
def calculate_retention(df):
    # Identifier première installation
    installs = df[df["event_type"] == "install"]
    
    # Calculer rétention J+1, J+7, J+30
    retention = {}
    for source in df["source"].unique():
        source_users = installs[installs["source"] == source]
        retention[source] = {
            "D1": calculate_d1_retention(df, source_users),
            "D7": calculate_d7_retention(df, source_users),
            "D30': calculate_d30_retention(df, source_users)
        }
    
    return retention

# Exécution
df = generate_user_events(2000)
retention = calculate_retention(df)
print(retention)

📁 Fichier complet : projets/code/projet2_cohortes_starter.py

🚀 Exécution : python projet2_cohortes_starter.py

📊 Analyses à Réaliser

1. Rétention par Cohorte

Analyser la rétention des utilisateurs groupés par mois d'installation

2. Analyse par Source

Comparer la rétention selon la source d'acquisition (Google, Facebook, Organic)

3. Segmentation K-means

Créer 3 segments : Occasionnels, Actifs, Power Users