Bonjour ! Dans la leçon précédente, nous avons appris à combiner différents ensembles de données à l'aide de pd.merge(), une compétence cruciale pour préparer des analyses complexes. Maintenant que vous savez comment manipuler, agréger et fusionner des données avec Pandas, il est temps de passer à l'étape suivante, souvent la plus révélatrice : la visualisation. Un bon graphique peut révéler des tendances, des relations et des anomalies bien plus efficacement qu'un tableau de chiffres.
Cette leçon vous initiera à la visualisation de données en Python avec Matplotlib, la bibliothèque de traçage la plus fondamentale et la plus utilisée de l'écosystème. L'objectif est de vous apprendre à créer les quatre types de graphiques les plus courants : les graphiques linéaires, les diagrammes à barres, les histogrammes et les nuages de points. À la fin de cette leçon, vous serez capable de transformer vos DataFrames Pandas en visualisations claires et informatives.
1. Introduction à Matplotlib : Figure et Axes
Avant de tracer, il est utile de comprendre les deux composants de base d'un graphique Matplotlib :
- La Figure : C'est le conteneur global, la "toile" sur laquelle tout est dessiné. Une figure peut contenir un ou plusieurs graphiques.
- Les Axes : C'est le graphique individuel lui-même (ce que vous considérez comme un "plot"). Il contient les axes (X, Y), les graduations, les étiquettes, et bien sûr, les données que vous tracez.
La manière la plus courante et la plus flexible d'utiliser Matplotlib est de créer explicitement une figure et un ou plusieurs axes. La commande plt.subplots() est parfaite pour cela.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# Crée une Figure et un ensemble d'Axes
fig, ax = plt.subplots()
# Affiche une figure vide
plt.show()
Cette approche vous donne un contrôle total sur votre graphique via l'objet ax. C'est sur cet objet que nous appellerons les méthodes de traçage (ax.plot(), ax.scatter(), etc.).
2. Les quatre types de graphiques essentiels
Nous allons maintenant explorer les quatre types de graphiques que vous utiliserez le plus souvent. L'image ci-dessous montre un exemple de chacun de ces graphiques, que nous allons apprendre à construire.

