ITSkillsCenter
Développement Web

Python pour analystes : automatiser Excel et les données

5 min de lecture
Python pour analystes : automatiser Excel et les données

Ce que vous saurez faire à la fin

  1. Installer Python + pandas en 10 minutes
  2. Lire, filtrer, agréger un fichier Excel de millions de lignes
  3. Consolider 50 fichiers en 10 lignes de code
  4. Générer automatiquement un rapport Excel formaté
  5. Automatiser l’exécution mensuelle via Task Scheduler

Durée : 3 heures. Pré-requis : Windows/Mac/Linux, droits d’installation, connaissance basique Excel.

Étape 1 — Installer Python

  1. Allez sur python.org/downloads. Téléchargez la version 3.12+.
  2. Windows : lors de l’installation, cochez Add Python to PATH. C’est CRITIQUE.
  3. Terminez l’installation par défaut.
  4. Ouvrez une console (cmd sur Windows, Terminal sur Mac/Linux) :
python --version       # doit renvoyer Python 3.12.x
pip --version          # pip 24.x ou plus récent

Étape 2 — Installer les bibliothèques

pip install pandas openpyxl xlsxwriter matplotlib xlwings
  1. pandas : manipulation de données tabulaires
  2. openpyxl : lire/écrire .xlsx (avec pandas)
  3. xlsxwriter : écriture .xlsx avec mise en forme avancée
  4. matplotlib : graphiques
  5. xlwings : piloter Excel ouvert

Étape 3 — Installer un éditeur

  1. VS Code (gratuit) : code.visualstudio.com.
  2. À l’ouverture, installez l’extension Python (Microsoft).
  3. Créez un dossier C:\projets\analyses puis ouvrez-le dans VS Code.
  4. Créez un fichier test.py :
print("Hello Python!")
import pandas as pd
print(pd.__version__)
  1. Lancez avec le bouton ▶ en haut à droite ou python test.py dans le terminal.

Étape 4 — Lire un fichier Excel

  1. Placez ventes_2026.xlsx dans le dossier projet.
  2. Créez lire.py :
import pandas as pd

df = pd.read_excel("ventes_2026.xlsx", sheet_name="Data")
print(df.shape)              # (145234, 8)
print(df.columns.tolist())
print(df.head(5))
print(df.dtypes)
print(df.describe())
  1. Exécutez. Vous voyez les 5 premières lignes, les types de chaque colonne, stats numériques.

Étape 5 — Filtrer et sélectionner

dakar = df[df["Region"] == "Dakar"]
grosses = df[df["CA"] > 500_000]
dakar_gros = df[(df["Region"] == "Dakar") & (df["CA"] > 500_000)]

colonnes = df[["Date", "Commercial", "CA"]]

plage_date = df[(df["Date"] >= "2026-01-01") & (df["Date"] < "2026-04-01")]

Étape 6 — Agréger par groupe

par_commercial = (df.groupby("Commercial")
                    .agg(CA_Total=("CA", "sum"),
                         Nb_Commandes=("CA", "count"),
                         Panier_Moyen=("CA", "mean"))
                    .sort_values("CA_Total", ascending=False))

print(par_commercial.head(10))

Étape 7 — Consolider 50 fichiers en 10 lignes

from pathlib import Path
import pandas as pd

dossier = Path("C:/Rapports/Ventes")
frames = []

for fichier in dossier.glob("Ventes_2026_*.xlsx"):
    d = pd.read_excel(fichier)
    d["source"] = fichier.name
    frames.append(d)

global_df = pd.concat(frames, ignore_index=True)
global_df.to_excel("consolide_2026.xlsx", index=False, engine="openpyxl")

print(f"Consolidé {len(frames)} fichiers, {len(global_df):,} lignes")

Étape 8 — Tableau croisé dynamique

tcd = pd.pivot_table(
    df,
    values="CA",
    index=["Region", "Commercial"],
    columns="Mois",
    aggfunc="sum",
    fill_value=0,
    margins=True, margins_name="Total"
)

tcd.to_excel("dashboard.xlsx", sheet_name="TCD")

Étape 9 — Graphiques

import matplotlib.pyplot as plt

top10 = par_commercial.head(10)
top10["CA_Total"].plot(kind="barh", figsize=(10, 6), color="#1E88E5")
plt.title("Top 10 commerciaux - CA 2026", fontsize=14, fontweight="bold")
plt.xlabel("CA (FCFA)")
plt.tight_layout()
plt.savefig("top10.png", dpi=150)
plt.close()

Étape 10 — Export Excel avec mise en forme

with pd.ExcelWriter("rapport.xlsx", engine="xlsxwriter") as w:
    par_commercial.to_excel(w, sheet_name="Commerciaux")
    wb = w.book
    ws = w.sheets["Commerciaux"]
    
    money = wb.add_format({"num_format": "#,##0 \"FCFA\""})
    header = wb.add_format({"bold": True, "bg_color": "#1E88E5",
                             "color": "white", "border": 1})
    
    ws.set_column("B:D", 18, money)
    ws.set_row(0, 22, header)
    ws.freeze_panes(1, 1)
    
    # Ajouter un graphique natif Excel
    chart = wb.add_chart({"type": "column"})
    chart.add_series({
        "name": "CA Total",
        "categories": ["Commerciaux", 1, 0, 10, 0],
        "values": ["Commerciaux", 1, 1, 10, 1],
    })
    ws.insert_chart("F2", chart)

Étape 11 — Automatiser l’exécution

  1. Transformez votre script en .py autonome avec une fonction main.
  2. Windows Task Scheduler :
schtasks /Create /SC WEEKLY /D MON /TN "RapportHebdo" ^
  /TR "python C:\projets\analyses\rapport.py" ^
  /ST 07:00 /RU "%USERNAME%"
  1. macOS / Linux : cron.
crontab -e
# Ajouter la ligne:
0 7 * * 1 /usr/bin/python3 /home/user/analyses/rapport.py >> /tmp/rapport.log 2>&1

Étape 12 — Piloter Excel ouvert avec xlwings

import xlwings as xw

wb = xw.Book("dashboard.xlsx")
sht = wb.sheets["DASHBOARD"]
sht.range("B2").value = "Mise à jour: " + pd.Timestamp.now().strftime("%d/%m/%Y %H:%M")
sht.range("C4").options(transpose=True).value = df["CA"].tolist()
wb.save()

Étape 13 — Ajouter une barre de progression

pip install tqdm
from tqdm import tqdm
import time

fichiers = list(dossier.glob("*.xlsx"))
frames = []
for f in tqdm(fichiers, desc="Lecture"):
    frames.append(pd.read_excel(f))

Étape 14 — Gérer les erreurs

import logging

logging.basicConfig(
    filename="rapport.log",
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)

try:
    df = pd.read_excel("ventes.xlsx")
    logging.info(f"Lecture OK: {len(df)} lignes")
except FileNotFoundError:
    logging.error("Fichier ventes.xlsx introuvable")
    raise
except Exception as e:
    logging.error(f"Erreur imprévue: {e}")
    raise

Étape 15 — Checklist d’un script robuste

✓ Chemins paramétrables (argparse ou variables env)
✓ Logging activé (fichier + console)
✓ try/except autour des I/O fichiers
✓ Validation des données (colonnes présentes, types)
✓ Barre de progression pour jobs longs
✓ Durée totale affichée à la fin
✓ Exit code non-zéro si échec (pour monitoring)
✓ Sauvegarde des fichiers avant modification
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité