← Parcours
📊

EDA & Visualisation des Données

Intermédiaire
🧠Comprendre en lisant n'est pas savoir écrire.🧠Un module est fini quand tu peux le reproduire fenêtre fermée.🧠Écris le problème en français avant d'écrire du code.🧠Une question impossible cache trois questions faciles.🧠Retape le code à la main. Puis referme et réécris-le.🧠Essaie d'abord, cherche ensuite.🧠Cherche « comment on écrit ça », jamais « qu'est-ce que je dois faire ».🧠Pour comprendre du code, casse-le.⌨️Une fonction qui plante sur un cas limite n'est pas finie.⌨️Si un bloc a un nom clair, il mérite d'être une fonction.⌨️Savoir lire une erreur vaut plus que connaître dix méthodes.⌨️Diagnostiquer, c'est éliminer dans l'ordre — pas essayer au hasard.⌨️Une optimisation sans mesure avant/après est une croyance.🔍Regarde le fichier avant de le charger.🔍Une performance anormalement bonne est une hypothèse à réfuter.🔍Cette valeur existe-t-elle à l'instant où je dois prédire ?🔍fit sur le train, transform partout.🔍Un chiffre qu'on ne sait pas raconter est un chiffre qu'on n'a pas compris.🔍Un graphique sans question n'a rien à dire.🤖Un score d'entraînement parfait n'est jamais une bonne nouvelle.🤖Le jeu de test ne se regarde qu'une fois.🤖Plus tu essaies de configurations, plus ton meilleur score est optimiste.🤖Un seuil de décision est un arbitrage économique, pas un réglage technique.🤖Commence toujours par une baseline. Note son score.🤖Le meilleur modèle n'est pas le plus précis, c'est celui qu'on peut maintenir.🚀Un modèle en production n'est pas un livrable, c'est un système vivant.🚀Un secret publié est un secret compromis.🚀Pour chaque permission : que se passe-t-il si cette machine est compromise ?🚀Un post-mortem qui cherche un coupable ne produit aucune amélioration.🚀« Nous n'utilisons pas cette variable » n'est pas une garantie d'équité.🚀Rends l'arbitrage explicite et chiffré. Ne le tranche pas en silence.🚀Un résultat qu'on ne sait pas reproduire est une anecdote.

🎯 Objectifs d'apprentissage

À l'issue de ce module, tu seras capable de :

  • 01Conduire une analyse exploratoire structurée sur un jeu de données inconnu
  • 02Choisir la représentation graphique adaptée à la question posée
  • 03Détecter fuites de données, biais d'échantillonnage et valeurs aberrantes
  • 04Produire un rapport d'analyse lisible par un décideur non technique

Prérequis

Modules Python et Mathématiques

Matplotlib & Seaborn : visualiser pour comprendre

60 min

La visualisation est le premier acte de tout projet ML sérieux. Un graphique révèle en secondes ce qu'un tableau de chiffres cache.

Matplotlib — la base de tout

import matplotlib.pyplot as plt
import numpy as np

# Graphique de base
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(epochs, train_loss, label="Train loss", color="#6366f1")
ax.plot(epochs, val_loss, label="Val loss", color="#f59e0b", linestyle="--")
ax.set_xlabel("Époque")
ax.set_ylabel("Loss")
ax.set_title("Courbes d'apprentissage")
ax.legend()
ax.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("learning_curves.png", dpi=150)
plt.show()

Subplots — plusieurs graphiques côte à côte

fig, axes = plt.subplots(1, 3, figsize=(15, 5))

# Distribution d'une variable
axes[0].hist(df["age"], bins=30, color="#6366f1", edgecolor="white")
axes[0].set_title("Distribution de l'âge")

# Boîte à moustaches
axes[1].boxplot([groupe_a, groupe_b, groupe_c], labels=["A", "B", "C"])
axes[1].set_title("Comparaison des groupes")

# Nuage de points
axes[2].scatter(df["revenus"], df["score_credit"], alpha=0.3, c=df["défaut"], cmap="RdYlGn")
axes[2].set_title("Revenus vs Score crédit")

plt.tight_layout()

Seaborn — visualisations statistiques élégantes

import seaborn as sns

# Définir un thème cohérent
sns.set_theme(style="darkgrid", palette="deep")

# Distribution + courbe de densité (KDE)
sns.histplot(data=df, x="salaire", hue="département", kde=True, bins=40)

# Matrice de corrélation — ESSENTIELLE en EDA
corr = df.select_dtypes("number").corr()
plt.figure(figsize=(12, 8))
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm",
            center=0, vmin=-1, vmax=1, square=True)
plt.title("Matrice de corrélation")
plt.show()

# Pairplot — toutes les relations deux-à-deux
sns.pairplot(df[["feature1", "feature2", "feature3", "target"]], hue="target")

# Violin plot — distribution + densité
sns.violinplot(data=df, x="catégorie", y="valeur", hue="groupe")

Ressource : Seaborn Gallery — https://seaborn.pydata.org/examples/index.html

✍️ Exercices de la leçon

2 exercices

Fais-les dans l'ordre, dans un vrai fichier .py — pas dans ta tête. Ne déplie la correction qu'après avoir écrit quelque chose, même faux.

🔧

Exercice AUne figure à trois panneaux

Application directe · Tu appliques ce que tu viens de lire.

Sur le dataset Titanic (sns.load_dataset("titanic")), produis une seule figure contenant trois panneaux côte à côte :

  1. 1.la distribution de l'âge (histogramme + courbe de densité)
  2. 2.une boîte à moustaches de l'âge par classe
  3. 3.un nuage de points âge × tarif, les points colorés selon la survie

Chaque panneau doit avoir un titre explicite et des axes nommés. Sauvegarde la figure en PNG à 150 dpi.

Puis ajoute, dans une seconde figure, la matrice de corrélation des variables numériques en heatmap annotée.

🎯

Exercice BQuatre questions, quatre graphiques

Page blanche · Aucun squelette : à toi de choisir la méthode.

Page blanche. Aucun type de graphique n'est indiqué.

Toujours sur le Titanic, un journaliste te pose quatre questions :

  1. 1.« Les passagers les plus riches avaient-ils plus de chances de survivre ? »
  2. 2.« Y avait-il des enfants dans toutes les classes ? »
  3. 3.« Le port d'embarquement change-t-il quelque chose ? »
  4. 4.« Voyager seul ou en famille, ça jouait ? »

Pour chacune : choisis le graphique adapté, produis-le, et écris en dessous la réponse en une phrase.

Le vrai exercice, c'est le choix. Un mauvais type de graphique peut rendre une réponse invisible — ou en suggérer une fausse. Avant de coder, écris pour chaque question : quel type de variable je compare (numérique ? catégorielle ?), et donc quel graphique.

🤖

Un point pas clair ? Clique sur 💬 Demander au tuteur en bas à droite.