# Jeu de données — Trajectoires économiques du Maroc

Toutes les données publiées sur la plateforme, en fichiers plats réutilisables par
programme. Ils sont **régénérés à chaque mise en ligne du site**, depuis les mêmes
sources que les graphiques.

Adresse permanente : https://trajectoires-maroc.vercel.app/donnees
Généré le 2026-09-16.

## Les colonnes

| Fichier | Colonnes |
|---|---|
| `series-annuelles.csv` | `serie_id`, `serie_nom`, `secteur`, `annee`, `valeur`, `unite`, `source`, `producteur_cite` |
| `series-mensuelles.csv` | `serie_id`, `serie_nom`, `secteur`, `annee`, `mois`, `valeur`, `unite`, `source` |
| `regions.csv` | `region_code`, `region_nom`, `indicateur_id`, `indicateur_nom`, `annee`, `valeur`, `unite`, `source` |
| `comparaison-internationale.csv` | `serie_id`, `serie_nom`, `entite_code`, `entite_nom`, `entite_type`, `annee`, `valeur`, `unite`, `source`, `producteur_cite` |
| `previsions.csv` | `serie_id`, `serie_nom`, `annee`, `valeur_prevue`, `borne_basse`, `borne_haute`, `modele` |
| `revisions.csv` | `constate_le`, `jeu`, `nature`, `serie_id`, `serie_nom`, `secteur`, `periode`, `avant`, `apres`, `unite`, `source` |

Les fichiers sont en **forme longue** : une ligne par observation.

- séparateur **virgule**, guillemets selon la RFC 4180 ;
- décimale **point** ;
- encodage **UTF-8 sans BOM** ;
- années entières, mois de 1 à 12.

**Une observation manquante est une ligne absente**, jamais un zéro. Si vous
repivotez en tableau large, des cellules vides apparaissent : elles correspondent
aux observations absentes. Un zéro dans une cellule est une mesure — « aucun
échange ce mois-là » — et non un bouche-trou.

## `source` et `producteur_cite` ne disent pas la même chose

`source` est le **relais** : l'organisme chez qui nous avons pris le chiffre. Il ne
change pas, et c'est lui qu'il faut citer pour retrouver la donnée.

`producteur_cite` est le champ que ce relais publie lui-même sur **l'origine** de la
donnée, repris **mot pour mot**, en anglais, sans traduction ni correction. La Banque
mondiale est souvent un relais : elle nomme la FAO pour les céréales, l'Agence
internationale de l'énergie pour l'énergie, Comtrade pour les parts d'échange,
l'Organisation internationale du travail pour le chômage — et, pour les agrégats de
comptabilité nationale, « Country official statistics », sans nommer l'institution.
Sur un indicateur, ce champ ne porte qu'une mention générique (« Data API ») : nous
la publions telle quelle plutôt que de deviner à sa place.

La cellule est **vide** quand la source ne publie pas ce champ — c'est le cas de
l'Office des Changes et du HCP. Vide signifie « la source n'en cite pas », jamais
« il n'y en a pas ».

> **Si vous comparez avec un export fait depuis un graphique.** Le bouton
> « exporter » de chaque figure produit un CSV destiné à un tableur français :
> point-virgule, virgule décimale, BOM. Les fichiers de cette page visent un
> programme, pas un tableur. **Les valeurs sont identiques ; seule leur écriture
> diffère.**

## Prévisions : un fichier séparé

`previsions.csv` ne contient **aucune mesure**. Ce sont des valeurs produites par un
lissage exponentiel à tendance amortie, avec un intervalle et le taux d'erreur du
modèle mesuré par validation à origine glissante ; le nom du modèle et ce taux
figurent dans la colonne `modele`.

Elles ne sont pas versées dans `series-annuelles.csv`. Fusionnées dans une même
colonne « valeur », elles seraient reprises comme des observations par le premier
programme qui lirait le fichier.

## Si un chiffre que vous avez déjà repris change

