Guide Complet de Visualisation de Données en Python avec Seaborn et Matplotlib

Ce guide présente un aperçu rapide de la visualisation de données en Python, en se concentrant sur les bibliothèques Seaborn et Matplotlib. Il couvre la configuration de l'environnement, la création de divers types de graphiques avec des exemples de code concis, et des astuces pratiques pour les débutants.

Configuraton de l'Environnement

Assurez-vous d'avoir installé les bibliothèques nécessaires. Si ce n'est pas le cas, exécutez la commande suivante dans votre terminal :

pip install pandas seaborn matplotlib numpy

Importez ensuite les bibliothèques au début de votre script Python :

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

Préparation des Données

Pour faciliter la démonstration, nous utiliserons les jeux de données intégrés de Seaborn : le jeu de données "iris" (données catégorielles) et le jeu de données "tips" (données numériques).

# Charger les jeux de données
iris_data = sns.load_dataset("iris")
tips_data = sns.load_dataset("tips")

Visualisations Essentielles

1. Histogramme (Distribution de Fréquence)

Utilité : Visualiser la distribution d'une variable numérique.

# Création d'un histogramme pour les montants des pourboires
sns.histplot(data=tips_data, x="tip", bins=10, color="#2ca02c", alpha=0.7)
plt.title("Distribution des Montants des Pourboires")
plt.xlabel("Montant du Pourboire ($)")
plt.ylabel("Fréquence")
plt.show()

Cet histogramme montre la fréquence d'apparition des différants montants de pourboire, indiquant que la plupart des pourboires se situent entre 2 et 4 dollars.

2. Diagramme Circulaire (Graphique en Tarte)

Utilité : Représenter la proportion de différentes catégories au sein d'un tout.

# Compter les occurrences pour chaque période de repas
meal_counts = tips_data["time"].value_counts()

# Créer le diagramme circulaire
plt.pie(meal_counts, labels=meal_counts.index, autopct="%1.1f%%", colors=["#d62728", "#1f77b4"])
plt.title("Répartition des Repas par Période")
plt.show()

Une alternative plus concise avec Pandas :

tips_data["time"].value_counts().plot.pie(autopct="%1.1f%%", colors=["#d62728", "#1f77b4"])
plt.title("Répartition des Repas par Période")
plt.ylabel('') # Cache l'étiquette y par défaut
plt.show()

3. Diagramme de Dispersion (Nuage de Points)

Utilité : Examiner la relation entre deux variables numériques.

# Créer un diagramme de dispersion pour le total de la facture et le pourboire
sns.scatterplot(data=tips_data, x="total_bill", y="tip", hue="sex", style="sex", s=100)
plt.title("Relation entre le Montant Total et le Pourboire")
plt.xlabel("Montant Total de la Facture ($)")
plt.ylabel("Pourboire ($)")
plt.show()

Les points bleus représentent les hommes et les triangles orange les femmes, illustrant une corrélation positive : plus la facture est élevée, plus le pourboire tend à l'être.

4. Diagramme en Barres

Utilité : Comparer des valeurs numériques entre différentes catégories.

# Calculer et afficher le montant moyen de la facture par jour
sns.barplot(data=tips_data, x="day", y="total_bill", estimator=np.mean, palette="viridis")
plt.title("Montant Moyen de la Facture par Jour")
plt.xlabel("Jour de la Semaine")
plt.ylabel("Montant Moyen de la Facture ($)")
plt.show()

Version simplifiée avec Pandas pour compter les occurrences :

tips_data["day"].value_counts().plot.bar(color="#aec7e8")
plt.title("Nombre de Commandes par Jour")
plt.xlabel("Jour de la Semaine")
plt.ylabel("Nombre de Commandes")
plt.xticks(rotation=45)
plt.show()

5. Diagramme en Boîte à Moustaches (Box Plot)

Utilité : Visualiser la dispersion des données, la médiane, les quartiles et les valeurs aberrantes.

# Comparer la distribution des pourboires entre les sexes
sns.boxplot(data=tips_data, x="sex", y="tip", palette="tab10")
plt.title("Distribution des Pourboires par Sexe")
plt.xlabel("Sexe")
plt.ylabel("Pourboire ($)")
plt.show()

La boîte représente l'intervalle interquartile, la ligne médiane est la médiane, et les points externes sont des valeurs potentiellement aberrantes.

6. Diagramme en Ligne

Utilité : Montrer l'évolution d'une valeur au fil du temps ou d'une séquence.

# Générer des données pour un exemple de tendance
dates = pd.date_range(start="2025-01-01", periods=10, freq="D")
values = np.random.randint(5, 25, size=10)
df_trend = pd.DataFrame({"date": dates, "value": values})

# Créer le diagramme en ligne
sns.lineplot(data=df_trend, x="date", y="value", marker="o", linewidth=2)
plt.xticks(rotation=45)
plt.title("Tendance de Valeur sur 10 Jours")
plt.xlabel("Date")
plt.ylabel("Valeur")
plt.show()

7. Carte de Chaleur (Heatmap)

Utilité : Visualiser la corrélation entre plusieurs variables numériques sous forme de matrice.

# Calculer la matrice de corrélation pour les caractéristiques numériques d'iris
correlation_matrix = iris_data.iloc[:, :4].corr()

