Visualisation de Données avec Python

Classe B3 ASO 2025-2026

Module 3

Visualisation Statistique Élégante avec Seaborn

Utiliser Seaborn pour créer rapidement des graphiques statistiques complexes et esthétiques, en se concentrant sur l'interprétation des données.

3.1 Pourquoi Seaborn ? La Puissance au Service de la Simplicité

Vous avez appris à utiliser Matplotlib, un outil puissant mais qui peut demander beaucoup de code pour des graphiques statistiques courants.

Analogie : Construire avec des LEGO® 🧱

Matplotlib : C'est une boîte de briques LEGO® de base. Vous pouvez tout construire avec, mais chaque partie doit être assemblée manuellement.

Seaborn : C'est un kit LEGO® City pré-conçu. Il est construit avec les mêmes briques, mais vous offre des modèles complexes et esthétiques prêts à l'emploi en une seule instruction.

Les avantages de Seaborn :

3.2 L'Anatomie d'une Fonction Seaborn

La plupart des fonctions Seaborn partagent une signature similaire, ce qui les rend faciles à apprendre.

sns.nom_du_graphique(data=df, x='nom_colonne_x', y='nom_colonne_y', hue='colonne_categorie')

3.3 Explorer les Types de Graphiques par Question

La meilleure façon d'apprendre Seaborn est de penser en termes de questions que vous voulez poser à vos données.

Question A : "Comment mes données sont-elles distribuées ?"

Utilisez histplot (histogramme) pour voir la fréquence des valeurs, ou kdeplot pour une courbe de densité lisse.

import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset("tips") fig, axes = plt.subplots(1, 2, figsize=(14, 6)) fig.suptitle('Distribution du Montant Total de l\'Addition') # Histogramme sns.histplot(data=tips, x='total_bill', ax=axes[0]) axes[0].set_title('Histogramme (histplot)') # Graphe de densité sns.kdeplot(data=tips, x='total_bill', fill=True, ax=axes[1]) axes[1].set_title('Densité (kdeplot)') plt.show()

Question B : "Comment mes catégories se comparent-elles ?"

Utilisez countplot pour compter les occurrences, ou boxplot / violinplot pour comparer la distribution d'une variable numérique à travers différentes catégories.

fig, axes = plt.subplots(1, 3, figsize=(20, 7)) fig.suptitle('Comparaison des Dépenses par Jour') sns.countplot(data=tips, x='day', ax=axes[0]) axes[0].set_title('Nombre de Clients (countplot)') sns.boxplot(data=tips, x='day', y='total_bill', ax=axes[1]) axes[1].set_title('Distribution de l\'Addition (boxplot)') sns.violinplot(data=tips, x='day', y='total_bill', ax=axes[2]) axes[2].set_title('Distribution et Densité (violinplot)') plt.show()

Question C : "Comment deux variables numériques sont-elles liées ?"

Utilisez scatterplot pour un nuage de points, ou lmplot pour y ajouter automatiquement une droite de régression.

# Affiche la relation entre l'addition et le pourboire sns.lmplot( data=tips, x='total_bill', y='tip', hue='smoker', # Sépare les données par couleur height=6 ) plt.title("Relation Addition vs Pourboire") plt.show()

Question D : "Comment puis-je avoir une vue d'ensemble de tout ?"

Utilisez pairplot pour afficher un nuage de points pour chaque paire de variables et un histogramme pour chaque variable. C'est l'outil parfait pour une première exploration rapide.

# Crée une grille de graphiques montrant toutes les relations deux à deux sns.pairplot(data=tips, hue='sex') plt.show()

3.4 Personnaliser ses Graphiques Seaborn

Puisque Seaborn utilise Matplotlib en coulisses, vous pouvez toujours utiliser l'interface orientée objet de Matplotlib pour peaufiner vos graphiques.

# 1. On crée notre toile et notre zone de dessin avec Matplotlib fig, ax = plt.subplots(figsize=(10, 6)) # 2. On dit à Seaborn de dessiner sur NOTRE zone de dessin ('ax') sns.histplot(data=tips, x='total_bill', kde=True, ax=ax) # 3. On utilise les méthodes de Matplotlib pour personnaliser le tout ax.set_title("Distribution Personnalisée de l'Addition", fontsize=18) ax.set_xlabel("Montant de l'Addition ($)") ax.set_ylabel("Fréquence") plt.show()

Exercices Pratiques

Exercice 1 : Comparer des Groupes avec `boxplot`

En utilisant le jeu de données `tips`, créez un `boxplot` pour comparer la distribution des pourboires (`tip`) en fonction du sexe de la personne (`sex`). Ajoutez des titres clairs à votre graphique.

Voir la solution
import seaborn as sns import matplotlib.pyplot as plt # Charger le jeu de données tips = sns.load_dataset("tips") # Créer la figure et les axes fig, ax = plt.subplots(figsize=(8, 6)) # Créer le boxplot sns.boxplot(data=tips, x='sex', y='tip', ax=ax) # Personnaliser le graphique ax.set_title('Distribution des Pourboires par Sexe', fontsize=16) ax.set_xlabel('Sexe') ax.set_ylabel('Montant du Pourboire ($)') plt.show()

Exercice 2 : Analyser les Relations avec `scatterplot` et `hue`

Créez un `scatterplot` pour visualiser la relation entre le montant total de l'addition (`total_bill`) et le pourboire (`tip`). Utilisez le paramètre `hue` pour colorer les points en fonction du jour de la semaine (`day`).

Voir la solution
import seaborn as sns import matplotlib.pyplot as plt # Charger le jeu de données tips = sns.load_dataset("tips") # Créer la figure et les axes fig, ax = plt.subplots(figsize=(10, 7)) # Créer le scatterplot avec le paramètre hue sns.scatterplot(data=tips, x='total_bill', y='tip', hue='day', ax=ax) # Personnaliser le graphique ax.set_title('Relation Addition vs Pourboire par Jour', fontsize=16) ax.set_xlabel('Montant de l\'Addition ($)') ax.set_ylabel('Montant du Pourboire ($)') plt.show()