Données sources du TD

Quatre sources pour étudier la fréquentation du réseau ferré francilien selon le calendrier et la météo.

Les exemples utilisent Python avec requests et portent sur 2023.

Installation : python -m pip install requests. Les API présentées sont publiques, sans clé d’accès.

1. Validations quotidiennes IDFM

Une ligne décrit les validations d’entrée pour un jour × transporteur × réseau × arrêt × catégorie de titre.

Source : historique des validations IDFM

Rôle : mesurer la fréquentation par jour, arrêt et catégorie de titre. Une validation ne correspond pas nécessairement à un voyageur unique.

Colonnes

Colonne Signification
JOUR Jour d’exploitation, de 04 h à 03 h 59 le lendemain.
CODE_STIF_TRNS Code du transporteur dans la codification des validations ; voir les correspondances ci-dessous.
CODE_STIF_RES Code du réseau administratif, à interpréter avec CODE_STIF_TRNS ; voir ci-dessous.
CODE_STIF_ARRET Code de l’arrêt.
ID_ZDC Identifiant de la zone de correspondance.
LIBELLE_ARRET Nom de l’arrêt.
CATEGORIE_TITRE Catégorie du titre de transport.
NB_VALD Nombre de validations.

Signification des codes transporteur et réseau

Conserver ces codes comme du texte. Les correspondances suivantes servent à lire les validations ; elles ne constituent pas une cinquième source à collecter pour le TD.

Transporteur : CODE_STIF_TRNS

Code Signification
100 RATP.
800 SNCF.
810 Code utilisé pour les RER A et B dans la codification STIF–SNCF, avec les réseaux 801 et 802. Ces lignes sont exploitées par la RATP et la SNCF : ce code ne suffit pas à identifier l’exploitant de chaque validation.
760, 762 Codes présents dans les données de validations, dont le libellé transporteur n’a pas été confirmé par les sources ci-dessous. Conserver les codes.

Sources : liste officielle des transporteurs IDFM pour 100 et 800 ; annexes du contrat STIF–SNCF, page PDF 104 pour 810 et les réseaux associés.

Réseau : couple CODE_STIF_TRNS, CODE_STIF_RES

Un réseau administratif n’est pas toujours une ligne commerciale. Lire les deux codes ensemble. Le tableau reprend la codification historique des contrats STIF de 2016 ; ses regroupements ne garantissent pas le périmètre exact des validations de 2023–2025.

Transporteur Réseau Signification dans la codification historique
100 110 Métro RATP ; la codification inclut aussi le funiculaire et Orlyval.
100 112 Tramways RATP, généralement présents dans les données du réseau de surface.
810 801 RER A.
810 802 RER B.
800 803 RER C.
800 804 RER D.
800 805 RER E.
800 850 Réseau Paris Est : lignes P et T4 dans cette codification.
800 851 Réseau Paris Sud Est : ligne R.
800 852 Réseau Paris Rive Gauche : ligne N.
800 853 Réseau Paris Nord : lignes H et K.
800 854 Réseau Paris Saint-Lazare : lignes J et L.
800 855 Liaison La Verrière–La Défense : ligne U.
800 800 Code observé dans les données de validations ; libellé réseau non confirmé.
760 760 Couple observé dans les données de validations ; libellé réseau non confirmé.
762 762 Couple observé dans les données de validations ; libellé réseau non confirmé.
100 ND Valeur observée sans correspondance réseau confirmée ; traiter le réseau comme non renseigné.

Sources : annexes du contrat STIF–RATP 2016–2020, page PDF 121 pour les réseaux RATP ; annexes du contrat STIF–SNCF, page PDF 104 pour les réseaux SNCF.

Pour un code absent de ces tableaux, conserver sa valeur et indiquer « libellé non confirmé ». Ne pas déduire la ligne empruntée de ce seul code : les validations ferrées sont rattachées à l’entrée d’une station ou d’une gare, comme l’explique la documentation IDFM des validations.

