Skip to content

loladn/Paris2055_MongoDB_migration_SQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚇 Paris 2055 - Systùme de Supervision des Transports

MongoDB Python Streamlit SQLite

📋 Description

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.

✹ FonctionnalitĂ©s

🔄 Migration SQL → MongoDB

  • 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)

📊 Analyses AvancĂ©es (14 requĂȘtes)

  • 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

📈 Dashboard Interactif (Streamlit)

  • 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

đŸ› ïž Technologies

  • 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

📁 Structure du Projet

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

🚀 Installation

Prérequis

  • Python 3.8+
  • MongoDB Community Server
  • MongoDB Compass (optionnel, interface graphique)
  • SQLite3

Installation des dépendances

pip install pymongo pandas streamlit plotly folium streamlit-folium

Configuration MongoDB

  1. Démarrer le serveur MongoDB local :
mongod --dbpath /chemin/vers/data
  1. Vérifier la connexion sur mongodb://localhost:27017/

  2. [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

📖 Utilisation

1ïžâƒŁ ExĂ©cution des requĂȘtes SQL

python partie_1_req_sql.py

GénÚre les fichiers A_sql.csv à N_sql.csv

2ïžâƒŁ Migration vers MongoDB

python partie_2_migration.py

Cré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)

3ïžâƒŁ RequĂȘtes NoSQL

python partie_3_req_nosql.py

GénÚre les fichiers A_nosql.csv à N_nosql.csv

4ïžâƒŁ Lancement du Dashboard

streamlit run partie_4_dashboard.py

AccĂšs via http://localhost:8501

📊 Exemples de RequĂȘtes

SQL (Relationnel)

-- 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;

MongoDB (Documentaire)

# 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}}
])

🎯 Objectifs PĂ©dagogiques

  • ✅ 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

đŸ‘„ Auteures

  • Jade Le Brouster
  • Emmanuelle Orain
  • Lola Dixneuf

Formation : BUT Science des Données 3 - Université de Poitiers
Année : 2025-2026

📄 Licence

Projet académique - Tous droits réservés


⭐ N'hésitez pas à mettre une étoile si ce projet vous a été utile !

Paris2055_MongoDB_migration_SQL

🚇 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

About

🚇 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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages