Analyse complète de 120 000+ clients bancaires pour identifier les profils à risque de défaut de paiement. Pipeline de données, feature engineering, scoring de risque et rapport Excel automatisé.
Scénario : En tant que Data Analyst dans une banque, le Risk Manager demande une analyse des données clients pour comprendre les profils à risque de défaut et orienter les décisions d'octroi de crédit.
Questions business :
- Quel est le profil type d'un client qui fait défaut ?
- Quelles variables sont les plus prédictives du défaut ?
- Quelles tranches d'âge nécessitent une surveillance renforcée ?
- À partir de quel seuil d'utilisation du crédit le risque explose ?
| Insight | Détail |
|---|---|
| Taux de défaut global | ~6.7% (1 défaut pour 13 bons payeurs) |
| Tranche d'âge la plus risquée | 18-30 ans |
| Variable la plus prédictive | Retards de paiement passés (30j, 60j, 90j) |
| Seuil critique d'utilisation crédit | Au-delà de 80%, le risque explose |
| Scoring : taux de défaut chez les "Critiques" | ~3x le taux moyen |
7 nouvelles features créées à partir des données brutes :
| Feature | Logique | Impact |
|---|---|---|
total_retards |
Somme de tous les retards (30j + 60j + 90j) | Agrège les signaux de retard |
a_retard_grave |
1 si retard 90j+, 0 sinon | Signal binaire fort |
tranche_age |
Catégorisation de l'âge | Permet l'analyse par segment |
revenu_par_personne |
Revenu / (personnes à charge + 1) | Mesure la pression financière réelle |
charge_mensuelle |
DebtRatio × MonthlyIncome | Estime les dettes mensuelles |
score_risque |
Scoring pondéré multi-critères | Synthèse des signaux de risque |
categorie_risque |
Faible / Modéré / Élevé / Critique | Classification actionnable |
- Langage : Python 3.14
- Data : Pandas, NumPy
- Visualisation : Matplotlib, Seaborn
- Rapport : openpyxl (Excel automatisé)
- Dataset : Give Me Some Credit — Kaggle
bank-client-scoring-eda/
├── README.md
├── requirements.txt
├── data/
│ ├── raw/ # Dataset Kaggle (non versionné)
│ └── cleaned/ # Données nettoyées + features
├── src/
│ ├── explore.py # Analyse exploratoire (EDA)
│ ├── clean.py # Nettoyage + Feature Engineering
│ ├── analyze.py # Analyse de risque approfondie
│ └── export_report.py # Génération rapport Excel
├── reports/
│ ├── figures/ # 10 graphiques (PNG, 300dpi)
│ └── rapport_risque_client.xlsx # Rapport Excel 4 onglets
└── notebooks/
Dataset Kaggle → EDA (explore.py) → Nettoyage (clean.py) → Analyse (analyze.py) → Rapport (export_report.py)
↓ ↓ ↓ ↓ ↓
data/raw/ reports/figures/ data/cleaned/ reports/figures/ reports/*.xlsx
git clone https://github.com/Marco-ai-foundation/bank-client-scoring-eda.git
cd bank-client-scoring-eda
pip install -r requirements.txt
# 1. Placer le dataset Kaggle dans data/raw/cs-training.csv
# 2. Exécuter le pipeline :
python src/explore.py # Analyse exploratoire
python src/clean.py # Nettoyage + features
python src/analyze.py # Analyse de risque
python src/export_report.py # Rapport Excel- Nettoyage avancé : imputation par médiane groupée (par tranche d'âge), traitement des codes aberrants (96/98), gestion des outliers par seuils métier
- Feature Engineering : création de 7 features à partir des données brutes, dont un scoring de risque multi-critères
- Analyse de déséquilibre de classes : 93% vs 7%, compréhension de l'impact sur les métriques
- Data Storytelling : 10 visualisations orientées décision pour le Risk Manager
- Automatisation Excel : rapport professionnel 4 onglets avec openpyxl
- Vocabulaire métier : variable cible, corrélation de Pearson, class imbalance, outlier, binning, Pyramid Principle
- Modèle prédictif (Logistic Regression, Random Forest, XGBoost)
- Gestion du déséquilibre avec SMOTE
- Dashboard interactif avec Streamlit
- API de scoring en temps réel (FastAPI)
- Tests unitaires sur le pipeline de nettoyage
Marco — Étudiant en ingénierie informatique (ESIEA), future spécialisation IA & Data Science. En recherche d'alternance Data Analyst / Data Scientist.