`revisions.csv` est le registre des changements survenus dans des valeurs **déjà
publiées ici**. Une ligne par changement : la date à laquelle nous l'avons constaté,
sa nature, la série, la période, la valeur avant et la valeur après.

**Une révision n'est pas une erreur de la source.** Les instituts révisent parce
qu'une estimation devient semi-définitive puis définitive, parce qu'une nomenclature
évolue, parce qu'une année de base est refaite. C'est le fonctionnement normal de la
statistique publique. Ce fichier constate ce qui a changé ; il ne qualifie pas les
changements.

La colonne `nature` distingue sept cas :

| `nature` | ce que ça veut dire |
|---|---|
| `revision` | même série, même période, valeur différente |
| `retrait` | une valeur publiée ici n'est plus fournie |
| `comblement` | une valeur paraît là où il n'y en avait pas, dans la période déjà couverte |
| `ajout` | une période entre pour la première fois et allonge la série |
| `requalification` | l'unité ou la source change ; les valeurs, elles, ne bougent pas |
| `serieNouvelle` | une série entre dans le jeu de données |
| `serieRetiree` | une série en sort |

**Pourquoi ce fichier existe alors que `manifeste.json` porte une empreinte.**
L'empreinte SHA-256 vous dit qu'un fichier a changé ; elle ne vous dit pas ce qui a
changé dedans, et vous laisse tout retélécharger pour l'apprendre. Ce registre vous
dit lesquelles de vos valeurs relire.

Ses dates sont celles de nos **constats**, pas celles auxquelles le producteur a
révisé : nous ne pouvons dater que ce que nous voyons. Il commence à l'ouverture du
registre — un changement antérieur à cette date n'y figure pas.

## Sources et conditions de réutilisation

**Ce jeu de données ne porte pas de licence globale.** Les
séries proviennent de producteurs différents, qui ne déclarent pas tous les mêmes
conditions. Chaque ligne porte sa source dans la colonne `source` ; la page
https://trajectoires-maroc.vercel.app/sources donne pour chacune son adresse officielle, sa description
et ses limites connues.

**Les conditions du producteur d'origine s'appliquent.** Le travail propre à cette
plateforme est la compilation, l'harmonisation des unités et la mise en forme, pas la
production des mesures. Apposer ici une licence libre reviendrait à concéder un droit
que la plateforme ne détient pas.

Licences explicitement déclarées par les sources :

- **geoBoundaries gbOpen MAR ADM1 (William & Mary geoLab) · OpenStreetMap** : Open Data Commons Open Database License (ODbL) 1.0 — s’applique au fond de carte des régions.

## Stabilité : ce qui est promis, et ce qui ne l'est pas

**Promis.**

1. Les adresses de cette page et de ses fichiers ne changent pas.
2. Une colonne n'est ni supprimée ni renommée ; les ajouts se font à droite.
3. `manifeste.json` porte la date de génération, une empreinte SHA-256 par fichier
   et une empreinte d'ensemble : vous pouvez savoir si quelque chose a bougé sans
   tout retélécharger.
4. Le manifeste dit aussi de quel état du dépôt ces fichiers sont sortis.

**Non garanti : le contenu de ces adresses change.**
Les fichiers sont refabriqués à chaque mise en ligne du site — c'est ce qui les
empêche de s'écarter des graphiques, et c'est ce qui les rend mouvants. Il n'existe
ici **aucune archive des versions passées** : `series-annuelles.csv` sert toujours
la dernière. L'empreinte vous apprend qu'un fichier a bougé ; elle ne vous rend pas
celui d'avant.

Les fichiers sont servis avec `Access-Control-Allow-Origin: *` : ils sont lisibles
depuis un script exécuté dans un navigateur.

## Retrouver la version que vous avez lue

`manifeste.json` porte un bloc `version` :

| champ | ce qu'il dit |
|---|---|
| `commit` | l'état du dépôt dont ces fichiers sont sortis |
| `commit_court` | la forme abrégée du même, pour une citation |
| `origine` | d'où vient cette identité : `hebergeur`, `depot`, ou `indisponible` |
| `deploiement` | l'adresse propre à la mise en ligne qui a produit ces fichiers |
| `environnement` | `production` ou `preview` |