Appel Python

Le catalogue renvoie le lien de l’archive annuelle :

import requests

url = (
    "https://data.iledefrance-mobilites.fr/api/explore/v2.1/"
    "catalog/datasets/histo-validations-reseau-ferre/records"
)
reponse = requests.get(url, params={"where": "annee = '2023'", "limit": 1}, timeout=30)
reponse.raise_for_status()
print(reponse.json())

La réponse contient, pour l’année demandée, un champ reseau_ferre dont l’attribut url désigne l’archive ZIP à télécharger.

2. Zones de correspondance IDFM

Une zone regroupe des arrêts proches entre lesquels une correspondance à pied est possible. Elle peut réunir plusieurs modes de transport.

Source : zones de correspondance IDFM

Rôle : nommer et localiser les zones des validations, puis rechercher des stations météo proches.

Colonnes

Colonne Signification
ZdCId Identifiant de la zone.
ZdCVersion Version de la zone.
ZdCCreated Date de création.
ZdCChanged Date de dernière modification.
ZdCName Nom de la zone.
ZdCXEpsg2154 Coordonnée X du centre de la zone, en Lambert 93.
ZdCYEpsg2154 Coordonnée Y du même point, en Lambert 93.
ZdCTown Commune de ce point.
ZdCPostalRegion Code INSEE de la commune, pas le code postal.
ZdCType Type de zone selon le mode de transport principal.

Appel Python

L’API exporte le référentiel actuel. Préférer le format Parquet : plus compact, et le schéma (noms et types des colonnes) est embarqué dans le fichier, ce qui simplifie le chargement dans BigQuery :

import requests

url = (
    "https://data.iledefrance-mobilites.fr/api/explore/v2.1/"
    "catalog/datasets/zones-de-correspondance/exports/parquet"
)
reponse = requests.get(url, params={"limit": -1}, timeout=120)
reponse.raise_for_status()
print(len(reponse.content), "octets")

L’export CSV existe aussi : remplacer parquet par csv.

Cette source est traitée en exemple guidé dans le notebook.

3. Jours fériés

L’API fournit les dates et les noms des jours fériés. Utiliser la zone métropole pour l’Île-de-France.

Source : jours fériés de 2023

Rôle : enrichir le calendrier pour comparer les jours fériés aux autres jours.

Structure de la réponse

La réponse est un objet JSON :

Élément Signification Exemple
Clé Date du jour férié. 2023-07-14
Valeur Nom du jour férié. 14 juillet

Appel Python

import requests

url = "https://calendrier.api.gouv.fr/jours-feries/metropole/2023.json"
reponse = requests.get(url, timeout=30)
reponse.raise_for_status()
print(reponse.json())

4. Météo quotidienne Météo-France

Une ligne décrit les observations d’une station pour un jour. Les fichiers sont des CSV compressés en GZIP, répartis par département et période.

Source : données météo quotidiennes

Rôle : rapprocher la pluie et les températures de la fréquentation. La famille de fichiers RR-T-Vent contient les variables utiles au TD.

Colonnes utiles

Colonne Signification
NUM_POSTE Identifiant de station sur 8 chiffres, à conserver comme du texte.
NOM_USUEL Nom de la station.
LAT, LON Latitude et longitude, en degrés décimaux.
ALTI Altitude, en mètres.
AAAAMMJJ Date, par exemple 20230714.
RR Précipitations quotidiennes, en mm.
TN Température minimale, en °C.
TM Moyenne des températures horaires, en °C.
TX Température maximale, en °C.
QRR, QTN, QTM, QTX Codes qualité des mesures correspondantes.

Appel Python

L’API renvoie le catalogue des fichiers disponibles :

import requests

url = (
    "https://www.data.gouv.fr/api/1/datasets/"
    "donnees-climatologiques-de-base-quotidiennes/"
)
reponse = requests.get(url, timeout=30)
reponse.raise_for_status()
ressources = reponse.json()["resources"]