Projet académique réalisé dans le cadre du BUT Science des Données (3Úme année) à l'Université de Poitiers. Ce projet explore la migration de données d'une base SQL vers MongoDB et analyse les performances des transports publics parisiens dans un contexte futuriste (2055).
L'objectif principal est de comparer les approches relationnelle (SQL) et documentaire (NoSQL) pour gérer et analyser un systÚme de transport urbain complexe incluant des données de trafic, pollution, incidents et horaires.
- Migration complĂšte d'une base SQLite vers MongoDB
- Dénormalisation intelligente des données
- CrĂ©ation de documents imbriquĂ©s pour optimiser les requĂȘtes NoSQL
- Gestion des relations géographiques (GeoJSON)
- Trafic : Retards moyens, taux de ponctualité, incidents
- Environnement : Ămissions CO2, nuisances sonores, tempĂ©rature
- Performance : Analyse par ligne, véhicule et chauffeur
- Urbanisme : Distribution des arrĂȘts par quartier
- Corrélations : Trafic/pollution, retards sans incidents
- KPI en temps réel : Lignes actives, incidents, CO2 moyen
- Graphiques dynamiques :
- Retards par ligne (barres)
- Répartition des véhicules (camembert)
- Ăvolution CO2 (chronologique)
- Types d'incidents (barres)
- Cartographie interactive :
- Visualisation des arrĂȘts avec MarkerCluster
- Carte choroplĂšthe de pollution par quartier
- Filtrage par ligne de transport
- Comparateur SQL/NoSQL : Validation cÎte-à -cÎte des résultats
- Base de données : SQLite, MongoDB
- Outils MongoDB : MongoDB Compass (interface graphique)
- Langages : Python 3.x
- Visualisation : Streamlit, Plotly, Folium
- Traitement : Pandas, PyMongo
- Cartographie : GeoJSON, Folium.plugins
Paris2055_MongoDB_migration_SQL/
âââ csv/ # Dossier des rĂ©sultats d'analyses
â âââ A_sql.csv - N_sql.csv # RĂ©sultats SQL (14 requĂȘtes)
â âââ A_nosql.csv - N_nosql.csv # RĂ©sultats NoSQL (14 requĂȘtes)
âââ partie_1_req_sql.py # RequĂȘtes SQL (14 analyses)
âââ partie_2_migration.py # Script de migration SQL â MongoDB
âââ partie_3_req_nosql.py # RequĂȘtes NoSQL Ă©quivalentes
âââ partie_4_dashboard.py # Dashboard Streamlit
âââ Paris2055.sqlite # Base source (non fournie)
âââ .gitignore # Fichiers Ă exclure du versioning
âââ README.md # Documentation du projet
- Python 3.8+
- MongoDB Community Server
- MongoDB Compass (optionnel, interface graphique)
- SQLite3
pip install pymongo pandas streamlit plotly folium streamlit-folium- Démarrer le serveur MongoDB local :
mongod --dbpath /chemin/vers/data-
Vérifier la connexion sur
mongodb://localhost:27017/ -
[Optionnel] Utiliser MongoDB Compass pour visualiser les données :
- Ouvrir MongoDB Compass
- Se connecter Ă
mongodb://localhost:27017 - Explorer les collections
Paris2055 - Visualiser les documents, crĂ©er des requĂȘtes graphiquement
python partie_1_req_sql.pyGénÚre les fichiers A_sql.csv à N_sql.csv
python partie_2_migration.pyCrée la base Paris2055 avec 5 collections :
Reseau(lignes, arrĂȘts, vĂ©hicules)TraficEvents(incidents, retards)Quartiers(gĂ©omĂ©tries GeoJSON)Mesures(capteurs environnementaux)Horaires(passages, passagers)
python partie_3_req_nosql.pyGénÚre les fichiers A_nosql.csv à N_nosql.csv
streamlit run partie_4_dashboard.pyAccĂšs via http://localhost:8501
-- Moyenne des retards par ligne
SELECT Ligne.nom_ligne, AVG(Trafic.retard_minutes) AS retard_moyen
FROM Trafic
LEFT JOIN Ligne ON Trafic.id_ligne = Ligne.id_ligne
GROUP BY Ligne.nom_ligne
ORDER BY retard_moyen DESC;# Moyenne des retards par ligne
db.TraficEvents.aggregate([
{"$group": {
"_id": "$id_ligne",
"retard_moyen": {"$avg": "$retard_minutes"}
}},
{"$lookup": {
"from": "Reseau",
"localField": "_id",
"foreignField": "_id",
"as": "info_ligne"
}},
{"$sort": {"retard_moyen": -1}}
])- â Comprendre les diffĂ©rences SQL/NoSQL
- â MaĂźtriser l'agrĂ©gation pipeline MongoDB
- â Optimiser les structures de donnĂ©es documentaires
- â Visualiser des donnĂ©es gĂ©ospatiales
- â CrĂ©er des dashboards interactifs
- Jade Le Brouster
- Emmanuelle Orain
- Lola Dixneuf
Formation : BUT Science des Données 3 - Université de Poitiers
Année : 2025-2026
Projet académique - Tous droits réservés
â N'hĂ©sitez pas Ă mettre une Ă©toile si ce projet vous a Ă©tĂ© utile !
đ SystĂšme de supervision des transports Paris 2055 | Migration SQLâMongoDB | 14 requĂȘtes comparatives | Dashboard Streamlit avec cartographie interactive | Analyse trafic, pollution & incidents | BUT Science des DonnĂ©es