Installer et charger les données
Il faut pandas, openpyxl (lecture des .xlsx) et matplotlib : pip install pandas openpyxl matplotlib. Lisez la feuille avec parse_dates pour obtenir de vraies dates, ce qui rend le regroupement mensuel immédiat.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel("ventes.xlsx", sheet_name="Donnees", parse_dates=["date"])
print(df.dtypes)Agréger avant de tracer
Un graphique de milliers de points est illisible. Regroupez d'abord : totaux mensuels pour une tendance, totaux par catégorie pour une comparaison. resample('MS') regroupe par début de mois et conserve les mois vides à zéro.
mensuel = df.set_index("date")["montant"].resample("MS").sum()
par_region = df.groupby("region")["montant"].sum().sort_values()Une courbe et des barres propres
Utilisez l'API objet (fig, ax) plutôt que plt.plot : contrôle total et pas de graphiques qui s'écrasent dans une boucle. Supprimez les bordures haute et droite, nommez les axes et formatez les milliers.
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4.5))
ax1.plot(mensuel.index, mensuel.values, marker="o")
ax1.set_title("CA mensuel")
ax1.yaxis.set_major_formatter(lambda v, _: f"{v:,.0f}".replace(",", " "))
ax2.barh(par_region.index, par_region.values)
ax2.set_title("CA par région")
for ax in (ax1, ax2):
ax.spines[["top", "right"]].set_visible(False)
fig.tight_layout()
fig.savefig("rapport.png", dpi=200)Des graphiques qui parlent
Triez les barres par valeur, pas par ordre alphabétique. Démarrez l'axe des barres à zéro. Utilisez une seule couleur d'accent pour le point à démontrer et du gris pour le reste. Un titre qui énonce la conclusion (« CA en hausse de 18 % depuis mars ») est bien plus lu qu'un titre neutre.
Automatiser
Encapsulez le code dans une fonction qui prend le chemin du fichier et lancez-la chaque lundi avec le Planificateur de tâches Windows ou cron. Combinez-la avec openpyxl pour insérer le PNG dans un rapport Excel (voir notre guide sur l'automatisation des rapports Excel). FormulAI génère le script complet si vous décrivez vos colonnes et le graphique voulu.