Pour chaque type de graphique, nous verrons à quoi il sert et comment le créer. Le guide suivant est une excellente ressource qui couvre ces bases avec des exemples de code clairs.
Beginner's Guide To Matplotlib (With Code Examples)
Cet article vous guidera à travers la création des types de graphiques les plus courants à l'aide de Matplotlib et NumPy. Il constitue une base solide pour cette leçon.
Concentrez-vous sur la section "Making the most common type of plots using NumPy arrays". Lisez les introductions et examinez les exemples de code pour chaque type de graphique : graphique linéaire, nuage de points, diagramme à barres et histogramme.
Voyons maintenant chaque graphique en détail.
a) Le graphique linéaire (Line Plot)
Quand l'utiliser ? Idéal pour visualiser une tendance dans des données sur des intervalles continus ou temporels. Pensez à l'évolution du cours d'une action ou à la température au fil de la journée.
Comment le créer ? Avec la méthode ax.plot(x, y).
La vidéo suivante de Bro Code montre comment créer un graphique linéaire de base.
Cette vidéo explique comment installer Matplotlib et créer votre tout premier graphique linéaire.
Regardez comment créer un graphique de base en fournissant des listes de coordonnées x et y à la fonction plt.plot(). Notez l'utilisation de plt.show() pour afficher le graphique.
Voici un exemple simple :
# Données de ventes sur une semaine
jours = [1, 2, 3, 4, 5, 6, 7]
ventes = [150, 165, 180, 175, 200, 190, 210]
fig, ax = plt.subplots()
ax.plot(jours, ventes)
# Ajout de titres pour la clarté
ax.set(title="Ventes hebdomadaires",
xlabel="Jour",
ylabel="Nombre de ventes")
plt.show()
b) Le nuage de points (Scatter Plot)
Quand l'utiliser ? Parfait pour visualiser la relation entre deux variables numériques. Chaque point représente une observation. Cela vous aide à voir s'il existe une corrélation (positive, négative, ou aucune).
Comment le créer ? Avec la méthode ax.scatter(x, y).
Hussam Hourani, une chaîne que vous appréciez, explique bien ce concept en arabe.
دروس لغة بايثون - الرسم البياني والخرائط( بالعربي) - الدرس #6 Python-MatPlotLib in Arabic
Cette vidéo de Hussam Hourani couvre plusieurs types de graphiques, y compris les nuages de points.
Regardez la section sur les nuages de points (généralement après les graphiques linéaires) pour voir une démonstration pratique en arabe.
Voici un exemple illustrant la relation entre la taille et le poids :
# Données de taille (cm) et poids (kg)
taille = np.random.normal(170, 10, 50) # Moyenne 170, écart-type 10
poids = taille * 0.5 + np.random.normal(0, 5, 50) # Relation linéaire + bruit
fig, ax = plt.subplots()
ax.scatter(taille, poids)
ax.set(title="Relation Taille vs. Poids",
xlabel="Taille (cm)",
ylabel="Poids (kg)")
plt.show()
c) Le diagramme à barres (Bar Chart)
Quand l'utiliser ? Pour comparer des quantités entre différentes catégories. Par exemple, les ventes par produit ou la population par pays.
Comment le créer ? Avec ax.bar(categories, valeurs).
Le document PDF suivant, du Tripoli College of Science and Technology, offre un bon résumé en arabe.
[PDF] رسم البيانات مكتبة Matplotlib - كلية طرابلس للعلوم والتقنية
Ce document offre une introduction concise à Matplotlib en arabe, avec des exemples clairs.
Lisez la section d'introduction qui décrit les types de graphiques courants, puis examinez l'exemple de diagramme à barres (مثال رسم بياني شريطي).
Exemple avec des ventes de fruits :
# Ventes par fruit
fruits = {"Pomme": 45, "Banane": 60, "Orange": 32, "Fraise": 80}
fig, ax = plt.subplots()
ax.bar(fruits.keys(), fruits.values())
ax.set(title="Ventes de fruits",
xlabel="Fruit",
ylabel="Quantité vendue")
plt.show()
d) L'histogramme (Histogram)
Quand l'utiliser ? Pour visualiser la distribution d'une seule variable numérique. Il regroupe les données en "intervalles" (bins) et compte le nombre d'observations dans chaque intervalle. C'est excellent pour comprendre la répartition, la tendance centrale et la dispersion de vos données.
Comment le créer ? Avec ax.hist(donnees, bins=nombre_intervalles).
La vidéo de Bro Code offre une explication très intuitive des histogrammes en utilisant des notes d'examen.
Cette vidéo explique clairement ce qu'est un histogramme et comment le créer.
Regardez l'explication de ce qu'est un histogramme et comment le générer avec plt.hist(). Notez l'explication des "bins" (intervalles).
Exemple avec la distribution des âges d'un groupe de personnes :
# Générer 200 âges aléatoires avec une distribution normale
ages = np.random.normal(40, 15, 200)
fig, ax = plt.subplots()
ax.hist(ages, bins=20) # Divise les données en 20 intervalles
ax.set(title="Distribution des âges",
xlabel="Âge",
ylabel="Fréquence")
plt.show()
3. Tracer directement depuis Pandas
Matplotlib est si bien intégré à Pandas que vous pouvez créer des graphiques directement à partir de vos DataFrames et Series. C'est incroyablement pratique ! La méthode .plot() d'un DataFrame est très puissante.
L'article que nous avons consulté précédemment contient une section dédiée à ce sujet.
Beginner's Guide To Matplotlib (With Code Examples)
Cette section montre comment utiliser la puissance de Pandas pour créer des visualisations rapidement.
Lisez la section "Plotting data directly with pandas". Portez une attention particulière à la manière dont vous pouvez spécifier le type de graphique avec le paramètre kind, par exemple df.plot(kind='scatter', ...) ou en utilisant des méthodes dédiées comme df.plot.hist().
Voyons un exemple concret. Créons un DataFrame de ventes de voitures et visualisons-le.
# Créer un DataFrame
car_sales = pd.DataFrame({
"Marque": ["Toyota", "Honda", "Toyota", "BMW", "Honda", "BMW"],
"Prix ($)": [22000, 25000, 21000, 45000, 27000, 48000],
"Année": [2020, 2021, 2019, 2022, 2020, 2021]
})
# Diagramme à barres du prix moyen par marque
prix_moyen = car_sales.groupby("Marque")["Prix ($)"].mean()
fig, ax = plt.subplots()
prix_moyen.plot(kind="bar", ax=ax)
ax.set(title="Prix moyen par marque", ylabel="Prix ($)")
plt.show()
# Nuage de points : Année vs. Prix
fig, ax = plt.subplots()
car_sales.plot(kind="scatter", x="Année", y="Prix ($)", ax=ax)
ax.set(title="Prix en fonction de l'année")
plt.show()
Exercice Pratique
Maintenant, à vous de jouer ! Utilisez le DataFrame suivant pour créer quelques visualisations.
import pandas as pd
import matplotlib.pyplot as plt
# Données d'étudiants
data = {
'nom': ['Ali', 'Béatrice', 'Charles', 'Diana', 'Émile', 'Fatima'],
'age': [22, 21, 23, 22, 24, 21],
'note_maths': [85, 91, 78, 88, 82, 95],
'heures_etude': [10, 15, 8, 12, 9, 18]
}
df_etudiants = pd.DataFrame(data)
Vos tâches :
- Créez un diagramme à barres montrant la note de maths de chaque étudiant.
- Créez un nuage de points pour visualiser la relation entre les
heures_etudeet lanote_maths. - Créez un histogramme de la distribution des âges (
age) des étudiants.
Solutions
# 1. Diagramme à barres : Notes par étudiant
fig, ax1 = plt.subplots()
df_etudiants.plot(kind='bar', x='nom', y='note_maths', ax=ax1, legend=False)
ax1.set(title="Notes de maths par étudiant", xlabel="Étudiant", ylabel="Note")
ax1.tick_params(axis='x', rotation=45) # Pivote les noms pour une meilleure lisibilité
plt.tight_layout() # Ajuste le graphique pour que tout soit visible
plt.show()
# 2. Nuage de points : Heures d'étude vs. Note
fig, ax2 = plt.subplots()
df_etudiants.plot(kind='scatter', x='heures_etude', y='note_maths', ax=ax2)
ax2.set(title="Relation entre heures d'étude et note",
xlabel="Heures d'étude",
ylabel="Note de maths")
plt.show()
# 3. Histogramme : Distribution des âges
fig, ax3 = plt.subplots()
df_etudiants['age'].plot(kind='hist', ax=ax3, bins=4)
ax3.set(title="Distribution des âges des étudiants",
xlabel="Âge",
ylabel="Fréquence")
plt.show()
Conclusion
Félicitations ! Vous avez fait vos premiers pas dans le monde de la visualisation de données avec Python. Vous avez non seulement appris à créer les quatre types de graphiques les plus importants, mais aussi à les générer directement à partir de vos données Pandas.
Les points clés à retenir :
- Matplotlib est la bibliothèque fondamentale pour la visualisation en Python.
- On utilise généralement une Figure (la toile) et des Axes (les graphiques) pour un contrôle total.
- Graphique linéaire (
.plot) : Pour les tendances dans le temps ou sur un intervalle continu. - Diagramme à barres (
.bar) : Pour comparer des quantités entre catégories. - Nuage de points (
.scatter) : Pour explorer la relation entre deux variables numériques. - Histogramme (
.hist) : Pour comprendre la distribution d'une seule variable numérique. - La méthode
.plot(kind='...')de Pandas est un raccourci extrêmement efficace pour visualiser rapidement vos données.
Nous avons maintenant terminé notre parcours sur la manipulation et la visualisation de données. Vous disposez des outils essentiels pour explorer presque n'importe quel ensemble de données tabulaires. Dans la prochaine leçon, nous ferons un grand pas en avant et entrerons dans le cœur de ce cours : les fondements de l'apprentissage automatique (Machine Learning). Nous commencerons par définir ce qu'est le ML et nous distinguerons ses principaux types : supervisé, non supervisé et par renforcement.