https://github.com/hajaarh/ecommerce_analytics_platform
CRM eCommerce - Analyse et visualisation de données
https://github.com/hajaarh/ecommerce_analytics_platform
fastapi mongodb python streamlit
Last synced: about 2 months ago
JSON representation
CRM eCommerce - Analyse et visualisation de données
- Host: GitHub
- URL: https://github.com/hajaarh/ecommerce_analytics_platform
- Owner: Hajaarh
- Created: 2025-01-07T13:13:12.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-09T10:57:37.000Z (over 1 year ago)
- Last Synced: 2025-08-20T14:49:04.666Z (10 months ago)
- Topics: fastapi, mongodb, python, streamlit
- Language: Python
- Homepage:
- Size: 203 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Documentation du Projet CRM eCommerce
#### Projet CRM eCommerce : Analyse et Visualisation de données avec MongoDB, FastAPI et Streamlit.
Le projet CRM eCommerce repose sur l’utilisation de technologies modernes telles que MongoDB, FastAPI, et Streamlit pour :
- Importer et traiter des données clients, produits et commandes.
- Créer une API RESTful pour exposer des KPI et des analyses avancées.
- Visualiser ces KPI à travers un tableau de bord interactif.
---
## Structure de l’application
L’application est divisée en deux parties principales :
1. **Backend** :
- Développé avec le framework Python **FastAPI**.
- Gère les données et les calculs via **MongoDB**.
- Expose des endpoints pour fournir des KPI et des analyses avancées.
2. **Frontend** :
- Conçu avec **Streamlit**.
- Présente les analyses et visualisations à travers un tableau de bord interactif conçu avec Streamlit et Plotly.
---
## Fonctionnalités principales
1. **Analyse des ventes** :
- Total des ventes globales, par région, par produit, et par catégorie.
2. **Analyse des profits** :
- Profits par produit et par catégorie.
- Identification des éléments les plus rentables.
3. **Segmentation des clients (RFM)** :
- Classification des clients en segments (Champions, Clients récents, Clients à risque, etc.).
4. **Prévisions** :
- Utilisation de Facebook Prophet pour prévoir les ventes futures.
5. **Tableau de bord interactif** :
- Permet une exploration visuelle des données grâce à des graphiques et des indicateurs clairs.
---
## Prérequis
Avant de commencer, assurez-vous d’avoir :
- **Python 3.8+ installé.**
- **MongoDB installé (avec MongoDB Compass pour une interface graphique).**
---
## Étapes d'installation et de configuration
### 1. **Cloner le projet**
Téléchargez le projet depuis GitHub :
```bash
git clone
cd backend_python
```
### 2. **Créer et configurer un environnement Python**
Créer un environnement virtuel :
```bash
python -m venv env
```
Activer l’environnement virtuel :
- **Sur Windows** :
```bash
env\Scripts\activate
```
- **Sur macOS/Linux** :
```bash
source env/bin/activate
```
Installer les dépendances :
```bash
pip install -r requirements.txt
```
Cela installera toutes les bibliothèques nécessaires, comme FastAPI, Streamlit, Pandas, et Prophet.
---
### 3. **Configurer MongoDB**
#### 3.1 Installer MongoDB
- Téléchargez MongoDB depuis [mongodb.com](https://www.mongodb.com/) et installez-le.
- Installez également MongoDB Compass, une interface graphique pour gérer les bases de données.
#### 3.2 Importer les fichiers CSV dans MongoDB avec Compass
1. Ouvrez MongoDB Compass et connectez-vous à :
```plaintext
mongodb://localhost:27017
```
2. Créez une nouvelle base de données appelée **ecommerce**.
3. Dans cette base, créez les collections suivantes :
- **Orders**
- **Customers**
- **Products**
4. Pour chaque collection :
- Cliquez sur "Import Data".
- Sélectionnez les fichiers CSV correspondants (par exemple, `orders.csv` pour **Orders**).
- MongoDB Compass importera automatiquement les données.
---
### 4. **Lancer le projet**
#### 4.1 Démarrer le backend (FastAPI)
1. Ouvrez une invite de commande dans le dossier `backend_python`.
2. Lancez le serveur FastAPI avec :
```bash
uvicorn main:app --reload
```
3. Accédez à [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) pour explorer les endpoints de l’API.
#### 4.2 Démarrer le frontend (Streamlit)
1. Dans un nouveau terminal, activez l’environnement virtuel :
```bash
env\Scripts\activate
```
```bash
source env/bin/activate
```
2. Lancez l’application Streamlit :
```bash
streamlit run app.py
```
3. Le tableau de bord s’ouvrira automatiquement dans votre navigateur à [http://localhost:8501](http://localhost:8501).
---
## Création de pipelines d’agrégation avec MongoDB
### 1. **Qu'est-ce qu'un pipeline d'agrégation ?**
Les pipelines d'agrégation de MongoDB permettent de regrouper, transformer et analyser les données en plusieurs étapes. Ils sont utiles pour créer des statistiques ou des KPI avancés à partir de vos collections MongoDB.
---
### 2. **Exemple de pipeline d'agrégation : Analyse des ventes**
Voici un exemple de pipeline pour calculer le total des ventes par produit :
```json
[
{
"$group": {
"_id": "$product_id",
"total_sales": { "$sum": "$sales" }
}
},
{
"$sort": { "total_sales": -1 }
}
]
```
Ce pipeline :
- Regroupe les documents par `product_id`.
- Calcule la somme des ventes (`sales`) pour chaque produit.
- Trie les produits par ventes totales de manière décroissante.
---
### 3. **Utiliser les pipelines avec Python**
Pour connecter MongoDB et exécuter un pipeline avec Python, utilisez la bibliothèque `pymongo`.
#### **Exemple de connexion et exécution** :
```python
from pymongo import MongoClient
# Connexion à MongoDB
client = MongoClient("mongodb://localhost:27017")
db = client["ecommerce"]
# Définir le pipeline d'agrégation
pipeline = [
{"$group": {"_id": "$product_id", "total_sales": {"$sum": "$sales"}}},
{"$sort": {"total_sales": -1}}
]
# Exécuter le pipeline sur la collection "Orders"
results = db["Orders"].aggregate(pipeline)
# Afficher les résultats
for result in results:
print(result)
```
---
### 4. **Intégration avec FastAPI**
Pour exposer les résultats du pipeline d’agrégation via une API FastAPI :
#### **Exemple d'endpoint FastAPI** :
```python
from fastapi import FastAPI
from pymongo import MongoClient
app = FastAPI()
# Connexion à MongoDB
client = MongoClient("mongodb://localhost:27017")
db = client["ecommerce"]
@app.get("/kpi/total-sales")
def get_total_sales():
pipeline = [
{"$group": {"_id": "$product_id", "total_sales": {"$sum": "$sales"}}},
{"$sort": {"total_sales": -1}}
]
results = list(db["Orders"].aggregate(pipeline))
return results
```
Avec cet endpoint, vous pouvez accéder au KPI `total-sales` via `http://127.0.0.1:8000/kpi/total-sales`.
## Structure du projet
Voici les fichiers et dossiers principaux :
- **`app.py`** : Code du frontend pour le tableau de bord interactif avec Streamlit.
- **`main.py`** : Backend pour gérer les API avec FastAPI.
- **`pipelines.py`** : Pipelines MongoDB pour regrouper, nettoyer, et transformer les données.
- **`requirements.txt`** : Liste des dépendances nécessaires au projet.
- **`model_rfm.pkl`** : Modèle de segmentation RFM enregistré.
- **`data/`** : Dossier contenant les fichiers CSV à importer dans MongoDB.
---