Atelier de découverte d'Openrefine organisé au Learning Centre SophiaTech
23/10/2017
par Mathieu Saby, BU de l'Université Nice Sophia-Antipolis
Adresse du dossier (contient la présentation aux formats Powerpoint et Google slide, l'affiche, et les données utilisées comme exercice): https://drive.google.com/drive/folders/0B1NKejaqcJG5MnJ2SXZSMFlVUEE?usp=sharing
Saint Georges, martyr, et la lègend du dragon.pptx
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vos données
1. Découvrez OpenRefine: un outil
gratuit pour nettoyer, préparer et
enrichir vos données
BU UNS
Atelier Learning Centre SophiaTech
23/10/2017
Mathieu Saby
mathieu.saby@unice.fr
1/
2. Plan
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introduction au langage GREL
2/
3. Présentation d’Openrefine
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introduction au langage GREL
3/
4. Nettoyer, préparer, enrichir des données
Avant d’analyser des données il faut souvent les nettoyer ou
les préparer, surtout si elles proviennent de sources multiples
ou si leur qualité n’est pas garantie.
La nuance est ténue mais on peut distinguer :
- Le nettoyage : données hétérogènes, incomplètes, erronées
ou bruitées, mal normalisées.
- La préparation : format, organisation ou codage des données
non adaptés à l’outil d’analyse ou aux questions à explorer.
On peut également être amené à les enrichir, par exemple en
les croisant avec d’autres données ou en récupérant des
informations sur Internet.
4/
5. Nettoyer, préparer, enrichir des données
Quels outils?
- Tableurs : Excel, Calc (Libreoffice), Google Drive
- Langages : Bash, R, Python…
- Outils spécialisés : OpenRefine, Talend Data Preparation,
Trifacta, Data Science Studio…
5/
6. Présentation du logiciel
Historique
2009 : logiciel Gridworks développé par David François Huynh
de Metaweb, comme outil pour faciliter l’alimentation de leur
base de connaissance sémantique Freebase
rachat de Metaweb par Google
2010-2012 : renommé Google Refine
libération du code par Google
2012 : renommé OpenRefine
Modèle économique
Logiciel opensource, donc gratuit
Maitenu par une (petite) communauté de développeurs
Versions
Dernière version : 2.7 (2017). À installer de préférence
6/
7. La communauté
Site officiel:
http://openrefine.org/
Documentation :
https://github.com/OpenRefine/OpenRefine/wiki
Liste d’échange :
https://groups.google.com/forum/#!forum/openrefine
StackOverflow :
https://stackoverflow.com/questions/tagged/openrefine
Nombreux tutoriels, vidéos, blogs…
7/
8. Présentation du logiciel
Ce n’est pas un tableur contrairement aux apparences:
logique de modification globale d’un fichier colonne par
colonne, même s’il est possible d’éditer une cellule séparément
pas fait pour saisir des données, réaliser des calculs ou des
graphiques
8/
9. Fonctionnalités principales
Explorer un jeu de données : tris, facettes, regroupement de
valeurs proches
Modifier l’organisation d’un fichier et le contenu des
cellules, en mode graphique ou avec des formules
Enrichir des données (web services, scraping, réconciliation)
Documenter les modifications et les enrichissements pour
pouvoir les rejouer à volonté
9/
Idéal pour des traiter des données hétérogènes
10. Positionnement d’OpenRefine
Avantages
Fonctions absentes des tableurs
traditionnels
Interface graphique (vs. scripts)
Totalement libre et gratuit (vs.
Dataiku DSS, Talend ou Trifacta)
Installation PC, Linux, Mac
Enregistrement des traitements
réalisés
Maîtrise des données (vs outils en
cloud)
Large communauté d’utilisateurs
Inconvénients
Performance limitée (100 000 lignes
maxi environ si nombreuses colonnes)
Ne traite pas de données en flux
Gourmand en mémoire
Pas de fonction collaborative
Formats d’imports limités
Pas de connexion avec des outils « big
data »
Langage spécifique
10/
11. Quelques exemples d’utilisation
Bibliothèques, archives, musées
Liste d’exemples recensés dans Bibliopedia
Corriger et modifier des données au format MARC
Créer un tableau à partir de références bibliographiques
Extraire des cotes archivistiques à partir d’inventaires en EAD
Comparer deux listes de revues
Supprimer des doublons dans une liste de revues au format KBART et
vérifier leur appartenance à un package en interrogeant un
webservice
Nettoyer une liste de cessionnaires de brevets
Récupérer l’identifiant BNF ou ABES d’une série de notices
11/
12. Quelques exemples d’utilisation
Journalistes et réutilisateurs de données ouvertes
Normalisation, clustering et transposition colonnes-lignes de
données publiques
Récupération de résultats électoraux sur une page web et
nettoyage
Histoire
Normalisation et nettoyage de données issues d’un site de musée
Récupération de données sur le web
Science de la vie
Normalisation de données sur les abeiles
Nettoyage de données sur les oiseaux
12/
13. Présentation d’Openrefine
1. Introduction au nettoyage et à la préparation de données
2. Présentation
3. Installation et paramétrage
4. Import des données
5. Espace de travail
6. Tris, filtres et facettes
7. Regrouper des valeurs proches
8. Appliquer des transformations courantes
9. Exporter les données et les traitements
10. Lignes et entrées
11. Restructurer des données
12. Introduction au langage GREL
13/
14. Aspects techniques
Installation mono-poste, sous PC, Mac et Linux
Interface accessible via un navigateur internet (adresse
http://127.0.0.1:3333/ )
Les données et le logiciel restent sur le PC (pas besoin de
connexion Internet)
Extension possible avec des plug-ins développés par la
communauté (pas tous compatibles avec la version 2.7)
Accès possible par API (permet une automatisation des
traitements)
Peut être containerisé avec Docker
14/
16. Contraintes liées à Java
OpenRefine est écrit en langage Java
Cela peut compliquer l’installation sous Mac : en cas de
problème
Vérifier que Java 8 est installé (ce n’est pas le cas par défaut)
Vérifier que la variable d’environnement $JAVA_PATH
contient bien le chemin de cette version
Pour utiliser plus de 3 Go de mémoire, il faut installer et
utiliser la version 64 bits de Java
16/
17. Paramétrage facultatif : ajouter de la
mémoire
Par défaut OpenRefine utilise 1 Go de mémoire vive au
maximum. Il peut être utile de modifier la configuration pour
allouer plus de mémoire :
Sous Windows : dans le fichier refine.ini, modifier la ligne
REFINE_MEMORY
Pour que refine.ini soit pris en compte il faudra lancer OpenRefine avec
refine.bat et non openrefine.exe
17/
18. Paramétrage facultatif : ajouter de la
mémoireSous Mac : ouvrir le fichier ‘/Applications/OpenRefine.app/Contents/info.plist’
et modifier la valeur `<string>-Xmx1024</string>` (par ex: `<string>-
Xmx2048</string>` pour doubler la mémoire maximale)
18/
19. Fermeture
19/
Puisque le logiciel tourne en tâche de fond, fermer le
navigateur ne suffit pas fermer proprement Openrefine.
Pour cela il faut…
Sous Windows : fermer la console
Sous Mac : utiliser le menu Quitter
20. Import des données
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
20/
21. Lancer OpenRefine
Ouvrir un navigateur (Chrome ou Firefox)
Windows : lancer de préférence refine.bat (prise en compte de
la configuration). Possibilité de faire un lien dans le menu
démarrer.
Mac : chercher OpenRefine dans les applications
Si OpenRefine ne s’ouvre pas, saisir http://localhost:3333 dans
le navigateur
21/
22. Les fichiers d’exercices
Télécharger sur votre bureau deux mini
jeux de données fictives
Exo 1 :
http://bit.ly/2gBR06v
Exo 2:
http://bit.ly/2zunAuQ
22/
23. Importer des données
Projet = un fichier de données + un ensemble de traitements
Un projet peut être réouvert, ou importé depuis une autre
installation d’OpenRefine
23/
25. Formats reconnus
Données tabulées (lignes/colonnes)
De préférence utiliser le format csv ou autre format brut (tsv…)
L’import de fichiers au format Excel, LibreOffice ou Google est
possible mais peut consommer beaucoup de ressources.
Données XML et JSON
Ne sont pas manipulées directement par Openrefine mais
converties en données tabulées.
La conversion peut consommer beaucoup de ressources. Elle
fonctionne bien pour des fichiers simples, mais les fichiers
complexes peuvent poser problème.
25/
29. Importer des données
Principaux paramètres d’import
29/
Encodage des
caractères
(en général UTF-8
ou ISO 8859-1)
Séparateur de colonnes
(en général , mais parfois ; si
le fichier a été créé avec une
version française d’Excel
Modifier si entêtes multilignes
Détection des nombres et des
dates (dans le doute, à éviter)
En général à décocher
31. Importer des données
Prudence avec la détection automatique des nombres et des
dates ! Dans le doute, désactiver l’option.
(remarque également valable pour Excel ou LibreOffice)
Une série de chiffres n’est pas forcément un nombre.
Ex: Numéros de téléphone : le 0 initial doit être préservé!
Formats de nombres et formats monétaires différents
Ex : 1,14 en France = 1.14 aux USA
Ex : 10 € mais $ 10
Formats de dates différents selon les pays.
Ex : 02-03-1979 = 2 mars 1979 en Europe
3 février 1979 aux USA
31/
32. Importer des données
Une fois les paramètres d’imports choisis, lancer l’import
32/
[Optionnel]
Changer le nom du projet
Créer un projet
33. Importer des données
Il est également possible d’importer plusieurs fichiers dans le
même projet.
Ils doivent être structurés de manière identique (nombres et
noms des colonnes).
33/
34. Importer des données
Il est également possible d’importer plusieurs fichiers dans le
même projet.
La 1re colonne (File) du projet indiquera le nom du fichier
d’origine pour chaque ligne.
34/
35. Espace de travail
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
35/
36. L’espace de travail
36/
Lien vers le
projet
ExportNouveau
projetContenu du fichier
Facettes
et filtres
Historique
37. L’espace de travail
37/
Colonnes de données
Nb lignes
affichées
Voir les lignes
précédentes ou
suivantesNb lignes du
fichier
Étoiles et marques: pour
isoler certaines lignes
Numéro de ligne
(automatique)
38. Différences avec un tableur
On ne voit pas toutes les lignes. Ce n’est pas le but de l’outil
On applique les formules à des colonnes entières, pas à des
cellules
Les données sont séparées des traitements : les formules ne
sont pas contenues dans les cellules
Une seule feuille
Pas de graphiques
38/
39. Comment explorer et manipuler les données
Modification d’une cellule : bouton edit visible au survol
Ponctuelle
Pour toutes cellules ayant la même valeur (dans la même
colonne ; ne s’applique pas aux cellules vides)
Actions globales : menu visible en cliquant sur le bouton en
haut de chaque colonne
Affichage sélectif (tris, filtres, facettes…)
Modifications (remplacements, nouvelles colonnes…)
39/
40. Les menus contextuels
Les plus fonctions les utilisées : facettes, édition de cellules et
de colonnes, tri
Fonction propre à la 1re colonne : suppression de lignes
40/
Colonne ordinaire Colonne « Toutes » (1re position)
42. Tris, filtres et facettes
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
42/
43. Trier les données
Activité : trier les données en fonction des valeurs de la
colonne code_personne (ordre alphabétique, sans tenir compte
des majuscules)
43/
44. Trier les données
Activité : trier les données en fonction des valeurs de la
colonne code_personne
44/
Plusieurs options,
mais le paramétrage
de base correspont à
notre besoin (a-z,
insensible à la casse)
45. Trier les données
Activité : trier les données en fonction des valeurs de la
colonne code_personne
45/
Pour l’ordre d’origine est préservé et le tri ne concerne que l’affichage
47. Filtrer les données
Activité : filtrer le fichier pour afficher les lignes dont la
colonne code_personne contient le mot « P005 » ET la colonne
animal_prefere le mot « chien »
47/
48. Filtrer les données
Activité : filtrer le fichier pour afficher les lignes dont la
colonne code_personne contient le mot « P005 » ET la colonne
animal_prefere le mot « chien »
48/
49. Filtrer les données
Toutes les opérations (export, nouveaux filtres, facettes,
modifications groupées) s’opèreront uniquement sur les
données filtrées.
Ex: modification groupée la colonne animal_prefere :
uniquement 1 lignes modifiée
49/
50. Filtrer les données
Deux options pour les filtres (peuvent s’additionner)
50/
Prendre ou compte ou non la casse (« nice » = « NICE » ?)
Traiter ou non l’expression comme une expression
rationnelle (ou expression régulière):
Ex:
Si l’option est activée,
[ab][56] sera interprété comme « a5 ou a6 ou b5 ou b6 »
P.A[0-9]* sera interprété comme « P suivi d’un caractère,
suivi de A, suivi d’une suite de chiffres »
Ni(ce|ssa) sera interprété comme « Nice ou Nissa »
Pour éviter un
bug, saisir
l’expression
rationnelle avant
de cocher la case
51. Filtrer les données
Pour annuler un filtre, cliquez sur la croix dans le coin supérieur
gauche du filtre
Nous allons annuler tous les filtres
Pour cela, cliquez sur Tout supprimer au dessus des filtres
51/
52. Utiliser les facettes
Les facettes permettent d’avoir un aperçu synthétique sur le
contenu d’une colonne.
Utile pour repérer des anomalies, isoler des valeurs à modifier,
modifier globalement un codage…
52/
Ex : modifier et corriger un codage
Vivant
Vivant
Vivant
Mort
Dead
Vivant
…
1
1
1
0
0
1
…
1 (35)
0 (501)
Vivant (35)
Mort (500)
Dead (1)
53. Utiliser les facettes
Par défaut, seules les 2000 premières choix sont affichées.
S’il y en a plus, Openrefine propose d’augmenter cette limite,
ou de n’afficher que les choix les plus fréquents (« facette par
nombre de choix »). Le choix reste mémorisé lors des
utilisations ultérieures.
53/
54. Utiliser les facettes
Activité : afficher les facettes textuelles correspondant au
contenu de la colonne ville.
Quelles anomalies repère-t-on?
54/
55. Utiliser les facettes
Activité : afficher les facettes textuelles correspondant au
contenu de la colonne ville.
55/
(blank) : valeur vide
56. Utiliser les facettes
Les options d’une facette
56/
Récupérer la liste Tri alphabétique (défaut) ou par nombre d’occurrences
valeurs vides (blank) toujours à la fin
Modifier la facette (complexe)
Regrouper les valeurs semblables
57. Utiliser les facettes
Activité : dans la facette ville, afficher les valeurs par « nombre
de choix », et ne conserver que celles présentes 2 fois.
57/
58. Utiliser les facettes
Activité : dans la facette ville, afficher les valeurs par « nombre
de choix », et ne conserver que celles présentes 2 fois.
58/
1 seule valeur, présente 2 fois
histogramme
59. Utiliser les facettes
Activité : dans la facette ville, remplacer la valeur « Havre (Le) »
par LE HAVRE
Quel effet sur les données?
59/
65. Utiliser les facettes
Activité : modifier la facette pour sélectionner les lignes dont
la ville est Caen, en plus de CAEN
Survoler
Cliquer
66. Utiliser les facettes
Activité : utiliser la facette ville pour afficher les lignes dont la
ville n’est ni Caen ni CAEN
66/
67. Utiliser les facettes
Activité : utiliser la facette ville pour afficher les lignes dont la
ville n’est ni Caen ni CAEN
67/
Cliquer
68. Utiliser les facettes
Activité : utiliser la facette ville pour afficher les lignes dont la
ville n’est PAS Lyon
facette en noir barré : facette inversée
69. Utiliser les facettes: pour aller plus loin
Facettes numériques, chronologiques, en nuage de point :
suppose d’avoir des données reconnues par OpenRefine
comme des dates ou des nombres (pas le cas dans notre
exemple)
69/
70. Utiliser les facettes: pour aller plus loin
Facettes personnalisées : suppose une utilisation du langage
GREL (voir plus loin)
70/
71. Utiliser les facettes: pour aller plus loin
Facettes courantes : plusieurs options souvent utiles: par mot,
par doublons, par longueur de texte, par blanc (valeur
vide ou non)
71/
72. Utiliser les facettes: pour aller plus loin
Activité : A partir de la colonne animal_prefere, appliquer une
facette textuelle ordinaire, puis une facette « par mots ».
Quelle différence?
72/
Facette textuelle Facette par mot
73. Regrouper des valeurs proches
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
73/
74. Regrouper des valeurs proches
Activité : Créer des facettes textuelles pour la colonne ville,
puis grouper les résultats pour repérer des variantes
d’orthographe ou de présentation.
75. Regrouper des valeurs proches
Activité : Créer des facettes textuelles pour la colonne ville,
puis grouper les résultats pour repérer des variantes
d’orthographe ou de typographie.
75/
76. Regrouper des valeurs proches
Activité : Créer des facettes textuelles pour la colonne ville,
puis grouper les résultats pour repérer des variantes
d’orthographe ou de typographie.
76/
Cliquer sur une
forme pour changer
la forme retenue
Sélectionner les
groupes à fusionner
Ou bien…
Tout sélectionner
77. Regrouper des valeurs proches
Plusieurs algorithmes
77/
Méthodes rapides mais basiques
Regroupe les expressions dont
les « clés » sont identiques
Regroupe les expressions ne différant que par la casse,
l’accentuation, la ponctuation, le nombre d’espaces, l’ordre
ou la répétition des mots
- Ex : école = éc-ole = éCOLE = ecole
- Ex : Liberté, égalité = EGALITE: LIBERTE : EGALITE
Regroupe les expressions utilisant les mêmes caractères
(paramètre 1) ou bigrammes (paramètre 2).
- Ex (param 1) : paris = sirap = sirapa = pparaisiapa
- Ex (param 2) : paris-plage = paris plage
Regroupe les expressions ayant la même prononciation (en
anglais)
Regroupe les expressions ayant la même prononciation (en
allemand)
78. Regrouper des valeurs proches
Plusieurs algorithmes
78/
Plus élaborées mais plus lentes
Regroupe les expressions en fonction du nombre d’étapes
élémentaires (suppression, ajout, modification de caractère)
nécessaires pour passer de l’une à l’autre.
Les variantes de caractères (accentués, majuscules,
minuscules) sont traités comme des caractères différents.
Augmenter le paramètre « rayon » (distance) diminue la
sensibilité de l’algorithme :
- Ex : paris = « distance de 1 » de Paris
- Ex : paris = « distance de 2 » de Pars
- Ex : paris = « distance de 5 » de dépaysé
Regroupe les expressions par complexité aglorithmique
(utilisé en génétique)
Baisser le paramètre « taille de
bloc » pour améliorer la détection
(attention risque de
ralentissement !
79. Regrouper des valeurs proches
Attention! Dans certains cas ces algorithmes peuvent faire des
rapprochements non pertinents.
Résultat : on passe de 9 villes à 4 villes
79/
80. Appliquer des transformations courantes
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
80/
81. Appliquer des transformations courantes
Rappel:
Si un filtre ou une facette sont actifs, les transformations ne
s’appliquent qu’aux lignes sélectionnées.
81/81/
82. Appliquer des transformations courantes
Modifier la casse
Activité: Transformer les valeurs de la colonne ville pour
obtenir passer tous les noms en majuscules
82/82/
83. Appliquer des transformations courantes
Modifier la casse
Editer les cellules > Transformations courantes > En majuscules
83/83/
84. Appliquer des transformations courantes
Supprimer les espaces superflus
Activité: Ajouter manuellement plusieurs espaces au début et
à l’intérieur d’une cellule, puis supprimer ces espaces en
utilisant le menu.
84/84/
85. Appliquer des transformations courantes
Supprimer les espaces superflus
Activité: Ajouter manuellement plusieurs espaces au début et
à l’intérieur d’une cellule, puis supprimer ces espaces en
utilisant le menu.
1/ ajout des espaces
(les espaces ne seront pas visibles dans l’affichage général des
données, mais ils ont bien été ajoutés)
85/85/
86. Appliquer des transformations courantes
Supprimer les espaces superflus
2/ suppression
Deux opérations
Editer les cellules > Transformations courantes > Supprimer les
espaces de début et de fin
Editer les cellules > Transformations courantes > Rassembler les
espaces consécutifs
86/86/
87. Appliquer des transformations courantes
Transformer du texte en nombres ou en dates
Malgré les apparence, ces nombres et ces dates sont
considérés comme de simple suite de caractères.
Mais l’hétérogénéité des données peut rendre leur
reconnaissance délicate.
87/87/
JJ-MM-2017
JJ/MM/2017
JJ:MM:2017
JJ/ MM (2017)
Unité en k€
Unité en €
Séparateur décimal ,
Séparateur décimal .
88. Appliquer des transformations courantes
Transformer du texte en nombres ou en dates
Editer les cellules > Transformations courantes > En nombre / En
date
88/88/
89. Appliquer des transformations courantes
Transformer du texte en nombres ou en dates
Cette approche ne suffit pas à résoudre les cas complexes
(structure atypique, variation d’unités, séparateur décimal , )
besoin d’utiliser le langage GREL
89/89/
Les valeurs de
type non
textuel (dates,
nombre,
booléens) sont
en vert, et
alignés à
droite
90. Appliquer des transformations courantes
Effacer les cellules d’une colonne
Editer les cellules > Transformations courantes > Vider les cellules
90/90/
91. Appliquer des transformations courantes
Supprimer les valeurs répétées sur plusieurs lignes
Editer les cellules > Vider
91/91/
92. Appliquer des transformations courantes
Supprimer les valeurs répétées sur plusieurs lignes
Remarque : le mot « vider » a ici une signification différente
que dans l’opération « vider les cellules », qui supprime tout le
contenu des cellules.
92/92/
93. Appliquer des transformations courantes
Opération inverse : recopier une valeur dans une série de
cellules vides situées en dessous
Editer les cellules > Remplir
93/93/
94. Appliquer des transformations courantes
La suppression des valeurs répétées peut être nécessaire
pour d’autres opérations :
- Supprimer des doublons
- Créer des « entrées » regroupant plusieurs lignes
94/94/
95. Supprimer des doublons
Activité : Simplifier le fichier en ne gardant qu’une seule ligne
par personne (dans notre cas cela entraînera une perte
d’information, mais c’est pour la démonstratio…)
95/
96. Supprimer des doublons
Activité : Simplifier le fichier en ne gardant qu’une seule ligne
par personne
- Tri du fichier en fonction de la colonne code_personne et
enregistrement du tri
- Suppression des valeurs répétées pour la colonne
code_personne (Éditer les cellules -> Vider)
- Facette par blanc sur la colonne code_personne (Facette
courante -> Facette par blanc)
- Sélection de la facette « true » dans le panneau de gauche
- Suppression des lignes concernées (colonne Toutes > éditer
les lignes > supprimer les lignes)
96/
97. Exporter les données et les traitements
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
97/
99. Annuler ou rejouer un traitement
Historique permettant d’annuler (« défaire ») ou rejouer
(« refaire) les traitement sans limites
99/99/
100. Annuler ou rejouer un traitement
Limite :
- n’enregistre pas les modifications manuelles des cellules
- n’enregistre pas les facettes ni les tris
- en cas de retour en arrière jusqu’à une opération N et d’ajout
de nouvelles opérations, perte de l’historique des opérations
qui suivaient l’opération N
100/100/
101. Exporter les traitements
Les traitements peuvent être exportés et réappliqués au jeu de
données ou à un autre jeu présentant la même structure.
Extraire l’historique pour enregistrer les traitements :
101/101/
Copier dans le presse-papier
(Ctrl+C / Cmd+C)
Créer un fichier texte sur l’ordinateur
Ouvrir avec un éditeur de texte
Coller le contenu du presse papier
(Ctrl+V / Cmd+V)
Enregistrer le fichier
102. Réappliquer les traitements
À partir d’un jeu de données fraîchement téléchargé
102/102/
Ouvrir le fichier texte dans lequel les
traitements ont été enregistrés
Sélectionner tout le contenu et copier
dans le presse-papier
(Ctrl+C / Cmd+C)
Coller dans OpenRefine
(Ctrl+V/ Cmd+V)
Valider
103. Réappliquer les traitements
À partir d’un jeu de données fraîchement téléchargé
103/103/
Ouvrir le fichier texte dans lequel les
traitements ont été enregistrés
Sélectionner tout le contenu et copier
dans le presse-papier
(Ctrl+C / Cmd+C)
Coller dans OpenRefine
(Ctrl+V/ Cmd+V)
Valider
104. Lignes et entrées
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
104/
105. Lignes et entrées
Des lignes peuvent être regroupées en « entrées » (records) si
elles se rapportent à un même objet.
Travailler avec des entrées permet des traitements avancés.
Pour créer des entrées :
1/ trier les données en fonction de la colonne servant de clé de regroupement
2/ déplacer cette colonne en 1re position du tableau
3/ supprimer les valeurs répétées dans cette colonne
105/105/
106. Restructurer des données
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
106/
107. Restructurer les données
Cas fréquent : passer de plusieurs valeurs / cellule à une seule
Axe horizontal (créer de nouvelles colonnes)
Axe vertical (créer de nouvelles lignes)
107/107/
Nom Ville
Dupont Nice|Tours
Durand Bourges
Martin Nice|Paris
Nom Ville 1 Ville 2
Dupont Nice Tours
Durand Bourges
Martin Nice Paris
Nom Ville
Dupont Nice|Tours
Durand Bourges
Martin Nice|Paris
Nom Ville
Dupont Nice
Dupont Tours
Durand Bourges
Martin Nice
Martin ParisRisque : croire qu’il y a 2 Martin…
108. Nouveau jeu de données
Créer un nouveau projet à partir du fichier exo2.csv
108/108/
109. Restructurer les données
Éclater sur plusieurs lignes les cellules comprenant des
valeurs multiples
Passer de ceci
À celà
109/109/
110. Restructurer les données
Éclater sur plusieurs lignes les cellules comprenant des valeurs
multiples
1. Editer les cellules > Diviser les cellules multivaluées
2. Choisir le séparateur (ici « ; » ). Le séparateur peut être un
mot
110/110/
111. Restructurer les données
Remplir automatiquement les nouvelles cellules créées
(procédure vu plus haut)
1. Colonne espece: Editer les cellules > Remplir
2. Colonne nombre: Editer les cellules > Remplir
111/111/
112. Restructurer les données
Etape de nettoyage: Harmoniser les villes et les espèces en
utilisant uniquement les facettes et le clustering
112/112/
114. Restructurer les données
Regrouper sur une seule ligne des valeurs multiples
1. Les données doivent être organisées en « entrées » (vu plus
haut : tri sur 1re colonne puis Vider les cellules répétées)
114/114/
La ville sera utilisée pour définir les entrées
115. Restructurer les données
Regrouper sur une seule ligne des valeurs multiples
1. Editer les cellules > Joindre les cellules multivaluées
2. Choisir un séparateur
115/115/
Répéter pour les 2 colonnes
7 entrées 7 lignes
120. Restructurer les données
Les opérations de « transposition »
Transposer > Transposer les cellules au travers des colonnes en
lignes
Options :
- résultat dans une seule colonne (« espece_nombre »)
- préfixer le nom de la colonne d’origine à chaque cellule
122. Restructurer les données
Les opérations de « transposition »
Colonne espece_nombre > Transposer > Transposer les lignes en
colonnes
Options :
- Transposer toutes les 2e lignes dans une nouvelle colonne
124. Restructurer les données
Eclater une colonne contenant plusieurs valeurs en plusieurs
colonnes
Colonne espece_nombre 1 > Diviser en plusieurs colonnes
Options :
- Séparateur « : »
125/
125. Restructurer les données
Eclater une colonne contenant plusieurs valeurs en plusieurs
colonnes
Même opération pour la colonne espece_nombre 2
126/
126. Restructurer les données
Eclater une colonne contenant plusieurs valeurs en plusieurs
colonnes
Supprimer les colonnes inutiles et renommer les colonnes restantes
126/
129. Restructurer des données
1. Présentation
2. Installation et paramétrage
3. Import des données
4. Espace de travail
5. Tris, filtres et facettes
6. Regrouper des valeurs proches
7. Appliquer des transformations courantes
8. Exporter les données et les traitements
9. Lignes et entrées
10. Restructurer des données
11. Introdution au langage GREL
129/
130. Introduction au langage GREL
Pendant quelques secondes, une information s’affiche après
chaque transformation
Ex:
Elle indique la formule utilisée par OpenRefine.
Ici :
value.trim() supprime les espaces initiaux et finaux
value.replace(/s+/,’’) simplifie les espaces répétés
Ces formules se retrouvent aussi dans l’historique des
traitements.
130/130/
131. Introduction au langage GREL
Les facettes et transformations personnalisées reposent sur
des formules de ce type, saisies manuellement.
Elles utilisent le langage GREL (Google Refine Expression
Language, ou General Refine Expression Language).
Documentation :
https://github.com/OpenRefine/OpenRefine/wiki/General-
Refine-Expression-Language
Il est aussi possible d’utiliser deux autres langages (Python et
Clojure) pour des cas spécifiques.
131/131/
132. Introduction au langage GREL
Dans la colonne espece, ouvrir le menu Editer les cellules >
Transformer
132/132/
Formule
(sans = initial)
Résultat de
la formule
134. Introduction au langage GREL
Syntaxe générale
Pas de = avant les fonctions
value désigne le contenu d’une cellule
+ permet de concaténer deux valeurs. Ex: "a"+"b" -> "ab"
Nom des fonctions sensible aux majuscules
Les fonctions sont suivies de (parametre1, parametre2…),
ou de () en absence de paramètre
Une fonction peut s’écrire de deux manières :
value.nom_de_la_fonction(parametres). Ex: value.trim ()
ou
nom_de_la_fonction(value, parametres). Ex: trim (value)
134/134/
135. Introduction au langage GREL
Intérêt:
Certaines fonctions sont absentes d’Excel ou difficile à
reproduire, notamment :
- Utilisation d’expressions régulières
- Récupération de données sur Internet
- Manipulation de données au format JSON, XML, HTML
135/135/
136. Introduction au langage GREL
Deux menus utiles: aide et historique
136/136/
Aide précieuse!
Utiliser Crtrl+F pour rechercher une commande
137. Introduction au langage GREL
Deux menus utiles: aide et historique
137/137/
Historique
Permet de réutiliser une formule
138. Introduction au langage GREL
Exemple de fonctions utiles
length () longueur de la chaîne de caractère
trim () supprime les espaces initiaux et finaux
toUppercase() passe en majuscules (y compris lettres accentuées)
Ex: "école".toUppercase() -> « ÉCOLE »
toLowercase () passe en minuscules
indexOf (x) renvoie la position de x
(Attention, la numérotation commence à 0)
Ex: "bleu".indexOf (‘b‘) -> 0
substring (pos1,pos2) extrait les caractères entre pos1 et pos2
(Attention, la numérotation commence à 0
et pos2 est exclu)
Ex: "bleu".substring(1,3) -> « le » (lettres de position 1 et 2)
138/138/
139. Introduction au langage GREL
Exemple de fonctions utiles
replace (x, y) remplace la chaîne de caractère x par y.
Ex : "zorro".replace (‘zo’,’x’) -> "xrro"
replaceChars (x,y) replace les caractères contenus dans x par z
Ex : "zorro".replaceChars (‘zo’,’x’) -> "xrx"
split (x) décompose la valeur en tableau, en utilisant x comme
séparateur. Les éléments du tableau sont accessibles par [n] (numérotation à
partir de 0)
Ex : "01/12/2015".split(‘/’)[0] -> « 01 » (1er élément du tableau)
Ex : "01/12/2015".split(‘/’)[1] -> « 12 » (2er élément du tableau)
Ex : "01/12/2015".split(‘/’)[2] -> « 2015 » (3er élément du tableau)
join (t, s) inverse de split : agrège les éléments d’un tableau t en
utilisant comme séparateur la chaîne de caractères s.
139/139/
140. Introduction au langage GREL
Exemple de fonctions utiles
cross (cell c, Nom_projet2, Nom_colonne) permet de croiser deux projets :
retourne un tableau de 0, 1 ou + lignes du projet Nom_projet2 pour lesquelles
les cellules de la colonne Nom_colonne ont le même contenu que la cellule c.
parseJson (s) : analyse la chaîne s et renvoie un objet manipulable
Ex : value.parseJson()["element-niv1"]["element-niv2"]
parseHtml (s) : analyse la chaîne s et renvoie un objet manipulable avec
d’autres fonctions
Ex:
value.parseHtml().select("div#content")[0].select("tr").toString()
140/140/
141. Introduction au langage GREL
Récupération et exploiter des données sur Internet :
- API JSON
- API XML
- Page HTML
Remarque: il est nécessaire d’utiliser Python dans Openrefine
au lieu de GREL :
- pour récupérer des données en utilisant le protocole POST
- pour exploiter certaines données complexes après leur
récupération
141/141/
142. Introduction au langage GREL
Activité : récupérer la population des villes à partir de l’API
https://geo.api.gouv.fr/
La syntaxe de l’API est
https://geo.api.gouv.fr/communes?nom=NOMDECOMMUNE
La réponse est en JSON : tableau de X villes dont le nom
correspond à la requête, avec plusieurs propriétés pour
chacune, dont population
142/142/
143. Introduction au langage GREL
Activité : récupérer la population des villes à partir de l’API
https://geo.api.gouv.fr/
1re étape : Créer une colonne liste-urls contenant les URL
Colonne villes > Éditer colonne > Ajouter une colonne en fonction de
cette colonne
Formule :
"Racine_URL" + value
Ou encore mieux (évite les erreurs en cas de caractère parasite):
"Racine_URL" + value.escape(‘url’)
143/143/
144. Introduction au langage GREL
2e étape : Récupérer les données dans une colonne data
Colonne liste-urls > Éditer colonne > Ajouter une colonne en
moissonnant les URL
144/144/
Bug dans la
version 2.7:
décocher l’option
« Mettre les
réponses en cache »
« conserver »
pour repérer
d’éventuelles
erreurs de
connexion
146. Introduction au langage GREL
3e étape : Exploitation des données : créer une nouvelle
colonne à partir de data
Colonne data > Éditer colonne > Ajouter une colonne à partir de
cette colonne
Formule : value.parseJson()[0]["population"]
146/146/
148. Pour aller plus loin
Documentation officielle
Site
Documentation (wiki)
Quelques tutoriels et retours d’expérience
M. Bourdic, OpenRefine, "Excel aux hormones" pour nettoyage de données, 2017
A. Courtin, “Reconcilier” une liste de nom d’architectes avec Wikidata en utilisant
OpenRefine, 2017
Karen H, Using OpenRefine to Reconcile Name Entities, 2017
Leçons du programme Library Carpentry. Open Refine for Librarians, 2016
Leçons du programme Data Carpentry, 2015 ; variante Open Refine for Ecology
T. Padilla, Getting Started with OpenRefine, 2015
S. van Hooland , R. Verborgh et M. De Wilde, Cleaning Data with OpenRefine,
2013
T. Hirst, Merging Datasets with Common Columns in Google Refine, 2011
A. Falcone, Google Refine CheatSheets, 2011
146/
Notes de l'éditeur
Initiation à OpenRefine
David Huyn : http://davidhuynh.net/
Ancien étudiant du MIT. Chez Google depuis 2010
A développé Openrefine mais aussi la suite d’outil SIMILE
Talend, Trifacta : versions gratuites mais limitées à des petits jeux de données
Dataiku : payant mais version gratuite disponible pour étudiants ; ne fonctionne pas directement sous Windows
Si $JAVA_PATH ne contient pas le chemin de Java, cela peut entrainer des difficultés pour récupérer des données sur des sites utilisant le protocole sécurisé https
Possibilité de faire un lien dans le menu démarrer.
Si $JAVA_PATH ne contient pas le chemin de Java, cela peut entrainer des difficultés pour récupérer des données sur des sites utilisant le protocole sécurisé https
Possibilité de faire un lien dans le menu démarrer.
Possibilité de faire un lien dans le menu démarrer.
Possibilité de faire un lien dans le menu démarrer.