Plans et tarifsInscrivez-vous gratuitement

Mettre en place un modèle de demand forecasting pour la supply chain avec Python

Sandy Lucas le 16 octobre, 2025

Entre surstockage, qui immobilise du capital, et ruptures de stock, qui entraînent des pertes et de l’insatisfaction client, la gestion des inventaires est un défi central pour toute entreprise de distribution.

La réponse à ces problématiques se trouve dans la prévision de la demande (demand forecasting). En analysant les ventes historiques et les facteurs externes (promotions, saisonnalité, jours fériés), il devient possible d’anticiper les fluctuations de la demande et d’optimiser la planification, la production et la distribution.

Cet article explique comment construire un modèle complet de demand forecasting avec Python, de la collecte de données jusqu’à l’intégration des prévisions dans un tableau de bord BI.

Public cible : data analysts et data engineers débutants souhaitant déployer un projet de supply chain forecasting efficace.

Réseau logistique et entreposage de cartons connectés.

Comprendre le demand forecasting en supply chain

La prévision de la demande (demand forecasting) consiste à estimer les ventes futures à partir de données passées et de variables explicatives.

En supply chain, elle permet de :

  • planifier la production et les approvisionnements,
  • ajuster les niveaux de stock,
  • réduire les coûts logistiques liés au surstock ou à la rupture.

Par exemple, un distributeur peut identifier l’impact des soldes ou des fêtes sur ses ventes et ajuster ses commandes en conséquence. Le supply chain demand forecasting devient alors un levier direct d’efficacité opérationnelle.

Collecte et préparation des données

Un modèle de supply chain forecasting est aussi performant que la qualité des données utilisées. Les principaux champs à inclure sont :

ColonneDescription
DateDate ou période d’enregistrement
Product_IDIdentifiant du produit
QuantityQuantité vendue
PromoIndicateur de promotion
HolidayIndicateur de jour férié ou d’événement spécial
Python
import pandas as pd

data = pd.read_csv("sales_data.csv", parse_dates=["Date"])
data = data.sort_values("Date")

print(data.info())
print(data.head())

Bonnes pratiques :

  • Imputez ou supprimez les valeurs manquantes selon leur fréquence
  • Vérifiez la cohérence temporelle (pas de dates manquantes)
  • Supprimez les doublons

Analyse exploratoire des données (EDA)

Avant de modéliser, il est indispensable de comprendre les comportements de la demande.
L’analyse exploratoire (EDA) permet de repérer :

  • les tendances de fond,
  • la saisonnalité,
  • les valeurs aberrantes.

Exemple de visualisation temporelle

Python
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))
plt.plot(data["Date"], data["Quantity"])
plt.title("Évolution des ventes dans le temps")
plt.xlabel("Date")
plt.ylabel("Ventes")
plt.show()

Conseils :

  • Identifiez les pics liés à des événements saisonniers ou à des promotions
  • Repérez les anomalies qui pourraient biaiser le modèle
  • L’EDA guide les futures étapes de preprocessing et de feature engineering

Feature engineering : enrichir le jeu de données

Le feature engineering permet de révéler des structures temporelles et des patterns cachés dans les ventes.

Variables de décalage (lag features)

Python
data["lag_7"] = data["Quantity"].shift(7)

Moyennes mobiles

Python
data["rolling_avg_7"] = data["Quantity"].rolling(7).mean()

Variables externes

Python
data["Promo"] = data["Date"].isin(promo_dates).astype(int)
data["Holiday"] = data["Date"].isin(holiday_dates).astype(int)

Bonnes pratiques :

  • Évitez de multiplier les features inutiles
  • Testez leur corrélation avec la demande avant de les intégrer
  • Supprimez les lignes contenant des NaN après la création de lags et de moyennes mobiles

Sélection du modèle de prévision

Trois grandes familles de modèles sont utilisées pour le demand forecasting :

FamilleModèlesPoints fortsCas d’usage
Séries temporelles classiquesARIMA, SARIMA, ProphetSimples à interpréterDonnées univariées avec saisonnalité
Machine LearningRandom Forest, XGBoost, LightGBMCapture les relations non linéairesDonnées enrichies avec variables externes
Deep LearningLSTM, GRUApprentissage des dépendances longuesSéries complexes et volumineuses

