# Téléchargement et ouverture des données GTFS IDFM
DATE_REF = "20260112" # Date de référence pour le filtrage des trajets (format AAAAMMJJ) ou None pour fixer une date automatiquement
# verifie que l'exectution se fait depuis le bon répertoire
import os
if os.getcwd().endswith("notebooks"):
os.chdir('..')
from script.download_data import get_IDFM_data_path
import pandas as pd
# voir le fichier script/download_data.py pour le détail de la fonction
file_names = get_IDFM_data_path(force_download=False)
# ouvrir les fichiers GTFS utiles dans des DataFrames pandas
usefull_keys = ["routes", "trips", "stop_times", "stops", "calendar"]
dtype_maps = {
"routes": {
"route_id": str,
"agency_id": str,
"route_short_name": str,
"route_long_name": str,
"route_type": int,
},
"trips": {
"route_id": str,
"service_id": str,
"trip_id": str,
"trip_headsign": str,
"direction_id": str,
"block_id": str,
"shape_id": str,
},
"stop_times": {
"trip_id": str,
"arrival_time": str,
"departure_time": str,
"stop_id": str,
"stop_sequence": int,
"pickup_type": str,
"drop_off_type": str,
},
"stops": {
"stop_id": str,
"stop_code": str,
"stop_name": str,
"stop_desc": str,
"stop_lat": float,
"stop_lon": float,
"zone_id": str,
"parent_station": str,
"location_type": str,
},
"calendar": {
"service_id": str,
"monday": int,
"tuesday": int,
"wednesday": int,
"thursday": int,
"friday": int,
"saturday": int,
"sunday": int,
"start_date": int,
"end_date": int,
},
}
idfm = {}
for key, dtype in dtype_maps.items():
path = file_names.get(key)
idfm[key] = pd.read_csv(path, dtype=dtype, low_memory=False) # low_memory=False pour éviter les warnings
# Affichage des fichiers chargés
pd.DataFrame({
"Fichiers ouverts": list(idfm.keys()),
"Colonnes": [' '.join(idfm[k].keys()) for k in idfm.keys()]
})