Que ce soit pour des raisons techniques ou organisationnelles, il arrive que les données fournies en format tabulaire ou scrapées soient jugées "sales".
Une donnée est jugée sale quand son format gêne son utilisation, que ce soit par un humain ou par une machine.
Les problèmes rencontrés de la manière la plus courante sont :
Une "donnée propre" est une donnée qui répond à quelques critères qui assure sa lisibilité et son usage sans déperdition de sens. Par exemple :
Une base de données a des problèmes de typage quand une donnée d'un certain type est identifiée comme étant d'un autre type. Le cas le plus courant : des valeurs numériques "lues" comme des chaînes de caractère.
Conséquence directe : les opérations requérants un certain type de données ne seront pas possibles ou faussées (à commencer par les opérations arithmétiques).
⚠ : l'erreur de typage ne sera pas forcément explicite. Certaines opérations (comme =sum() ) écarteront les valeurs non conformes de manière "silencieuses", faussant ainsi les calculs.
Le problème de nomenclature qui enclenche le plus souvent des problèmes de typage est le conflit de système de notation numérique. Le système de notation français utilise en effet la "," comme séparateur des décimales et aucun ou bien un "\s" comme séparateur des milliers. Le système anglosaxon utilise lui le "." comme séparateur de décimal et rien ou bien "," comme séparateur des milliers. D'un système à l'autre, les mêmes données numériques peuvent donc être mal interprétées voire mal typées.
Conséquence directe : mêmes conséquences que le typage (plantage de fonction) ou confusion entre les nombres (chiffres à 3 décimales après la virgule lus comme des milliers, par ex.).
Dans une base de données contenant des chaînes de caractère, les différentes valeurs possibles sont parfois nommées de manière non standard : avec ou sans majuscule, des espaces ici et non là, etc. La même valeur peut donc apparaître avec différents "nommage" dans une même variable.
Conséquence directe : au moment de faire des calculs, les valeurs nommées de manière différentes seront comptées à part. Les catégories se multiplieront et certains calculs seront faussés.
La plupart de ces erreurs peuvent être corrigées par des manipulations "trouver - remplacer".
Sous Google Sheets, l'interface est accessible avec un raccourci Contrôle + F
:
OpenRefine est un outil open source (bien que développé au départ par Google). Il est spécifiquement conçu pour nettoyer les données. Autrement dit : ce n'est pas un tableur ! Vous ne pourrez y faire ni calcul, ni manipulation, ni graph ...
Toutes les fonctionnalités d'OpenRefine se concentrent sur le nettoyage avec une approche spécifique :
Comme Tabula, Open Refine est un logiciel développé en Java. Vous aurez d'abord besoin d'avoir installé son "environnement d'exécution", JRE (pour Java Runtime Environment).
Le logiciel lui-même se récupère sur le site d'OpenRefine sous forme d'une archive zippée.
Une fois dézippé, OpenRefine se lance comme Tabula via son icône. OpenRefine lance alors un terminal pour s'exécuter et ouvre un onglet dans votre navigateur par défaut à l'adresse local 127.0.0.1:3333.
Bonne pratique : histoire de ne pas la perdre, vous pouvez bookmarker cette URL et la nommer OpenRefine.
OpenRefine peut traiter quatre sources de données :
OpenRefine reconnaît automatiquement le format et propose divers options d'import. Chaque modification met à jour l'aperçu :
Une fois configuré, vous pouvez choisir un nom pour votre projet et le créer (⚠ cette étape est obligatoire)
OpenRefine permet de modifier une base de données sur la base de ses variables, c'est-à-dire de ses "colonnes". La quasi totalité des options de transformation sont disponibles dans le menu déroulant à côté du nom de chaque colonne : toute modification paramétrée s'applique à la "colonne" où vous avez ouvert le menu.
Outre des fonctions de tableur classique (sort
, filter
et transpose
) et de la mise en forme (déplacer les colonnes, etc.) OpenRefine propose surtout des outils de modification de cellules en série plus ou moins sophistiqués.
L'aperçu vous donnera une idée du résultat. Elle sera appliquée à chacune des données de la variable choisie.
La fonction "find/replace" est rendu possible par une fonction du langage interne à OpenRefine, le GREL, très proche du Javascript.
Pour modifier le contenu des cellules, vous devez sélectionner Edit cells/Transform.... L'interface vous propose alors la "value". Pour lui appliquer une modification, vous devez ajouter une fonction. Pour remplacer, il s'agira de :
value.replace("target","replace")"
Autre fonction extrêmement utile et d'usage courant : "diviser" une colonne.
Le cas de figure typique (comme on le voit ici) : des données correspondants à des variables différentes ont été "piégées" dans une même cellule, soit par une mauvaise nomenclature (comme ici), soit suite à un problème technique.
Vous pouvez séparer les données en usant d'un séparateur : il vous suffit de sélectionner Edit columns/Split into several columns... et vous n'aurez plus alors qu'à paramétrer l'opération.
Ces deux outils couvrent de très nombreux problèmes, que ce soit des problèmes de nomenclature ou de cellules à données multiples.
Mais plusieurs questions demeurent :
OpenRefine permet de "créer une colonne à partir d'une autre colonne". Pour ce faire, vous pouvez ouvrir l'interface dans allant dans Edit columns/Add column based on column....
OpenRefine permet de "créer une colonne à partir d'une autre colonne". Pour ce faire, vous pouvez ouvrir l'interface dans allant dans Edit columns/Add column based on column....
Vous devrez ensuite choisir une fonction. Ici, nous voulons savoir si la cellule "contient" une certaine expression qui va nous renseigner sur une autre variable (y a-t-il prolongation ou non ?). Nous allons donc effectuer un test : si la cellule "contient" ce terme, le résultat sera "vrai" sinon, il sera "faux". La formule utilisée est la suivante :
value.contains("target")
Plutôt que de faire des modifications à la chaîne, OpenRefine permet d'utiliser un puissant outil de description de chaîne de caractère : les expressions régulières. Ce méta langage utilisé dans à peu près tous les langages informatiques permet de décrire de manière symbolique des chaînes de caractère afin de couvrir plus d'un cas en une expression.
Ci contre, un exemple de regex permet de supprimer d'un coup tous les chiffres entre parenthèse.
Les expressions régulières sont des outils extrêmement puissants si vous souhaitez faire du datajournalisme : elles permettent d'opérer des modifications importantes dans des textes, extraire des données précises, configurer des scripts complexes, etc. Leur structure, un peu déconcertante au début, répond à une poignée de règles logiques :
Le principe des regex est de trouver des descriptions symboliques communes à plusieurs cas de figure, ce qui signifie que plusieurs regex sont possibles pour un même groupe de chaînes de caractère.
Il est possible de lister les problèmes ou erreurs le plus souvent rencontrées pour les usager·ère·s de données en langue française et l'ordre dans lequel il est préférable de les corriger :
Données numériques :
Chaînes de caractères :
Tous types de données :
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
Esc | Back to slideshow |