Projet final de NSI (réalisé en 2 séances de 2h)

Prenant les transports en communs tous les jours, je trouvais intéressant de faire un projet autour des mobilités. Mon idée était d'avoir des données de trafic en fonction des différentes voies. L'objectif étant de manipuler des données et pas seulement de les récupérer, je souhaitais pouvoir faire une "prévision" très très modeste par rapport à l'année précédente, et la comparer aux données en temps réels.

L'Open DATA

  • M'étant déjà intéressé à l'Open DATA et plus particulièrement à celui de Bordeaux Métropole : je savais que les données de l'année précédente était présente mais aussi et surtout les données en temps réel. Cependant, ces données de l'année précédente était peu documentée sur la documentation de l'Open data de Bordeaux Métropole et surtout : il n'y avait que les heures de pointes du soir et du matin.

  • Je me suis alors dirigé vers l'Open Data de Paris puisqu'il s'agit de la plus grande agglomération et d'une ville très embouteillée ! Elle fournit quant à elle non pas de données en temps réels, mais celle de plusieurs années (2019, 2018, ...) et surtout les données des 13 derniers mois.

Structure du PROJET

  • Une partie python pour l'analyse des fichiers.
  • Un dossier pour le stockage des données.
  • Une partie HTML pour le rendu des données.

Principe de fonctionnement

Les données de trafic de Paris documentent notamment le taux par heure d'occupation de la voie (avec une documentation très documentée !). Ainsi, le principe ici est de récupérer les données d'une année entière : j'ai alors pris celles de 2019. Il s'agit d'un total de 63 fichiers csv. Une fois cette étape faite, le principe était de traiter les données et surtout d'avoir le plus d'informations possibles pour la "prédiction". Ainsi, mon script python parcoure ces 63 fichiers et enregistre le résultat dans un fichier JSON.

Que fait ce script ?

  • En parcourant le tableau, il accède aux données : il vérifie premièrement si la rue a déjà été analysée dans un autre fichier, si c'est le cas il récupère la valeur précédente et ajoute la nouvelle et en fait une moyenne (je ne pense pas que ce soit très rigoureux). Sinon, il crée un clé avec elle même un objet.

  • Chaque rue enregistre les données en fonction : du mois, du jour (de la semaine) et de l'heure. Ainsi dans un même mois on a : 7 valeurs concernant les 7 jours de la semaine, mais dans ces 7 jours, 24 valeurs correspondant aux heures de la journée. Cela donne :

In [2]:
mon_objet_json = {
    "nom de la rue":{
        "months":{
            "January":{
                "days":{
                    "Lundi":{
                        "00":{
                            "occupation":0.10
                        }
                    }
                }
            }
        }
    }
}

Une fois les fichiers CSV parcourue, le script enregistre au fur et à mesure le tout dans un fichier JSON

Un autre élément clé : la page HTML (pour l'affichage) :

Les limites et les fonctionnalités non produites

Une première limite, je pense, est l'enregistrement dans un fichier JSON très peu visible et assez lourd syntaxiquement. De plus, la méthode de calcul d'occupation par jour utilise une moyenne qui me semble un usage peu rigoureux.

Par manque de temps, la fonctionnalité de comparaison avec les données en "temps réels" n'a pas pu être faite :

  • Voici ce que j'avais imaginer : Paris ne fournissant pas de données en temps réel, l'objectif aurait été de récupérer les données de la veille et de comparer avec le modèle établi en J-1. Le traitement des données de la veille aurait suivi la même méthode.
In [ ]: