Chaîne complète d'analyse d'un jeu de données commerciales : nettoyage, chargement en base SQL, requêtes d'agrégation, puis restitution sous deux formes — un rapport Excel qui se recalcule seul et un tableau de bord web.
Les données utilisées sont un jeu synthétique de 2 425 commandes réparties sur 24 mois, construit pour cet exercice.
1. Diagnostic et nettoyage (explore_donnees.py)
Le fichier brut contenait trois types de défauts, traités différemment selon leur nature :
| Défaut | Volume | Traitement | Justification |
|---|---|---|---|
| Doublons exacts | 25 | Suppression | Aucune information perdue |
| Quantités négatives | 8 | Valeur absolue | Hypothèse d'erreur de saisie |
Segment_Client manquant |
15 | Catégorie « Non renseigné » | Variable catégorielle : une moyenne n'aurait aucun sens, et supprimer les lignes aurait fait perdre les autres colonnes |
Résultat : 2 400 lignes exploitables, sans doublon ni valeur manquante.
2. Chargement et interrogation SQL
Les données propres sont chargées dans une base SQLite, puis interrogées par cinq requêtes d'agrégation : chiffre d'affaires et profit par région, top des sous-catégories, évolution mensuelle, taux de remise et profit par segment client, et croisement région × catégorie.
3. Restitution
generer_rapport.pyproduit un classeur Excel à quatre feuilles avec 37 formules vivantes (SUMIF, COUNTIF) et un graphique natif. Les indicateurs pointent vers la feuille de données : modifier une ligne recalcule tout le rapport. Le fichier reste un outil, pas une photo figée.dashboard_ventes.htmlprésente les mêmes indicateurs sous forme de tableau de bord interactif (Chart.js).
- Chiffre d'affaires : 1 562 023 € sur 24 mois, profit 167 216 €, marge globale 10,7 %, panier moyen 651 €
- Forte concentration géographique : l'Île-de-France pèse 513 478 €, soit 33 % du CA à elle seule
- Concentration produit plus marquée encore : la catégorie Technologie représente 72 % du chiffre d'affaires
- Saisonnalité nette : pic à 114 777 € en décembre 2024, creux autour de 30 000 € en août — un écart de 1 à 4 entre le meilleur et le pire mois, qui justifierait d'anticiper stocks et effectifs en fin d'année
- Le segment Particulier dégage le plus de profit (75 359 €) malgré une remise moyenne inférieure à celle des Professionnels
| Fichier | Rôle |
|---|---|
explore_donnees.py |
nettoyage, chargement SQLite, requêtes d'analyse |
generer_rapport.py |
génération du rapport Excel à formules vivantes |
dashboard_ventes.html |
tableau de bord interactif (Chart.js) |
analyse_resultats.md |
synthèse des résultats |
ventes_brutes.csv |
jeu de données d'entrée |
pip install pandas openpyxl
python explore_donnees.py # nettoyage + requêtes SQL
python generer_rapport.py # génère rapport_ventes_genere.xlsxLe tableau de bord s'ouvre directement dans un navigateur.
Python (pandas) · SQLite · SQL · openpyxl · Chart.js
Le traitement des quantités négatives repose sur une hypothèse d'erreur de saisie. Dans un contexte réel, ces lignes pourraient correspondre à des retours ou des avoirs : la bonne démarche serait de les isoler et de faire trancher le métier plutôt que de décider seul.