Analyse de 541 909 transactions d'un site e-commerce britannique pour segmenter les clients et identifier les leviers de croissance.
Stack : Python · pandas · Power BI · DAX
Tous les clients ne se valent pas. L'objectif de ce projet est de segmenter une base client pour orienter les actions marketing : qui fidéliser, qui réactiver, et où concentrer le budget.
Dataset : Online Retail (Kaggle) — 541 909 transactions, décembre 2010 à décembre 2011, site e-commerce UK.
| Indicateur | Valeur |
|---|---|
| Chiffre d'affaires | 8,91 M£ |
| Commandes | 18 530 |
| Clients uniques | 4 338 |
| Panier moyen | 480,87 £ |
| Segment | Part des clients |
|---|---|
| Occasionnels | 40,6 % |
| VIP | 30,4 % |
| À réactiver | 14,9 % |
| Fidèles | 14,1 % |
Le Royaume-Uni représente l'écrasante majorité du chiffre d'affaires. Les Pays-Bas, l'Irlande et l'Allemagne suivent loin derrière — mais avec des paniers moyens élevés, ce qui suggère un potentiel de développement sur ces marchés.
Le chiffre d'affaires mensuel est irrégulier sur le premier semestre 2011, puis progresse fortement à partir de septembre pour culminer en novembre. Un pic de fin d'année cohérent avec une activité de vente de cadeaux et articles de décoration.
- Fidéliser les VIP — ils génèrent une part disproportionnée du revenu pour une fraction de la base.
- Réactiver les clients dormants — 14,9 % de la base représente du revenu récupérable sans coût d'acquisition.
- Anticiper le pic de novembre — stocks et campagnes à préparer dès septembre.
- Suppression des transactions sans identifiant client
- Retrait des quantités et prix négatifs ou nuls (retours et annulations)
- Suppression des doublons
- Calcul du montant par ligne (
Quantity × UnitPrice)
Trois indicateurs calculés par client :
- Récence — nombre de jours depuis le dernier achat
- Fréquence — nombre de commandes distinctes
- Montant — chiffre d'affaires cumulé
Chaque client reçoit un score de 1 à 4 sur ces trois axes, calculé par quartiles sur la population :
- R_score — récence inversée (4 = achat récent, 1 = achat ancien)
- F_score — fréquence (4 = achète souvent)
- M_score — montant (4 = dépense beaucoup)
Les règles d'affectation, évaluées dans cet ordre :
| Segment | Condition |
|---|---|
| VIP | R ≥ 3 et F ≥ 3 et M ≥ 3 |
| Fidèles | R ≥ 3 et F ≥ 2 |
| À réactiver | R ≤ 2 et F ≥ 3 |
| Occasionnels | tous les autres |
L'ordre des conditions compte : un client remplissant plusieurs critères est classé dans le premier segment qui correspond. Un client VIP satisfait aussi la condition « Fidèles », mais il est capté avant.
La logique métier derrière ces règles :
- VIP — récent, fréquent et dépensier sur les trois axes. La priorité de fidélisation.
- Fidèles — actifs récemment avec une fréquence correcte, mais sans le niveau de dépense des VIP. Un potentiel de montée en gamme.
- À réactiver — la combinaison la plus intéressante : ils achetaient souvent (F ≥ 3) mais ne sont plus revenus (R ≤ 2). Ce sont des clients perdus qui ont déjà prouvé leur valeur — d'où un coût de réactivation bien inférieur à un coût d'acquisition.
- Occasionnels — le reste : achats ponctuels sans régularité.
- KPI globaux : CA total, commandes, clients uniques, panier moyen
- Évolution mensuelle du chiffre d'affaires
- Répartition des segments RFM
- Top 10 des pays par chiffre d'affaires
- Filtre interactif par pays
├── images/
│ └── dashboard.png # Capture du dashboard
├── ecommerce_analysis.py # Script d'analyse et d'export
├── customer_rfm_segments.csv # Segments clients (généré par le script)
├── ecommerce_dashboard.pbix # Fichier Power BI
└── README.md
Le dataset source n'est pas inclus (volume trop important pour un dépôt Git). Il est disponible sur Kaggle sous le nom Online Retail.
# 1. Télécharger le dataset Online Retail depuis Kaggle
# 2. Le placer dans un dossier data/ à la racine du projet
pip install pandas
python ecommerce_analysis.pyLe script exporte le dataset nettoyé et les segments clients.
Note sur le fichier
.pbix— les sources de données pointent vers des chemins locaux. À l'ouverture, il faudra les redéfinir viaAccueil→Transformer les données→Paramètres de la source de données.
- Une seule année de données — impossible de distinguer une tendance de fond d'un effet ponctuel. Le pic de novembre semble saisonnier, mais un seul cycle ne permet pas de le confirmer.
- Seuils RFM arbitraires — les bornes entre segments reposent sur des choix métier, pas sur une méthode statistique. Un clustering (K-means) donnerait des groupes plus objectifs.
- Transactions sans client identifié écartées — cela représente une part non négligeable du volume, exclue de l'analyse RFM.
- Un seul marché dominant — le Royaume-Uni écrase les autres pays, ce qui rend les comparaisons internationales peu robustes.
- Clustering K-means pour objectiver les segments
- Calcul de la valeur vie client (CLV) par segment
- Analyse de cohortes pour mesurer la rétention dans le temps
- Analyse du panier (règles d'association) pour identifier les produits achetés ensemble
