Test Python — Analyse de Données
Durée : 2h30 à 3h
Outils autorisés : Python, pandas, numpy, matplotlib.
PARTIE A — Concepts Python
Répondre brièvement :
1. Différence entre list, tuple, set, dict
2. Mutable vs immutable
3. map / filter / comprehension
4. Complexité list vs set
5. Pourquoi éviter [Link](axis=1) en pandas ?
PARTIE B — Data Cleaning
Un dataset CSV est fourni.
Écrire une fonction clean_transactions(df) qui :
- Convertit date en datetime (gérer erreurs)
- Nettoie amount (espaces, texte → NaN)
- Normalise city (trim, casse, ABJ → Abidjan)
- category en minuscules
- payment_status : PAID / FAILED / UNKNOWN
- Supprime doublons
Produire un rapport avec :
nb_lignes_initial, nb_lignes_final,
nb_dates_invalides, nb_amount_invalides, nb_doublons_supprimes
PARTIE C — Analyse
À partir des données clean :
1. CA total PAYÉ par ville
2. Top 2 catégories par montant payé
3. Ticket moyen par client
4. Clients suspects : refund + total payé > 0
PARTIE D — Visualisation
Avec matplotlib :
- Bar chart CA payé par ville
- Histogramme montants payés
- Boxplot montants par ville
PARTIE E — Qualité & Performance
E1. Refactor
proposer 2 améliorations :
lisibilité (fonctions, noms, structure)
performance (vectorisation, éviter apply, éviter copies)
E2. Mini test unitaires
Écrire 3 tests simples (sans framework o) :
date parsing sur “02/01/2026”
mapping ABJ → Abidjan
conversion “12 000” → 12000
PARTIE F — Réflexion Data
Explique :
1. Pourquoi une valeur négative peut être normale ?
2. Quelle métrique est robuste aux outliers : moyenne vs médiane ?
3. Quelle est la différence entre missing et invalid (et comment tu traites chacun) ?