et, à côté, `empreinte_jeu` : **une** empreinte pour l'ensemble. Elle se recalcule
sans nous — pour chaque entrée de `fichiers`, dans l'ordre du manifeste, la ligne
« `nom`, une espace, `empreinte` », terminée par un saut de ligne ; le SHA-256 de
tout ce texte. C'est le seul identifiant du contenu qui ne dépende d'aucune
circonstance extérieure : il existe même quand `version` répond `indisponible`.

Par ordre de sûreté décroissante :

### 1. Refabriquer les fichiers depuis le dépôt

À données égales, ces fichiers sont **reproductibles octet pour octet**. Les fichiers
CSV ne portent aucune date de génération ; ceux qui en portent une acceptent qu'on
la leur impose. Muni du dépôt :

```
git checkout <version.commit>
npm ci
JEU_DONNEES_DATE=<genere_le> node outils/jeu-de-donnees.mjs verification
```

La variable d'environnement se pose selon votre interpréteur de commandes. Travaillez
depuis un vrai clone : ce mode d'emploi porte lui-même la version abrégée, qu'une
archive dépourvue de `.git` ne saurait pas écrire — l'empreinte d'ensemble ne
retomberait alors pas sur la même valeur, sans que rien n'ait changé aux données.

Les fichiers listés au manifeste doivent alors être identiques à ceux que vous
détenez, et `empreinte_jeu` retomber sur la même valeur. Le manifeste refabriqué,
lui, différera par son bloc `version` : celui-ci décrit la CONSTRUCTION, pas les
données — c'est d'ailleurs pourquoi le manifeste ne se liste pas lui-même et n'entre
pas dans `empreinte_jeu`.

**Condition : disposer d'un accès au dépôt.** Il n'est pas
nécessairement ouvert au public ; le cas échéant, l'accès se demande à l'éditeur de
la plateforme.

### 2. L'adresse du déploiement — exacte, mais brève

`version.deploiement` est l'adresse propre à la mise en ligne qui a produit ces
fichiers. Elle sert cette version-là telle quelle, et elle **n'est pas devinable** :
le fragment qui l'identifie est tiré au sort par l'hébergeur, il n'est pas dérivé du
commit. C'est la raison pour laquelle elle est notée ici plutôt que reconstruite.

Réserves :

- l'hébergeur **supprime automatiquement** ses anciens déploiements, passé un délai
  qui dépend de l'offre souscrite ; l'adresse répond alors `410 Gone` ;
- selon le réglage de protection du projet, elle peut demander une authentification
  à un visiteur anonyme, là où le domaine public, lui, reste ouvert.

Ni l'un ni l'autre ne dépend de cette plateforme. **Cette voie n'est pas fiable
au-delà de quelques semaines** : elle permet une vérification rapprochée, pas un
archivage.

### 3. À défaut : savoir ce qui a changé

Si les deux voies échouent, il reste ce que le jeu de données porte lui-même.
`revisions.csv` vous dit quelles valeurs déjà publiées ont changé, à quelle date
nous l'avons constaté, et de quoi à quoi : vous apprenez lesquelles de vos valeurs
relire, à défaut de récupérer le fichier d'origine. Et `empreinte_jeu` vous dit, en
une comparaison, si ce que vous tenez est encore ce que nous publions.

Ces éléments permettent de constater un changement, pas de restituer une version
antérieure.

## Citer

> *Trajectoires économiques du Maroc*, plateforme de visualisation,
> https://trajectoires-maroc.vercel.app — jeu de données consulté le [date],
> version `06cbb5f`.
> Données d'origine : voir la colonne `source` de chaque fichier.

La version citée est celle du manifeste que vous avez téléchargé : elle désigne
un état précis du dépôt, là où la date seule désigne un contenu qui a pu changer
depuis.
