Projet de segmentation de clients pour un site e-commerce (OLIST)
Analyse comportementale et géographique des acheteurs afin d’identifier des profils types et d’adapter la stratégie marketing.
L’objectif est de segmenter les clients d’un site e-commerce brésilien à partir de leurs comportements d’achat, de leur satisfaction et de leurs caractéristiques logistiques, afin de :
- mieux comprendre les différents profils de clients,
- personnaliser les actions marketing,
- et maintenir une segmentation évolutive dans le temps.
Le dépôt contient :
-
Notebooks Jupyter regroupant :
- Préparation et Feature Engineering
- Nettoyage et fusion des tables SQL :
customers,orders,order_items,products,sellers,order_reviews,geolocation. - Sélection de variables explicatives :
total_purchase,latest_purchase_numeric,average_score,total. - Variables descriptives :
latt,long,delay,delivery_time,shipping.
- Nettoyage et fusion des tables SQL :
- Analyses exploratoires
- Distribution géographique des clients, comportement d’achat et score de satisfaction.
- Modélisation des clusters
- Tests de modèles : K-Means, Agglomerative Clustering, DBSCAN.
- Évaluation via Silhouette Score et Adjusted Rand Index (ARI).
- Analyse et interprétation des clusters
- Description actionnable des segments (profils clients).
- Préparation et Feature Engineering
-
Scripts SQL utilisés pour extraire et transformer les données brutes.
-
Présentation PowerPoint résumant les étapes du projet et les insights marketing associés.
-
Préparation des données
- Données issues de la base OLIST (2016-09 → 2018-09)
- 93 358 clients uniques, 99 441 opérations d’achat, 3 905 vendeurs.
- 97 % d’achats uniques, 75 % de livraisons anticipées.
-
Feature Engineering
- Conversion des dates, agrégation par client, création de variables comportementales et monétaires.
-
Modélisation et comparaison
- K-Means : 6 clusters retenus (Silhouette & ARI ≈ 0.93)
- Agglomerative Clustering : 5 clusters, bonne lisibilité mais moins flexible
- DBSCAN : robuste mais peu pertinent pour ce dataset
-
Clusterisation finale : K-Means
- Simplicité, performance et scalabilité.
- Permet un recalcul régulier pour suivre les évolutions comportementales.
| Cluster | Profil | Description synthétique |
|---|---|---|
| 0 | 🆕 Newcomers | Nouveaux clients récents, peu d’achats mais bonne satisfaction. |
| 1 | 😠 Déçus | Clients peu satisfaits malgré plusieurs achats. |
| 2 | 🛒 Serial-Shoppers | Clients fidèles, satisfaction élevée, fréquence d’achat importante. |
| 3 | 😡 Pas Contents | Clients insatisfaits avec retards de livraison. |
| 4 | 🧾 One-Shop | Achat unique, pas de réachat identifié. |
| 5 | 🏬 Grossistes | Clients à très forte valeur monétaire et faible taux de livraison. |
- Resegmentation automatique toutes les 6 semaines.
- Suivi de la stabilité via le ARI Score.
- Objectif : détecter les changements de comportement et adapter la stratégie marketing.
- Python : Pandas, NumPy, Matplotlib, Seaborn, Scikit-learn
- SQL : extraction et jointure des tables (via scripts inclus)
- Clustering : K-Means, Agglomerative, DBSCAN
- Évaluation : Silhouette Score, Adjusted Rand Index
- Visualisation : cartes géographiques, heatmaps, boxplots
segmentation_clients
│
├── Notebooks/
│ ├── Feature_Engineering_and_Analysis.ipynb
│ ├── Clustering_Models_Comparison.ipynb
│ ├── Cluster_Description.ipynb
│
├── SQL/
│ └── queries.sql
│
├── Martineau_Alexandre_5_presentation_072024.pdf
└── README.md
Le modèle K-Means offre une segmentation claire et exploitable des clients. Cette segmentation permet d’identifier 6 profils distincts, d’orienter les stratégies marketing et de mettre en place un suivi dynamique de la clientèle via un système de resegmentation périodique.