L’open data français : des jeux de données géniaux, des formats exécrables

Paris codé de six façons, un caractère invisible, des entreprises créées en l’an 5205… Neuf pièges réels rencontrés en croisant vingt sources ouvertes, et une liste de souhaits.

Je suis un grand fan de l'open data français. Les données publiques sont riches, gratuites, de plus en plus nombreuses, mais quand on construit un site qui croise une vingtaine de sources (Insee, ministères, CAF, URSSAF, collectivités…), on découvre vite que « ouvert » ne veut pas dire « compatible ». Voici un petit florilège des pièges rencontrés, tous réels, tous vécus !

Liste de six façons dont Paris est codé selon les jeux de données ouverts : 75056, 75101 à 75120, 75015…

1. Paris n'existe pas (ou plutôt : de six façons)
Pour l'Insee, Paris est la commune 75056. Pour les ventes immobilières (DVF) et l'accès aux médecins (DREES), ce sont les vingt arrondissements, de 75101 à 75120. La CAF, l'URSSAF et les finances locales raisonnent par ville et ignorent les arrondissements. L'annuaire des soignants mélange les deux, et il faut reconvertir un code postal (75015) en code Insee (75115). Même chose pour Lyon et Marseille. Une page « commune » qui veut afficher tout cela pour le 15e arrondissement doit jongler avec quatre conventions.

2. « 1 » ou « 01 » ?
Deux jeux de données que nous croisons écrivent le département de l'Ain « 1 » pour l'un et « 01 » pour l'autre. Résultat : la jointure ne trouve rien, sans le moindre message d'erreur.

3. Le caractère invisible
Les exports de la CAF commencent par un BOM (Byte Order Mark), un caractère invisible en tête de fichier. Le nom de la première colonne se retrouve précédé de ce caractère et le code ne la reconnaît plus. Rien ne le montre à l'écran : on le découvre en regardant les octets.

4. L'an 5205 #

Le répertoire SIRENE contient des entreprises créées… en l'an 5205. Il contient aussi un pic d'environ un million de cessations d'activité en 2016, qui ressemble moins à une crise qu'à un grand nettoyage du registre. Toute série historique doit être bornée et prise avec des pincettes.

5. La somme qui multiplie les prix #

Dans les ventes immobilières (DVF), la valeur foncière d'une vente est répétée à l'identique sur chaque ligne (chaque lot) de la même vente. Si l'on additionne naïvement, un appartement avec cave et parking compte trois fois son prix. Les numéros de rue, eux, arrivent parfois au format « 12.0 », comme s'ils étaient des nombres décimaux.

6. Le zéro qui n'en est pas un #

Dans les statistiques de délinquance communales, la mention « ndiff » signifie secret statistique : la donnée existe mais n'est pas diffusée. Ce n'est pas zéro.

7. Des classifications qui ne couvrent presque rien #

Le ministère de l'Intérieur classe les listes des municipales 2026 par nuance politique, mais seulement dans les grandes communes : sur 34 821 listes élues, 31 527 n'ont aucune nuance. Et un piège de format : le fichier officiel des nuances sépare ses colonnes par des points-virgules ; notre premier import supposait des virgules et avait laissé tous les libellés vides.

8. Des coordonnées arrondies, des qualités « non évaluées » #

La base permanente des équipements de l'Insee localise des milliers d'équipements sur une grille d'environ 100 mètres : plusieurs points tombent au même endroit. Et la qualité de localisation « non évaluée » concerne surtout les 214 000 équipements sportifs. En les écartant par prudence, on avait fait disparaître la piscine de Courbevoie de la carte.

9. Des fichiers de plusieurs gigaoctets, des URL qui changent #

Les résultats électoraux agrégés pèsent 2,4 Go en CSV, au niveau du bureau de vote. Les adresses de téléchargement des gros fichiers changent à chaque mise à jour mensuelle. Et 82 000 lignes de résultats ne correspondent à aucune commune actuelle, parce que celles-ci ont fusionné depuis, ou qu'il s'agit de l'étranger et de l'outre-mer.

Alors, pourquoi on continue ? #

Parce que malgré tout, c'est extraordinaire. Il y a vingt ans, rien de tout cela n'était accessible. Les équipes qui publient ces données font un travail énorme, et la communauté qui réutilise ces données partage volontiers ses astuces. Si je pouvais passer une commande :

  • de l'UTF-8 sans BOM, un séparateur par fichier,
  • des en-têtes stables d'un millésime à l'autre ;
  • des formats Parquet pour les gros volumes, comme le fait déjà SIRENE ;
  • un dictionnaire de données disant ce que veulent dire les valeurs spéciales (« ndiff », vide, etc.) ;
  • des URL stables, ou à défaut un point d'entrée « dernière version ».

En attendant, chaque piège de cette liste a fini en une ligne de code et un commentaire dans le code. C'est ce travail de nettoyage, invisible, qui permet d'afficher un portrait de commune cohérent ;-)

Pour ne rien manquer : le flux RSS du blog.

À lire aussi