OUJOOD.COM
Pandas et Matplotlib : comment ça s'articule
Pandas intègre Matplotlib en interne. Quand vous appelez df.plot(), Pandas utilise Matplotlib pour générer le graphique. Vous n'avez pas besoin d'appeler Matplotlib directement pour les cas simples — mais vous pouvez personnaliser le résultat avec les fonctions Matplotlib habituelles une fois le graphique créé.
Pour afficher les graphiques dans un terminal ou un script, ajoutez plt.show() à la fin. Dans Jupyter Notebook, %matplotlib inline suffit.
import pandas as pd import matplotlib.pyplot as plt
Courbe temporelle avec plot()
Le graphique en courbe est le plus adapté pour visualiser l'évolution d'une valeur dans le temps. df.plot() sans argument produit une courbe pour chaque colonne numérique.
import pandas as pd
import matplotlib.pyplot as plt
data = {
"mois": ["Jan", "Fév", "Mar", "Avr", "Mai", "Jun"],
"ventes": [12400, 15200, 11800, 17600, 19200, 16400],
"retours": [340, 420, 290, 510, 480, 390]
}
df = pd.DataFrame(data)
# Courbe avec mois en axe X
df.plot(x="mois", y=["ventes", "retours"], kind="line", figsize=(10, 5))
plt.title("Ventes et retours par mois")
plt.xlabel("Mois")
plt.ylabel("Montant (€)")
plt.tight_layout()
plt.show()
figsize=(10, 5) définit la taille du graphique en pouces (largeur, hauteur). plt.tight_layout() ajuste automatiquement les marges pour éviter que les étiquettes se chevauchent. Ces deux lignes sont bonnes à prendre comme habitude sur tous vos graphiques.
Graphique en barres avec kind="bar"
Les barres sont adaptées pour comparer des catégories entre elles — chiffre d'affaires par département, ventes par produit, résultats par région.
import pandas as pd
import matplotlib.pyplot as plt
data = {
"département": ["RH", "Tech", "Finance", "Marketing", "Commercial"],
"budget": [45000, 120000, 78000, 92000, 65000],
"dépenses": [42000, 115000, 71000, 88000, 69000]
}
df = pd.DataFrame(data)
# Barres groupées
df.plot(
x="département",
y=["budget", "dépenses"],
kind="bar",
figsize=(10, 5),
color=["steelblue", "coral"]
)
plt.title("Budget vs dépenses par département")
plt.xticks(rotation=30, ha="right")
plt.ylabel("Montant (€)")
plt.tight_layout()
plt.show()
# Barres horizontales pour de longs noms de catégories
df.plot(x="département", y="budget", kind="barh", figsize=(8, 5))
plt.tight_layout()
plt.show()
rotation=30 incline les étiquettes de l'axe X pour éviter le chevauchement quand les noms sont longs. kind="barh" produit des barres horizontales — souvent plus lisible quand les catégories ont des noms longs ou qu'il y en a beaucoup.
Histogramme avec kind="hist"
L'histogramme montre la distribution d'une variable numérique : combien de valeurs tombent dans chaque intervalle. C'est l'outil de base pour comprendre la forme d'une distribution avant d'en calculer les statistiques.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
df = pd.DataFrame({
"salaire": np.random.normal(3200, 800, 500),
"ancienneté": np.random.exponential(4, 500)
})
# Histogramme d'une colonne
df["salaire"].plot(kind="hist", bins=30, figsize=(8, 5), color="steelblue", edgecolor="white")
plt.title("Distribution des salaires")
plt.xlabel("Salaire (€)")
plt.ylabel("Effectif")
plt.tight_layout()
plt.show()
bins=30 contrôle le nombre d'intervalles. Trop peu de bins lissent trop la distribution et cachent sa forme réelle ; trop de bins la fragmentent et font apparaître du bruit. Entre 20 et 50 bins est généralement raisonnable pour quelques centaines de valeurs.
Nuage de points avec kind="scatter"
Le nuage de points est indispensable pour visualiser la relation entre deux variables numériques — et vérifier visuellement ce que la corrélation suggère.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
n = 100
df = pd.DataFrame({
"température": np.random.uniform(15, 35, n),
})
df["ventes_glaces"] = df["température"] * 6 + np.random.normal(0, 20, n)
# Nuage de points
df.plot(
x="température",
y="ventes_glaces",
kind="scatter",
figsize=(8, 5),
color="steelblue",
alpha=0.6
)
plt.title("Température vs ventes de glaces")
plt.xlabel("Température (°C)")
plt.ylabel("Ventes (unités)")
plt.tight_layout()
plt.show()
alpha=0.6 ajoute de la transparence aux points, ce qui révèle les zones denses quand beaucoup de points se superposent. Sur un nuage dense, un alpha entre 0.2 et 0.5 est souvent plus informatif qu'un alpha à 1 (points opaques).
Par carabde | Mis à jour le 26 avril 2026