Pour un premier projet, XGBoost est un excellent choix pour sa robustesse et sa flexibilité.

Entraînement et évaluation du modèle

Exemple avec XGBoost

Python
from xgboost import XGBRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error

features = ["lag_7", "rolling_avg_7", "Promo", "Holiday"]
data = data.dropna()

train, test = train_test_split(data, test_size=0.2, shuffle=False)

model = XGBRegressor(n_estimators=200, learning_rate=0.05, max_depth=5)
model.fit(train[features], train["Quantity"])

preds = model.predict(test[features])
mae = mean_absolute_error(test["Quantity"], preds)
print(f"MAE : {mae:.2f}")

Visualisation des prévisions

Python
plt.figure(figsize=(10, 5))
plt.plot(test["Date"], test["Quantity"], label="Réel")
plt.plot(test["Date"], preds, label="Prévision")
plt.legend()
plt.title("Prévision de la demande avec XGBoost")
plt.show()

Interprétation :

  • Une erreur MAE faible indique une bonne capacité de généralisation.
  • Le graphique permet de valider visuellement la cohérence des prévisions avec les tendances observées.

Exploiter les prévisions pour optimiser la supply chain

Une fois le modèle validé, les prévisions servent à piloter les stocks et les approvisionnements.
L’objectif est d’atteindre un équilibre entre disponibilité produit et maîtrise des coûts.

Exemple : calcul du point de réapprovisionnement

Python
lead_time = 7  # jours
safety_stock = preds.std() * 1.65  # niveau de service 95%
reorder_point = preds.mean() * lead_time + safety_stock

Ces calculs permettent de définir des seuils de réapprovisionnement adaptés aux variations de la demande.

Intégration des prévisions dans un tableau de bord BI

L’intégration des résultats dans une solution de Business Intelligence (BI), telle que ClicData, Power BI ou Streamlit, transforme la prévision de la demande en un outil décisionnel exploitable par les équipes métiers.

Cas d’usage typiques :

  • Suivi des prévisions et ventes réelles en temps réel,
  • Analyse des écarts et ajustement des stocks,
  • Partage des insights avec les décideurs et responsables supply chain.

Conclusion

La prévision de la demande (demand forecasting) est un levier essentiel du supply chain forecasting moderne.
Grâce à Python, il devient possible de combiner données historiques, variables externes et algorithmes performants pour anticiper la demande avec précision.

À retenir :

  • Des données propres et cohérentes sont la base de tout modèle fiable
  • Les features temporelles renforcent la précision des prévisions
  • L’intégration BI permet de rendre la prévision directement actionnable

En maîtrisant le supply chain demand forecasting, les entreprises transforment leurs données brutes en décisions stratégiques et gagnent en agilité face aux incertitudes du marché.

Table des matières

Partager ce blog

Autres blogs

Gouvernance IA : Pourquoi Et Comment La Mettre En Place ?

L’intelligence artificielle est ancrée dans la prise de décisions de plus en plus critiques dans nos entreprises : qui obtient un prêt, qui est embauché, quel contenu est recommandé… Pourtant, beaucoup…

Reverse ETL & Data Stream : Transformer l’Analyse des Données en Actions Concrètes

Les systèmes ETL traditionnels permettent d’extraire les données, de les nettoyer et de les stocker généralement dans un data warehouse centralisé. Un process idéal pour créer des rapports. Mais comment…

Comment Améliorer L’Ergonomie de Vos Tableaux de Bord

On confond souvent les design et ergonomie. Un tableau de bord au design soigné attire l’œil, c’est certain. Mais est-ce qu’il est vraiment simple à utiliser ? Pas forcément. Et…
Tous les articles
Nous utilisons des cookies.
Cookies essentiels
Nécessaire pour les fonctionnalités du site web telles que notre chat de vente, les formulaires et la navigation. 
Cookies fonctionnels et analytiques
Nous aide à comprendre d'où viennent nos visiteurs en collectant des données d'utilisation anonymes.
Cookies publicitaires et de suivi
Utilisé pour diffuser des annonces pertinentes et mesurer les performances publicitaires sur des plateformes telles que Google, Facebook et LinkedIn.
Tout refuserSauvegarderAccepter