# Créer la carte de chaleur
sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm", vmin=-1, vmax=1)
plt.title("Matrice de Corrélation des Caractéristiques d'Iris")
plt.show()

Les couleurs indiquent la force et la direction de la corrélation (rouge pour positif, bleu pour négatif).

8. Diagramme en Violon (Violin Plot)

Utilité : Combiner la visualisation de la distribution (comme un histogramme) et de la dispersion (comme un box plot).

# Comparer la distribution de la longueur des pétales par espèce d'iris
sns.violinplot(data=iris_data, x="species", y="petal_length", inner="quartile", palette="Spectral")
plt.title("Distribution de la Longueur des Pétales par Espèce d'Iris")
plt.xlabel("Espèce")
plt.ylabel("Longueur des Pétales (cm)")
plt.show()

La largeur du violon représente la densité des données.

9. Graphique de Compte (Count Plot)

Utilité : Compter et visualiser rapidement le nombre d'occurrences pour chaque catégorie.

# Compter le nombre de repas par jour
sns.countplot(data=tips_data, x="day", color="#17becf", edgecolor="black")
plt.title("Nombre de Repas par Jour")
plt.xlabel("Jour de la Semaine")
plt.ylabel("Nombre de Repas")
plt.show()

10. Matrice de Dispersion (Pair Plot)

Utilité : Visualiser les relations par paires entre plusieurs variables numériques simultanément.

# Créer une matrice de dispersion pour les caractéristiques d'iris
sns.pairplot(data=iris_data, vars=["sepal_length", "sepal_width", "petal_length", "petal_width"],
            hue="species", diag_kind="kde", palette="Set2")
plt.suptitle("Matrice de Dispersion des Caractéristiques d'Iris", y=1.02)
plt.show()

La diagonale montre la distribution de chaque variable, tandis que les cellules hors diagonale montrent les relations par paires.

Conseils Pratiques pour Débutants

1. Gestion de l'Affichage des Caractères

Pour assurer l'affichage correct des caractères chinois et des signes négatifs :

plt.rcParams['font.sans-serif'] = ['SimHei'] # Pour Windows
   plt.rcParams['axes.unicode_minus'] = False # Afficher les signes négatifs

2. Sauvegarde des Graphiques

Utilisez plt.savefig() pour enregistrer vos graphiques dans des fichiers haute résolution :

plt.savefig("graphique_pourboires.png", dpi=300, bbox_inches="tight")

3. Ajustement de la Taille des Graphiques

Définissez la taille avant de créer le graphique :

plt.figure(figsize=(12, 7)) # Largeur=12 pouces, Hauteur=7 pouces

4. Styles et Palettes Globaux

Appliquez des styles et des palettes de couleurs globaux pour une cohérence visuelle :

sns.set_style("whitegrid") # Style de fond
   sns.set_palette("pastel") # Palette de couleurs globale

5. Ajout d'Étiquettes aux Axes

Améliorez la lisibilité en ajoutant des étiquettes claires aux axes :

plt.xlabel("Étiquette Axe X")
plt.ylabel("Étiquette Axe Y")

6. Disposition des Sous-Graphiques

Affichez plusieurs graphiques sur la même figure :

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(10, 8)) # 2 lignes, 1 colonne

   sns.histplot(data=tips_data, x="tip", ax=axes[0], color="skyblue")
   axes[0].set_title("Distribution des Pourboires")

   sns.scatterplot(data=tips_data, x="total_bill", y="tip", ax=axes[1], color="lightcoral")
   axes[1].set_title("Total Facture vs Pourboire")

   plt.tight_layout() # Ajustement automatique de l'espacement
   plt.show()

Tableau Récapitulatif des Graphiques

Scénario d'Utilisation Graphique Recommandé Mots-clés Principaux Avantages Clés
Distribution des Données Histogramme sns.histplot() Visualisation directe des intervalles de valeurs
Proportion des Catégories Diagramme Circulaire plt.pie(), .plot.pie() Clarté sur les parts relatives
Relation entre Variables Diagramme de Dispersion sns.scatterplot() Identification des corrélations et tendances
Comparaison de Catégories Diagramme en Barres sns.barplot(), .plot.bar() Support des calculs agrégés (moyenne, somme)
Dispersion et Valeurs Aberrantes Diagramme en Boîte sns.boxplot() Mise en évidence des valeurs extrêmes
Évolution Temporelle Diagramme en Ligne sns.lineplot() Analyse des tendances séquentielles
Corrélation Matricielle Carte de Chaleur sns.heatmap() Vue d'ensemble des relations multiples
Distribution et Dispersion Combinées Diagramme en Violon sns.violinplot() Informations détaillées sur la forme de distribution
Comptage de Catégories Graphique de Compte sns.countplot() Comptage direct sans étape de préparation
Relations Multi-Variables par Paires Matrice de Dispersion sns.pairplot() Analyse exhaustive des relations entre variables

Ces 10 types de graphiques couvrent les besoins fondamentaux en visualisation de données : distribution, comparaison, relations, tendances et détection d'anomalies. Après avoir installlé les bibliothèques nécessaires et chargé vos données (par exemple avec pd.read\_csv("votre\_fichier.csv")), vous pouvez exécuter ces exemples de code pour générer vos visualisations.

Étiquettes: Python visualisation de données seaborn Matplotlib Pandas

Publié le 1 juillet à 04h42