Plans et tarifsInscrivez-vous gratuitement

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

Sandy Lucason octobre 16, 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

Comment construire des tableaux de bord qui sont vraiment utilisés

Le paradoxe du dashboard fantôme Il y a un chiffre que vous n'avez probablement pas envie d'entendre. La grande majorité des tableaux de bord publiés en entreprise ne sont jamais…

BI Aftermarket Automobile : automatiser le reporting ERP

Dans l’aftermarket automobile, la donnée est déjà présente dans l’ERP métier. Ventes, achats, remises de fin d’année, statistiques fournisseurs ou déclarations RSVD : l’information circule et les systèmes enregistrent correctement…

Automatiser Votre Reporting Mensuel Dans PowerPoint, Excel & Word Avec Live Docs

Chaque fin de mois, les équipes métier ouvrent le PowerPoint précédent, remplacent les chiffres, ajustent les graphiques, vérifient les tableaux. Puis le cycle recommence. Côté BI, les données sont pourtant…
Tous les articles
Nous utilisons des cookies.
Nous utilisons des cookies nécessaires au fonctionnement de notre site. Nous aimerions également utiliser des cookies facultatifs qui nous aident à améliorer notre site ainsi qu'à des fins d'analyse statistique et de publicité. Nous ne placerons pas ces cookies facultatifs sur votre appareil si vous n'y consentez pas. Pour en savoir plus, veuillez consulter notre avis sur les cookies.

Si vous refusez, vos informations ne seront pas suivies lorsque vous visiterez ce site web. Un seul cookie sera utilisé dans votre navigateur pour mémoriser votre préférence de ne pas être suivi.
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 refuserAccepter