logo oujood
🔍

Visualiser des données Pandas avec Seaborn

Seaborn est une bibliothèque de visualisation construite sur Matplotlib, conçue spécifiquement pour l'analyse de données statistiques. Elle s'intègre naturellement avec Pandas et produit des graphiques plus soignés avec moins de code.

OUJOOD.COM

Seaborn vs Matplotlib : pourquoi utiliser les deux

Matplotlib est la fondation — flexible et puissante, mais verbeuse pour les graphiques statistiques courants. Seaborn est construit par-dessus et fournit des fonctions de haut niveau pour les visualisations analytiques les plus fréquentes : distributions, comparaisons par catégories, matrices de corrélation. Les deux se complètent : Seaborn crée le graphique, Matplotlib le personnalise.

Seaborn s'installe séparément :

  📋 Copier le code

pip install seaborn

Heatmap de corrélation

La heatmap de corrélation est le graphique le plus utilisé pour visualiser les relations entre toutes les variables numériques d'un DataFrame. Les couleurs encodent l'intensité et le signe de la corrélation.

  📋 Copier le code

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
n = 100
df = pd.DataFrame({
    "température": np.random.uniform(15, 35, n),
    "humidité":    np.random.uniform(30, 90, n),
    "pression":    np.random.uniform(1000, 1025, n)
})
df["ventes_glaces"]   = df["température"] * 5 + np.random.normal(0, 15, n)
df["ventes_manteaux"] = -df["température"] * 3 + 120 + np.random.normal(0, 10, n)

# Heatmap de la matrice de corrélation
plt.figure(figsize=(8, 6))
sns.heatmap(
    df.corr().round(2),
    annot=True,          # afficher les valeurs dans les cellules
    cmap="coolwarm",     # rouge positif, bleu négatif
    vmin=-1, vmax=1,     # fixer l'échelle de couleurs
    linewidths=0.5
)
plt.title("Matrice de corrélation")
plt.tight_layout()
plt.show()

annot=True affiche le coefficient numérique dans chaque cellule. cmap="coolwarm" utilise le rouge pour les corrélations positives et le bleu pour les négatives, avec le blanc au centre pour les valeurs proches de zéro. Fixer vmin=-1, vmax=1 garantit que l'échelle est cohérente et que 0 correspond toujours au blanc.

Boxplot pour comparer des distributions

Le boxplot (boîte à moustaches) compare la distribution d'une variable numérique entre plusieurs catégories. Il montre la médiane, les quartiles et les valeurs aberrantes en un seul graphique.

  📋 Copier le code

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(0)
df = pd.DataFrame({
    "département": np.repeat(["RH", "Tech", "Finance", "Marketing"], 50),
    "salaire": np.concatenate([
        np.random.normal(2800, 400, 50),
        np.random.normal(3800, 600, 50),
        np.random.normal(3400, 500, 50),
        np.random.normal(3100, 450, 50)
    ])
})

# Boxplot par département
plt.figure(figsize=(9, 5))
sns.boxplot(data=df, x="département", y="salaire", palette="Set2")
plt.title("Distribution des salaires par département")
plt.xlabel("Département")
plt.ylabel("Salaire (€)")
plt.tight_layout()
plt.show()

La ligne centrale de chaque boîte est la médiane. Les bords de la boîte sont les quartiles Q1 (25 %) et Q3 (75 %). Les moustaches s'étendent jusqu'à 1,5 fois l'intervalle interquartile. Les points au-delà sont des valeurs aberrantes. En un coup d'œil, vous voyez si les distributions se chevauchent, quelle catégorie a la médiane la plus haute, et où se trouvent les outliers.

Barplot avec intervalles de confiance

sns.barplot() affiche la moyenne par catégorie avec un intervalle de confiance à 95 % automatiquement calculé. C'est plus informatif qu'un simple graphique en barres car il montre l'incertitude.

  📋 Copier le code

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(1)
df = pd.DataFrame({
    "département": np.repeat(["RH", "Tech", "Finance", "Marketing"], 30),
    "satisfaction": np.concatenate([
        np.random.normal(3.8, 0.8, 30),
        np.random.normal(4.2, 0.6, 30),
        np.random.normal(3.5, 0.9, 30),
        np.random.normal(4.0, 0.7, 30)
    ]).clip(1, 5)
})

# Moyenne + intervalle de confiance par catégorie
plt.figure(figsize=(8, 5))
sns.barplot(data=df, x="département", y="satisfaction", palette="Blues_d", errorbar="ci")
plt.title("Satisfaction moyenne par département")
plt.ylabel("Score de satisfaction (1–5)")
plt.ylim(0, 5)
plt.tight_layout()
plt.show()

Pairplot pour l'exploration multi-variables

sns.pairplot() crée une grille de graphiques qui montre la relation entre chaque paire de variables numériques. C'est l'outil d'exploration le plus complet pour un premier regard sur un nouveau jeu de données.

  📋 Copier le code

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)
n = 80
df = pd.DataFrame({
    "âge":      np.random.randint(22, 60, n),
    "salaire":  np.random.normal(3200, 800, n),
    "score":    np.random.uniform(50, 100, n),
    "niveau":   np.random.choice(["junior", "senior"], n)
})

# Pairplot avec couleur par catégorie
sns.pairplot(df, hue="niveau", plot_kws={"alpha": 0.6})
plt.suptitle("Relations entre variables — junior vs senior", y=1.02)
plt.tight_layout()
plt.show()

Avec hue="niveau", chaque point est coloré selon la catégorie, ce qui permet de voir si les deux groupes ont des distributions différentes. La diagonale affiche les histogrammes de chaque variable par groupe. Sur un DataFrame avec plus de 6 colonnes numériques, le pairplot devient difficile à lire — limitez-vous aux colonnes pertinentes avec sns.pairplot(df[["col1", "col2", "col3"]]).

Par carabde | Mis à jour le 26 avril 2026