
Dans le chapitre précédent, vous avez appris à choisir la bonne famille de graphique avant même d'ouvrir votre éditeur de code. Vous savez désormais reconnaître une question de distribution, de relation, de composition. Il est temps de passer à l'exécution : vous allez produire vos deux premiers graphiques du notebook fil rouge, avec Seaborn.
Avant de tracer le moindre graphique, il y a une règle à intégrer : Seaborn attend vos données dans un format précis, le format long, aussi appelé tidy data. Concrètement, chaque ligne représente une observation (un patient), et chaque colonne représente une variable (l'âge, le sexe, la fréquence cardiaque). C'est exactement la structure de notre fichierheart.csv: 918 lignes, une par patient, 12 colonnes, une par variable. Bonne nouvelle, vous n'aurez donc aucune transformation à faire avant de commencer.
Une fois le format compris, trois paramètres suffisent à construire la quasi-totalité des graphiques Seaborn :x,y, ethue.
Les paramètresxetydéfinissent ce qui est représenté sur chaque axe. Mais attention : Seaborn distingue deux natures de variables, et cette distinction change tout. Une variable numérique (l'âge, la fréquence cardiaque) peut être placée sur un axe continu. Une variable catégorielle (le sexe, le type de douleur thoracique) regroupe les observations en classes distinctes.
Le paramètrehue, lui, est sans doute le plus puissant de Seaborn. Il permet d'encoder une troisième dimension directement par la couleur, sans ajouter de nouvel axe. Reprenons votre question du chapitre précédent : « Est-ce que les patients plus âgés ont une fréquence cardiaque maximale plus faible ? » Avechue="Sex", vous répondez en plus à une question implicite : est-ce que cette tendance est la même chez les hommes et chez les femmes ? Une seule ligne de code, une dimension supplémentaire.
Concrètement, voici la structure de base que vous retrouverez dans presque tous vos graphiques Seaborn de ce chapitre :
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(data=df, x="Age", y="MaxHR", hue="Sex")
plt.show()Vous remarquez que la syntaxe reste la même quel que soit le graphique : on passe le DataFrame complet viadata, puis on précise les colonnes à utiliser pourx,yet éventuellementhue. C'est cette cohérence qui rend Seaborn rapide à prendre en main, une fois cette logique acquise.
Maintenant que vous maîtrisez la logique générale, voyons les graphiques qui répondent concrètement aux questions Q1 et Q2 de notre fil rouge.
Le kdeplot, pour une question de distribution. Rappelez-vous la question Q1 : comment l'âge se répartit-il dans le dataset, et est-ce différent selon le diagnostic ? Lekdeplot(kernel density estimate) trace une courbe de densité lissée, plus agréable à lire qu'un histogramme classique lorsqu'on superpose plusieurs groupes.
sns.kdeplot(data=df, x="Age", hue="HeartDisease", fill=True)Avechue="HeartDisease", vous obtenez deux courbes superposées : celle des patients sains, celle des patients malades. Sur notre dataset, l'âge moyen des patients sans maladie cardiaque est d'environ 50,5 ans, contre près de 56 ans chez les patients malades : lekdeplotrend cette différence immédiatement visible, sans qu'il soit nécessaire de lire le moindre chiffre.
Le regplot, pour une question de relation. C'est la réponse à Q2 : existe-t-il un lien entre la fréquence cardiaque maximale et l'âge ? Leregplottrace un nuage de points et ajoute automatiquement une droite de régression, qui matérialise la tendance.
sns.regplot(data=df, x="Age", y="MaxHR")Leregplotne propose pas directement de paramètrehue: pour comparer deux groupes (par exemple les hommes et les femmes), on utilisera plutôtlmplot, une version qui génère unregplotpar catégorie.
Le heatmap, pour une question de composition ou de corrélation. Il affiche une matrice colorée, particulièrement utile pour visualiser d'un coup les corrélations entre toutes les variables numériques du dataset.
sns.heatmap(df.corr(numeric_only=True), annot=True, cmap="coolwarm")Le pairplot, enfin, pour une vue d'ensemble multi-variables. Il combine plusieurs nuages de points et distributions en une seule grille, utile en phase exploratoire pour repérer rapidement des relations intéressantes avant de les approfondir avec unregplotou unkdeplotdédié.
Un graphique fonctionnel n'est pas encore un graphique partageable. Cette dernière étape transforme un résultat brut en livrable présentable, et elle ne demande que quelques lignes de code supplémentaires.
La première chose à régler, c'est le thème global. La fonctionsns.set_theme()change immédiatement l'apparence de tous vos graphiques suivants. Plusieurs variantes existent :whitegridajoute une grille fine sur fond blanc, utile pour lire des valeurs précises ;darkgrid(le défaut) propose un fond gris avec grille blanche ;ticksretire la grille et ajoute de petites marques sur les axes, pour un rendu plus épuré.
sns.set_theme(style="whitegrid")Deuxième réglage : la palette de couleurs. Et ici, une règle simple à retenir : le type de palette doit correspondre à la nature de la variable encodée. Pour une variable catégorielle (commeSexouChestPainType), utilisez une palette qualitative, où chaque couleur est nettement distincte des autres, sans ordre implicite. Pour une variable numérique continue (comme une corrélation dans un heatmap), utilisez une palette séquentielle, où les couleurs suivent une progression logique du plus faible au plus élevé.
Enfin, n'oubliez pas les réglages de taille et de police, souvent négligés mais déterminants pour la lisibilité finale, surtout si votre graphique doit être inséré dans un rapport ou une présentation :
sns.figure(figsize=(8, 5))
sns.title("Distribution de l'âge selon le diagnostic", fontsize=14)Avec ces trois réglages, votre graphique passe du statut de simple résultat d'exploration à celui de livrable que vous pouvez présenter sans retouche supplémentaire.

Contexte
Vous avez maintenant tout ce qu'il faut pour produire vos deux premiers graphiques du notebook fil rouge. Avant de commencer, vérifiez que vous travaillez dans un notebook Python et que le fichier heart.csvest disponible dans le même environnement que votre notebook.
Vous aurez besoin depandas,seabornetmatplotlib. Dans Google Colab, ces bibliothèques sont généralement déjà disponibles. Si une erreur indique qu'une bibliothèque est manquante, installez-la dans une cellule du notebook avec :
!pip install seaborn matplotlib pandasÀ partir du fichierheart.csv, générez les graphiques répondant aux questions Q1 et Q2 :
Q1 : comment l'âge se distribue-t-il selon le diagnostic (HeartDisease) ? Utilisez unkdeplot.
Q2 : existe-t-il un lien entre la fréquence cardiaque maximale (MaxHR) et l'âge, et ce lien diffère-t-il selon le sexe ? Utilisez unregplot(oulmplotpour comparer les deux sexes).
Structure de départ fournie, à compléter :
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("heart.csv")
sns.set_theme(style=...)
# Q1 : distribution de l'âge selon le diagnostic
sns.kdeplot(data=..., x=..., hue=..., fill=...)
plt.title(...)
plt.show()
# Q2 : relation MaxHR / âge selon le sexe
sns.lmplot(data=..., x=..., y=..., hue=...)
plt.show()Soignez la présentation avant de considérer vos graphiques terminés : titre explicite, palette adaptée à la nature de la variable. Vous pouvez utiliser un assistant IA pour déboguer une erreur de syntaxe, mais pas pour générer le graphique à votre place : c'est votre raisonnement qui compte ici.
Seaborn fonctionne avec des données en format long (tidy data) : une ligne = une observation, une colonne = une variable.
Le paramètrehuepermet d'encoder une variable catégorielle en couleur : c'est l'outil central de la comparaison en Seaborn.
Quatre graphiques couvrent l'essentiel :kdeplot(distribution),regplot/lmplot(relation),heatmap(composition ou corrélation),pairplot(vue d'ensemble multivariée).
sns.set_theme()et le choix de palette sont les deux réglages qui font passer un graphique de fonctionnel à partageable.
Un graphique Seaborn est statique : il convient à l'exploration et aux livrables imprimables, pas à une audience qui veut interagir avec les données.
Vos deux premiers graphiques sont prêts, mais ils restent figés. Dans le prochain chapitre, vous allez découvrir comment leur donner vie avec Plotly, et permettre à votre lecteur d'explorer les données par lui-même.