L’exploitation des données ouvertes est souvent tributaire du modèle des données publiées. Il arrive souvent que les données soient publiées dans un format spécifique difficilement exploitable car présentant des informations qui relèveraient d’une représentation hiérarchique mais qui par commodité sont livrées sans réelle organisation.

Cet article vise à montrer comment il est possible en utilisant la librairie Python/pandas de mettre à plat les données opendata sous la forme d’une table unique.

Le premier exemple est tiré du site France Très Haut Débit. Il propose un fichier au format Excel avec par commune : les couvertures par technologie (DSL, câble et fibre) et par débit (éligible, 3, 8, 30 et 100 Mbits/s). Au total, le fichier présente 23 colonnes.

Le principe de mise à plat consiste 1°) à évacuer les colonnes singulières vers l’index 2°) à hiérarchiser les colonnes relatives aux technologies et aux débits 3°) à renvoyer les colonnes hiérarchisées vers l’index et 4°) à supprimer l’index.

Après mise à plat, les données peuvent être représentées sous la forme d’une table à 6 colonnes seulement : département, code INSEE, commune, technologie, débit et valeur, bien plus facile à exploiter.

Le second exemple, toujours dans le domaine des télécoms, est tiré du site OpenDataSoft. Il propose un fichier CSV avec par commune : les couvertures en population et surfacique par opérateur (Orange, Bouygues, SFR et Free) et par technologie (2G, 3G et 4G). Au total, le fichier présente 37 colonnes.

A nouveau, après mise à plat, les données peuvent être représentées sous la forme d’une table à 11 colonnes seulement : codes postal et INSEE, commune, département, surface, population, coordonnées, type, technologie, opérateur et valeur.

Voir le code Python.

N.B. : la séparation de la latitude et de la longitude de la colonne « coordonnées » n’est pas traitée dans cet exemple.