Structure de projet recommandée¶
xyt_gps n'impose pas une arborescence de projet. Les fonctions acceptent des
Path Python ou des chemins texte. Pour garder les notebooks lisibles et
réutilisables, il est recommandé de définir les chemins une seule fois au début
du projet.
Principe¶
Un projet d'analyse GPS peut être organisé ainsi :
project_root/
├── config/
│ ├── project_config.json
│ └── mappings.yml
├── data/
│ ├── raw/ # exports GPS originaux, non versionnés
│ ├── external/ # zones, questionnaires, pondérations
│ └── outputs/
│ ├── 0-landed-data/ # données homogénéisées avant package
│ │ └── experiment-a/
│ │ ├── complete/
│ │ └── anonymized/
│ ├── 2-transformed-data/
│ │ └── experiment-a/ # tables de mobilité structurées
│ ├── 3-enriched-data/
│ │ └── experiment-a/ # enrichissements et indicateurs
│ └── 4-clean-data/
│ └── experiment-a/ # base propre pour analyses et dashboards
│ ├── cleaned-base/
│ ├── indicators/
│ ├── spatial-analytics/
│ ├── figures/
│ ├── qa-reports/
│ ├── reference-data/
│ ├── metadata/
│ └── database/
├── notebooks/
│ ├── 00_data_landing.ipynb
│ ├── 01_data_loading.ipynb
│ ├── 02_quality_check.ipynb
│ ├── 03_spatial_cleaning.ipynb
│ ├── 04_enrich_indicators.ipynb
│ └── 05_export_cleaned_dataset.ipynb
└── reports/
└── figures/
Les dossiers data/raw/ et data/outputs/ doivent rester ignorés par git,
surtout lorsque les données contiennent des traces GPS ou des informations
personnelles.
Variables de chemins¶
Dans un notebook, définir explicitement :
from pathlib import Path
project_root = Path("..").resolve()
data_root = project_root / "data"
output_root = data_root / "outputs"
experiment_name = "experiment-a"
raw_data_dir = data_root / "raw" / "gps"
external_data_dir = data_root / "external"
landing_dir = output_root / "0-landed-data" / experiment_name / "anonymized"
transformed_dir = output_root / "2-transformed-data" / experiment_name
enriched_dir = output_root / "3-enriched-data" / experiment_name
clean_dir = output_root / "4-clean-data" / experiment_name
Ces noms sont des conventions de travail, pas des paramètres imposés par le package. Ils permettent de lire la chaîne de traitement sans chemins absolus et sans hypothèse propre à un ordinateur.
Dans 4-clean-data/<experiment_name>, le sous-dossier à utiliser en priorité
pour les analyses thématiques est cleaned-base/. Il contient les tables de
mobilité stabilisées : storyline, legs, staypoints, trips, journeys,
user_stats, map_track_trip_journey, map_legs_staypoints, et si
disponibles public_transport_legs, user_presence, occupancy_co2 et
health.
Lorsqu'une analyse doit couvrir plusieurs expériences, il est préférable de les
préparer séparément jusqu'à 4-clean-data/<experiment_name>, puis de les
concaténer au moment de l'analyse. Cette convention évite de mélanger des
calendriers de phases ou des règles de projet différentes pendant la
transformation.
Lien avec ProjectConfig¶
ProjectConfig.raw_data_dir décrit le dossier d'entrée utilisé par
load_gps_export(). ProjectConfig.export_dir peut servir de dossier de sortie
par défaut, mais les fonctions d'export acceptent aussi un chemin explicite.
import xyt_gps as xyt
config = xyt.ProjectConfig(
experiment_name="mobility-study",
raw_data_dir=raw_data_dir,
export_dir=transformed_dir,
)
Si les tables sont déjà chargées avec pandas, raw_data_dir n'est pas
nécessaire :
Convention utilisée dans ce dépôt¶
Les notebooks historiques de ce dépôt utilisent encore des dossiers nommés
Notebooks/ et Data/Output/. Ce sont des conventions du projet Déclic, pas
des contraintes du package. Pour un nouveau projet destiné à être partagé, une
arborescence en minuscules comme notebooks/, data/ et config/ est plus
standard.