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.