[Data & crise] Saison #2 E2 — Super Monkey pédale dans Paris

Nadia Zabeti
INVYO
Published in
5 min readMay 4, 2021

C’est parti pour la seconde aventure de Super Monkey ! Après l’avoir suivi dans son investigation aux fake news 👇

…vous allez le suivre dans son nouveau challenge : pédaler à Paris!

Vous me direz que Super Monkey n’est pas très original sur ce coup, et qu’il suit une tendance nette depuis plus d’un an, où grève et covid ont poussé des milliers de personnes à se (re)mettre au vélo, sur fond de conscience environnementale avec de multiples incentives régionales pour favoriser le recours au vélo vs celui de la voiture.

Il n’en fallait pas plus à Super Monkey pour se lancer 🚲 ! De passage à Paris, il décide de se mettre au Vélib’. Mais avant de pédaler pour la première fois dans la capitale, Super Monkey, qui cache sous son air malin et détaché une légère appréhension, décide de mobiliser ses connaissances en data.

Mmhhh, que vient faire la data dans une décision de balade à vélo rue de Rivoli ? Eh bien, Super Monkey veut mettre à profit sa capacité de récolte de la donnée et d‘analyse de la donnée pour étudier des liens de causalité.

En bref : il veut utiliser les données météorologiques ainsi que les données des compteurs de Vélib’ pour voir quels sont leurs liens. Par exemple, quel est le facteur météorologique qui joue le plus sur le nombre de vélo ? Le vent ou l’humidité ? La température ou la durée du jour ? 🔎

Utiliser la donnée pour étudier les relations entre les phénomènes fait partie intégrante du métier de Data Scientist.

Prêt à réaliser votre première étude de corrélation ? C’est parti !

1. Récolter la donnée

Après quelques recherches, nous choisissons deux sites à partir desquels nous allons construire notre jeu de données.

** pour les données sur le nombre de vélos:

** pour les données météorologiques: https://www.historique-meteo.net/france/

# fusion des 2 jeux de données
df = pd.merge(df_météo, df_vélo, on='date', how='outer')
# création de la colonne "heure"
import datetime
df["heure"] = df.date.dt.hour
#affichage du nombre de vélos en fonction de l'heure
import plotly.express as px
fig = px.histogram(dm,x="heure", y='sum_counts')
fig.show()
#création de la colonne "jour"
df["jour"] = df["date"].apply(lambda x: datetime.datetime.strftime(x,"%A"))
#affichage du nombre de vélos en fonction du jour
fig = px.histogram(dm,x="jour", y='sum_counts')
fig.show()
Graphique représentant le nombre de Vélibs loués en fonction de l’heure de la journée
Somme cumulée sur la période étudiée (du 01 mars au 31 décembre 2020)

2. Agréger le jeu de données

La difficulté que nous avons dû contourner dans ce jeu de données se situe au niveau de la constitution des données. Pour les données météorologiques, elles ont été relevées sur une base journalière, or les données de comptage de vélos sont sur une base horaire.

Pour avoir un maximum de points pour réaliser la modélisation, nous avons coupé les journées en 3:

# aggrégation des données et découpage en 3 des journées
df.resample("8H", on="date").agg({'TempMax_Deg':'mean', 'TempMin_Deg':'mean','Wind_kmh':'mean','Wet_percent':'mean', 'Visibility_km':'mean','CloudCoverage_percent':'mean', 'Dayduration_Min':'mean', 'sum_counts':'sum'})

Nous avons également procédé à un classique chez les Data Scientists : la création de variable à partir de variables existantes, afin d’apporter davantage de valeur à nos données. Ici, nous avons crée la variable binaire “Week_end”, qui vaut 1 si la donnée a été récoltée en week-end (samedi ou dimanche), 0 sinon.

# création de la variable "Jour" qui contient le jour de la semainedf["Jour"] = df.date.apply(lambda x: datetime.datetime.strftime(x,"%A"))#création de la colonne "Week_end" à laquelle on attribue 0df["Week_end"] = 0# on affecte 1 aux données récoltées le week-enddf.loc[(df["day"]=="Dimanche") | (df["day"]=="Samedi"), "Week_end"] = 1

3. Analyser les corrélations

Une fois les données agrégées, nous pouvons passer à l’étape suivante : l’établissement de la matrice de corrélation. Nous avons recours au coefficient de Pearson, et nous prenons connaissance de la corrélation (qu’elle soit positive ou négative — ce qui compte, c’est à quel point une variable est corrélée à une autre).

On lit en croisant l’abscisse et l’ordonnée, par exemple pour la variable “Nombre de Vélibs”:

Zoom sur les corrélations avec la variable “Nombre de Vélibs”

En se plaçant sur l’axe des ordonnées, on observe les corrélations avec les variables placées en abscisse.

Plus la coloration est forte, plus la corrélation est forte.

Le rouge correspond à une corrélation positive (si une variable augmente, l’autre aussi), quand le bleu indique une corrélation négative (si une variable augmente, l’autre baisse).

>>> On remarque alors que les variables ayant la plus forte corrélation avec le nombre de Vélibs sont la températures maximale et la durée du jour.

Bonus

Ce qui suit n’est pas un arc-en-ciel ou un test de Rorschach …

D’après Google Mobilités

… mais la visualisation du différentiel de la fréquentation quotidienne des hubs de transport (bus, métro, train…). Chaque point correspond à la différence avec le trafic qu’il devrait y avoir pour ce jour J, la valeur de référence étant choisie par les soins de Google sur une journée similaire “hors covid”.

S’il y a moins de fréquentation dans ces lieux, est-ce parce que plus de personnes se sont mises au vélo ? A votre avis, quel jeu de données supplémentaire nous permettrait de répondre à cette question ?

🚀Et maintenant : c’est à vous !

Que pouvez-vous observer sur la matrice de corrélation ?(la jolie matrice en forme de pyramide avec les carrés rouge/bleu 😉)

  1. Quelles sont les variables qui influencent le plus le critère “Visibilité” ?
  2. Quelles sont les variables qui influencent le plus le critère “Durée du jour” ?
  3. Est-ce que le taux d’humidité est une variable à garder pour analyser le critère “Durée du jour” ?

Vous pouvez nous envoyer vos réponses sur Medium ou sur Linkedin, nous avons une petite surprise pour ceux qui auront les réponses correctes ✅

Belle fin de journée et à dans deux semaines !

--

--