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.

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 :
Colonne | Description |
---|---|
Date | Date ou période d’enregistrement |
Product_ID | Identifiant du produit |
Quantity | Quantité vendue |
Promo | Indicateur de promotion |
Holiday | Indicateur de jour férié ou d’événement spécial |
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
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)
data["lag_7"] = data["Quantity"].shift(7)
Moyennes mobiles
data["rolling_avg_7"] = data["Quantity"].rolling(7).mean()
Variables externes
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 :
Famille | Modèles | Points forts | Cas d’usage |
---|---|---|---|
Séries temporelles classiques | ARIMA, SARIMA, Prophet | Simples à interpréter | Données univariées avec saisonnalité |
Machine Learning | Random Forest, XGBoost, LightGBM | Capture les relations non linéaires | Données enrichies avec variables externes |
Deep Learning | LSTM, GRU | Apprentissage des dépendances longues | Sé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
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
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
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é.