Pourquoi OpenRefine est devenu la référence pour l'open data
OpenRefine (anciennement Google Refine) traite des jeux de données de plusieurs millions de lignes sans ralentissement notable. Développé en open source depuis 2010, il compte aujourd'hui plusieurs milliers de contributeurs actifs sur GitHub. Pour les portails de données ouvertes, l'outil réduit de 60 à 80 % le temps passé à corriger manuellement les incohérences.
Son fonctionnement repose sur une interface web locale : aucune donnée ne quitte la machine. Ce point compte beaucoup pour les collectivités et administrations publiques qui publient des données sensibles avant anonymisation.
Installation et premiers pas : zéro configuration complexe
Téléchargement et lancement
OpenRefine se télécharge depuis openrefine.org en moins de deux minutes. La procédure est identique sur Windows, macOS et Linux : extraire l'archive, lancer l'exécutable, le navigateur par défaut s'ouvre automatiquement sur localhost:3333.
Aucune installation de base de données n'est requise. L'outil embarque son propre moteur fondé sur Jetty, ce qui explique sa légèreté (environ 100 Mo).
Importer un fichier de données ouvertes
OpenRefine accepte nativement CSV, TSV, JSON, XML, Excel (.xls et .xlsx), ainsi que les URL pointant directement vers des API ou des fichiers distants. Sur data.gouv.fr, il suffit de copier le lien direct vers un jeu de données CSV et de le coller dans l'interface d'import.
Lors de l'import, configurez soigneusement l'encodage (UTF-8 pour les données françaises), le séparateur de colonnes et la ligne d'en-tête. Une prévisualisation s'affiche en temps réel avant de valider.
Les cinq opérations de nettoyage essentielles
Détecter et corriger les doublons
La première vérification à effectuer sur tout jeu de données open data : identifier les entrées dupliquées. Dans OpenRefine, sélectionnez la colonne identifiant (numéro SIRET, code INSEE, identifiant unique), cliquez sur le menu de la colonne, puis Facette, puis Facette de texte.
Le panneau gauche affiche alors chaque valeur distincte avec son nombre d'occurrences. Toute valeur affichant un compteur supérieur à 1 mérite investigation. Pour les jeux de données géographiques, les doublons représentent souvent 3 à 7 % des entrées brutes.
Normaliser les formats texte avec les transformations GREL
GREL (Google Refine Expression Language) est le langage intégré d'OpenRefine. Sa syntaxe est proche du JavaScript et s'apprend en moins d'une heure. Quelques expressions fréquentes pour les données françaises :
value.trim(): supprime les espaces en début et fin de chaînevalue.toUppercase(): normalise les noms de communes en majusculesvalue.replace(",", "."): convertit les décimales françaises en format internationalvalue.toDate("dd/MM/yyyy"): parse les dates au format français vers un objet date exploitable
Ces transformations s'appliquent en masse sur l'ensemble d'une colonne en un seul clic. Un jeu de 500 000 lignes se traite en quelques secondes.
Regrouper les valeurs proches avec le clustering
C'est la fonctionnalité la plus puissante d'OpenRefine. Le clustering détecte automatiquement les variantes orthographiques d'une même valeur : « Saint-Étienne », « St-Etienne », « saint étienne » se retrouvent regroupées pour être harmonisées en une seule forme canonique.
L'outil propose plusieurs algorithmes :
- Fingerprint : normalise la casse, la ponctuation et les accents, puis compare. Rapide, fiable dans 80 % des cas.
- N-gram : découpe les chaînes en fragments de N caractères pour calculer leur similarité. Utile pour les noms propres avec fautes de frappe.
- Levenshtein (distance d'édition) : mesure le nombre de caractères à modifier pour passer d'une chaîne à l'autre. Détecte des variantes que les deux autres méthodes ratent souvent.
Pour y accéder : menu colonne, Éditer les cellules, Regrouper et éditer. Cochez les regroupements pertinents, saisissez la valeur normalisée cible, validez.
Réconcilier avec des référentiels externes
OpenRefine intègre nativement une fonction de réconciliation avec Wikidata, mais aussi avec tout service exposant l'API de réconciliation standard. Pour l'open data français, cela permet de croiser vos données avec le référentiel INSEE des communes (codes officiels), la base SIRENE via l'API gouvernementale, ou le référentiel des établissements scolaires de data.education.gouv.fr.
Le processus propose des correspondances avec un score de confiance. Au-dessus de 85 %, la correspondance peut être acceptée automatiquement ; en dessous, une vérification manuelle s'impose. Cette étape transforme des données textuelles approximatives en données structurées et interopérables.
Gérer les valeurs manquantes
Les cellules vides posent un problème récurrent dans les exports de bases de données publiques. OpenRefine permet de les identifier précisément via Facette, Facette personnalisée, isBlank(value).
Selon le contexte, trois stratégies s'appliquent : supprimer la ligne si la colonne est critique (identifiant, date), remplir par une valeur par défaut documentée, ou annoter dans une colonne séparée pour signaler l'entrée incomplète. Cette dernière approche est recommandée par le standard DCAT utilisé sur data.gouv.fr.
Automatiser le nettoyage avec l'historique et les scripts JSON
Rejouer une séquence d'opérations
Chaque action effectuée dans OpenRefine est enregistrée dans un historique horodaté. Ce journal peut être exporté au format JSON via l'onglet Annuler/Refaire, puis Extraire.
Ce fichier JSON contient l'intégralité du pipeline de nettoyage : imports, transformations GREL, clusterings validés, réconciliations. Pour l'appliquer à un nouveau jeu de données du même type, il suffit de l'importer via Appliquer.
Vers un pipeline reproductible
Cette mécanique fait d'OpenRefine un outil de traitement reproductible, proche dans l'esprit d'un script Python ou R, mais sans écrire une ligne de code. Pour les portails open data qui publient des mises à jour mensuelles ou trimestrielles, le gain de temps est réel et mesurable.
Un pipeline documenté et versionné, stocké sur un dépôt Git aux côtés des données, répond par ailleurs aux exigences de traçabilité de certains cadres réglementaires, notamment la loi pour une République numérique.
Exporter des données propres dans le bon format
Une fois le nettoyage validé, OpenRefine propose plusieurs formats d'export : CSV, TSV, Excel, HTML, JSON template (personnalisable), ou directement vers OpenDocument.
Pour l'open data, le CSV encodé en UTF-8 avec séparateur virgule reste le format le plus interopérable. Vérifiez que l'export ne réintroduit pas d'encodages parasites, notamment sur les caractères accentués et les guillemets. Sous Linux, file -i monexport.csv confirme l'encodage effectif en quelques secondes.
Le JSON template mérite attention : il permet de construire des exports JSON sur mesure depuis une interface graphique, ce qui est utile pour alimenter directement une API ou un portail CKAN comme celui de data.gouv.fr.
Bonnes pratiques pour des données ouvertes de qualité
Documentez chaque transformation dans un fichier README accompagnant le jeu de données. Précisez la version d'OpenRefine utilisée, les algorithmes de clustering retenus et les décisions prises sur les valeurs ambiguës.
Conservez systématiquement la version brute des données originales avant nettoyage. Cette traçabilité permet de revenir en arrière si une transformation s'avère incorrecte, et rassure les réutilisateurs sur la fiabilité du processus.
Testez le jeu de données nettoyé contre un schéma de validation avant publication. Des outils comme Frictionless Data ou le validateur intégré à data.gouv.fr vérifient la conformité structurelle en quelques secondes. Un jeu de données qui passe cette validation affiche un score de qualité plus élevé sur les moteurs d'indexation de données ouvertes, ce qui augmente son nombre de téléchargements et de réutilisations.