Le projet du SCD de Nice: une approche globale des données de la recherche
Nettoyer et préparer des données avec OpenRefine
1. Nettoyer et préparer des données
avec OpenRefine
BU UNS
Formation URFIST PACAC
25/4/2017
M. Saby
1/
2. Plan
1. Introduction au nettoyage et à la préparation de données
2. Présentation d’OpenRefine
3. Importer des données
4. Tris, filtres et facettes
5. Regrouper des valeurs proches
6. Transformer le contenu des colonnes
7. Éclater les cellules comprenant des valeurs multiples
8. Exporter les données après transformation
9. Exporter et réappliquer les traitements
10. Personnaliser ses opérations avec des formules (non présenté)
2/
4. Nettoyer et préparer 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 non officielles.
Nettoyage : données hétérogènes, incomplètes, erronées ou
bruitées, mal normalisées.
Préparation : format, organisation ou codage des données non
adaptés à l’outil d’analyse ou aux questions à explorer.
4/
5. Nettoyer et préparer des données
Quelques exemples
5/
Modifier l’organisation des données
Nom Code
postal
Ville
Dupont 06100 Nice
Martin 18000 Bourges
Durand 06000 Nice
Nom Dupont Martin Durand
Code
postal
06100 18000 06000
Ville Nice Bourges Nice
6. Nettoyer et préparer des données
Quelques exemples
Avant de dédoublonner, s’assurer que 2 lignes ne désignent pas des réalités
différentes (homonymie)
6/
Traitement des doublons
Code
postal
Ville
06100 Nice
18000 Bourges
06000 Nice
Code
postal
Ville
06100 Nice
18000 Bourges
06000 Nice
06100 Nice
Code
postal
Ville Occurrence
06100 Nice 2
18000 Bourges 1
06000 Nice 1
ou
7. Nettoyer et préparer des données
Quelques exemples
7/
Harmoniser des valeurs textuelles
Nice
France, Nice
Nice
NICE
[Nice, Fr]
Nice (France)
Corriger des valeurs textuelles
Nietzsche
Nietsche
Nieztsche
Nietzshe
Nietzsche
F. Nietzsche
Friedrich Nietzche
Marcel Proust
Proust, Marcel
Nietzsche, Friedrich
Proust, Marcel
8. Nettoyer et préparer des données
Quelques exemples
8/
Harmoniser des dates
15/5/2017
5/15/2017
2017-05-15
15 mai 2017
May 15th 2017
2017-05-15
Convertir des unités de mesure
1 km
1000 m
0,621 mi
0°C
32°F
273,15°K
1 km
0°C
Le changement d’unités peut introduire
des approximations dans les mesures
Format américain : MM-JJ-AAAA
9. Nettoyer et préparer des données
Quelques exemples
9/
Coder et simplifier
Alive
Vivant
Vivant
Mort
Dead
1
1
1
0
0
Le codage doit être explicite et documenté !
10. Nettoyer et préparer des données
Quelques exemples
10/
Extraire des valeurs
Né en 1960
Born on 1978
1958
Naissance: 1985
1960
1978
1958
1985
Extraire des valeurs multiples
Né en 1960, mort en 2015
Born in 1978, died in 2000
1958, alive
1985-2017
1960 2015
1978 2000
1958
1985 2017
11. Nettoyer et préparer des données
Quelques exemples
11/
Repérer les valeurs manquantes
Nom Code postal Ville
Dupont 06100 Nice
Martin 18000 Bourges
David
Durand 06000 Nice
Actions possibles:
- supprimer la ligne
- remplacer par « N/A »
- chercher à corriger
Une valeur manquante n’est pas forcément une anomalie!
Tout dépend du contexte,
12. Nettoyer et préparer des données
Quelques exemples
12/
Repérer des incohérences
Nom Code postal Ville
Dupont 06100 Nice
Martin 18000 Bourges
David 06000 Montpellier
Durand 06000 Nice
Actions possibles:
- supprimer la ligne
- remplacer par « N/A »
- chercher à corriger
Il faut connaître le contexte de production des données pour savoir
quelle est la valeur incohérente (06000 ou Montpellier?)
13. Nettoyer et préparer des données
Quelques exemples
13/
Repérer les valeurs statistiquement aberrantes
Nom Age Profession
Dupont 80 Lycéen
Martin 18 Retraité
David 18 Lycéen
Durand 65 Retraité
Actions possibles:
- supprimer la ligne
- remplacer par « N/A »
- chercher à corriger
Demande une analyse statistique et une connaissance de l’objet étudié,
14. Nettoyer et préparer des données
Quelques exemples
14/
Croiser des données
Nom Code postal
Dupont 06100
Martin 18000
David
Durand 06000
Code postal Ville
06100 Nice
06000 Nice
18000 Bourges
34000 Montpellier
Nom Code postal Ville
Dupont 06100 Nice
Martin 18000 Bourges
David
Durand 06000 Nice
Penser aux cas où les valeurs du
tableau A ne peuvent pas être croisées
avec celles du tableau B (3e ligne)
15. Nettoyer et préparer des données
Quelques exemples
15/
Enrichir les données avec une source externe
Risque d’erreur
Nom
Proust,
Marcel
Nietzsche,
Friedrich
Nom Identifiant Naissance Mort
Proust,
Marcel
Marcel_Proust
1871 1922
Nietzsche,
Friedrich
Friedrich_Nietzsche
1844 1900
17. Quels outils?
Un outil gratuit à exploiter au maximum!
17/
Crédit: https://commons.wikimedia.org/wiki/File:PSM_V46_D167_Outer_surface_of_the_human_brain.jpg
19. Positionnement d’OpenRefine
Avantages
Fonctions absentes des tableurs
traditionnels
Interface graphique (vs. scripts)
Totalement libre et gratuit (vs.
Dataiku, 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 (100000 lignes
maxi environ)
Pas de fonction collaborative
Formats d’imports limités
Pas de connexion avec des outils « big
data »
Langage spécifique
19/
20. Présentation du logiciel
Historique
2010 : Gridworks développé par Metaweb, comme outil lié à
leur base de connaissance Freebase
2010-2012 : renommé Google Refine (rachat de Metaweb)
2012 : renommé OpenRefine (libération du code par Google)
Modèle économique
Logiciel opensource, donc gratuit
Petite communauté de développeurs
Versions
Dernière version bêta : 2.7rc2 (2017). À installer de préférence
à la 2.5
Dernière version officielle : 2.5 (2011, développée par Google)
20/
21. Présentation du logiciel
Aspects techniques
Écrit en langage Java (peut compliquer l’installation sous Mac)
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)
21/
22. Présentation du logiciel
Apparence d’un tableur mais ça n’en est pas un
Fonctionnalités principales
Explorer un jeu de données : tris, facettes, regroupement de
valeurs proches
Modifier des données en mode graphique ou avec des
formules
Enrichir des données
Documenter tous les traitements
Extensions possible avec des plug-ins, mais ne sont pas tous
compatibles avec la dernière version
22/
24. 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
24/
25. Importer des données
Jeu de données utilisées pour la formation: liste d’articles
scientifiques, tirée du DOAJ, et légèrement modifiée pour les
besoins de l’exercice.
Télécharger le fichier donnees-exo.csv
à l’adresse xxxxxxx et enregistrez le
sur le Bureau
25/
26. 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
26/
30. Importer des données
Jouons avec les principaux paramètres… Quelles différences
dans l’aperçu?
30/
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
Entête du fichier
Détection des nombres et des
dates (dans le doute, à éviter)
Mettre à jour
l’aperçu
32. Importer des données
Pourquoi être prudent avec la détection automatique des
nombres et des dates (valable avec OpenRefine comme tout
autre logiciel) ?
32/
33. Importer des données
Pourquoi être prudent avec la détection automatique des
nombres et des dates (valable avec OpenRefine comme tout
autre logiciel) ?
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
33/
34. Importer des données
Une fois les paramètres d’imports choisis, lancer l’import
34/
[Optionnel]
Changer le nom du projet
Créer un projet
36. L’espace de travail
36/
Lien vers le projet
ExportNouveau
projetContenu du fichierFacettes
et filtres
Historique
37. L’espace de travail
37/
Colonnes de donnéesNb 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
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)
43. Trier les données
Activité : trier les données en fonction des valeurs de la
colonne Authors (de A à Z, sans tenir compte des majuscules)
43/
44. Trier les données
Activité : trier les données en fonction des valeurs de la
colonne Authors (de A à Z, sans tenir compte des majuscules)
44/
45. Trier les données
Activité : trier les données en fonction des valeurs de la
colonne Authors (de A à Z, sans tenir compte des majuscules)
45/
Pour l’instant l’ordre original est préservé (le tri concerne juste l’affichage)
48. Filtrer les données
Activité : filtrer le fichier pour afficher les lignes dont la
colonne Authors contient le mot « Peter » ET la colonne
Title le mot « crystal »
Combien de lignes correspondent à ces deux critères?
48/
49. Filtrer les données
Activité : filtrer le fichier pour afficher les lignes dont la
colonne Authors contient le mot « Peter » ET la colonne
Title le mot « crystal »
Résultat: 17 lignes
49/
50. 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 Language : uniquement 17
lignes modifiées
50/
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
Une « facette » donne un aperçu synthétique du contenu d’une
colonne, ce qui facilite les opérations de filtrage et de
modifications.
Activité : afficher les facettes textuelles correspondant au
contenu de la colonne Language.
Combien de langues sont représentées? Quelles anomalies
constate-t-on?
52/
53. Utiliser les facettes
Activité : afficher les facettes textuelles correspondant au
contenu de la colonne Language.
Résultat : 3 langues (anglais, espagnol, français)
Anomalies :
- « EN » et « English » pour l’anglais
- 15 valeurs vides
53/
(blank) : valeur vide
54. Utiliser les facettes
Les options d’une facette
54/
Récupérer la liste Tri alphabétique ou par occurrence
valeurs vides (blank) toujours à la fin
Modifier la facette (complexe)
Regrouper les valeurs semblables
55. Utiliser les facettes
Activité : dans la facette Language, afficher les valeurs par
« nombre de choix », et ne conserver que celles présentes entre
50 et 200 fois dans le fichier
55/
56. Utiliser les facettes
Activité : dans la facette Language, afficher les valeurs par
« nombre de choix », et ne conserver que celles présentes entre
50 et 200 fois dans le fichier
56/
1 seule valeur, présente 107 fois
histogramme
57. Utiliser les facettes
Annuler l’opération en fermant l’histogramme
Activité : dans la facette Language, remplacer la valeur English
par EN
57/
59. Utiliser les facettes
Activité : utiliser la facette Language pour filtrer les données et
afficher uniquement les lignes sans valeur dans Language,
vérifier la langue réelle d’après les titres, puis ajouter la bonne
valeur dans Language
59/
60. Utiliser les facettes
Activité : utiliser la facette Language pour filtrer les données et
afficher uniquement les lignes sans valeur dans Language
facette en orange : utilisé pour filtrer les données (afficher les
données correspondant à la facette)
facette en noir barré : filtre inversé (afficher les données ne
correspondant pas à la facette)
60/
64. Utiliser les facettes
Activité : Remplacer toutes les valeurs « English » par « EN »
Résultat : 3 langues
Anomalies : 15 valeurs vides ; EN et English pour l’anglais
64/
65. 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)
65/
66. Utiliser les facettes: pour aller plus loin
Facettes personnalisées : suppose une utilisation du langage
GREL (voir plus loin)
66/
67. Utiliser les facettes: pour aller plus loin
Facettes courantes : plusieurs options souvent utiles: facette
par mot, par doublons, par longueur de texte, par blanc
67/
68. Utiliser les facettes: pour aller plus loin
Activité : A partir de la colonne Title, appliquer une facette par
mots. Quel est le mot le plus fréquent? Sélectionner toutes les
lignes dont le titre ne contient pas ce mot. Combien sont-elles?
68/
69. Utiliser les facettes: pour aller plus loin
Activité : A partir de la colonne Title, appliquer une facette par
mots. Quel est le mot le plus fréquent? Sélectionner toutes les
lignes dont le titre ne contient pas ce mot. Combien sont-elles?
69/
70. Utiliser les facettes: pour aller plus loin
Activité : Certains articles portent-ils le même DOI (numéro
censé être unique)?
70/
71. Utiliser les facettes: pour aller plus loin
Activité : Certains articles portent-ils le même DOI (numéro
censé être unique)?
71/
Facette supplémentaire :
Colonne DOI > Facette textuelle
Colonne DOI > Facettes courantes > Facette des doublons
En apparence, 25 réponses. Mais la plupart des cellules sont vides…
72. Utiliser les facettes: pour aller plus loin
Activité : Un code ISSN fait 9 caractères (XXXX-XXXX).
Certaines valeurs de la colonne ISSNs ont-elles une longueur
supérieure? Pourquoi?
72/
73. Utiliser les facettes: pour aller plus loin
Activité : Un code ISSN fait 9 caractères (XXXX-XXXX).
Certaines valeurs de la colonne ISSNs ont-elles une longueur
supérieure? Pourquoi?
73/
Colonne ISSNs > Facettes courantes > Facette de la longueur du texte
Deux catégories de valeurs : longueur=9 ou longueur=19
Filtrage sur les valeurs de longueur 19
Les
41 lignes contiennent 2 ISSN séparés par |
74. Utiliser les facettes: pour aller plus loin
Activité : Combien de lignes contiennent une information dans
la colonne Licence?
74/
Colonne Licence > Facettes courantes > Facette par blanc
[traduction incorrecte : « blanc » signifie ici « valeur vide »]
995 cellules ne sont pas vides donc contiennent une information
76. Regrouper des valeurs proches
Activité : Créer des facettes textuelles pour la colonne
Publisher, puis grouper les résultats pour repérer des variantes
d’orthographe ou de présentation
76/
77. Regrouper des valeurs proches
Activité : Créer des facettes textuelles pour la colonne
Publisher, puis grouper les résultats pour repérer des variantes
d’orthographe ou de présentation, et expliquer le résultat
77/
79. Regrouper des valeurs proches
Ex: La méthode « plus proches voisins » basé sur la distance de
Levenshtein détecte 5 groupes de valeurs
79/
80. Regrouper des valeurs proches
Pourquoi « MDPI AG » et « MDPI AG » sont-elles considérées
comme des valeurs proches et non identiques?
80/
ESPACE FINAL
Invisible par défaut
86. Appliquer des transformations courantes
Activité: Ajouter manuellement plusieurs espaces au début et
à l’intérieur d’une cellule, puis supprimer ces espaces en
utilisant le menu
86/86/
87. Appliquer des transformations courantes
Activité: Ajouter manuellement plusieurs espaces au début et
à l’intérieur d’une cellule
(les espaces ne seront pas visibles dans l’affichage général des
données, mais ils ont bien été ajoutés)
87/87/
88. Appliquer des transformations courantes
Activité: Supprimer ces espaces en utilisant le menu
Deux opérations
Vérification: les espaces ont bien été supprimés
88/88/
90. Deux cas envisageables
Axe horizontal (créer de nouvelles colonnes)
Axe vertical (créer de nouvelles lignes)
90/90/
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 Paris
91. Diviser une colonne en fonction de son
contenu
Activité : examiner la structure générale des données de la
colonne Citation, éclater cette colonne en 4 colonnes, en
conservant la colonne initiale, et sans forcer le logiciel à deviner le
type des données dans les nouvelles colonnes
91/91/
92. Diviser une colonne en fonction de son
contenu
Activité : examiner la structure générale des données de la
colonne Citation
4 informations séparées par des virgules
- Titre de la revue
- Volume
- Numéro
- Pages (année)
92/92/
93. Diviser une colonne en fonction de son
contenu
Activité : éclater cette colonne en 4 colonnes, en conservant la
colonne initiale, et sans forcer le logiciel à deviner le type des
données dans les nouvelles colonnes
93/93/
96. Éclater une colonne sur plusieurs lignes
Peut-on appliquer la même méthode aux colonnes Authors et
Subjects pour créer une liste de tous les auteurs et tous les sujets,
détecter les variantes d’orthographe et regrouper les valeurs
proches?
96/96/
97. Éclater une colonne sur plusieurs lignes
Peut-on appliquer la même méthode aux colonnes Authors et
Subjects pour créer une liste de tous les auteurs et tous les sujets,
détecter les variantes d’orthographe et regrouper les valeurs
proches?
Non, car
Dans la colonne Citations on a: 4 informations différentes
séparées par une virgule.
Dans les colonnes Authors et Subjects on a : des informations
de même type, répétées un nombre variable de fois, séparées
par une barre |
97/97/
98. Éclater une colonne sur plusieurs lignes
Solution: créer de nouvelles lignes
1. Editer les cellules > Diviser les cellules multivaluées
2. Nettoyer les valeurs
3. Editer les cellules > Joindre les cellules multivaluées
98/98/
99. Éclater une colonne sur plusieurs lignes
Solution:
1. Editer les cellules > Diviser les cellules multivaluées
99/99/
Astuce:
Pour saisir le caractère |
- Windows : AltGr+6
- Mac : Alt + Maj + L
100. Éclater une colonne sur plusieurs lignes
Solution:
1. Editer les cellules > Diviser les cellules multivaluées
100/100/
101. Éclater une colonne sur plusieurs lignes
Solution:
2. Nettoyer les valeurs
101/101/
Repérer les variantes singulier/pluriel, etc
102. Éclater une colonne sur plusieurs lignes
Solution:
3. Editer les cellules > Joindre les cellules multivaluées
Les données ont repris leur forme initiale (1001 lignes) mais les
noms des auteurs ont été harmonisés!
102/102/
103. Éclater une colonne sur plusieurs lignes
Activité: Comment obtenir ce résultat (3 colonnes, 1 ligne pour
chaque sujet classés alphabétiquement, avec le lien vers l’article
concerné) et l’exporter dans Excel?
103/103/
104. Éclater une colonne sur plusieurs lignes
1. Diviser les cellules multivaluées de la colonne Subject
2. Dans les colonnes URL et DOI, utiliser le menu Editer les
cellules > Remplir
104/104/
105. Éclater une colonne sur plusieurs lignes
3. Supprimer les colonnes inutiles et reclasser les colonnes
restant avec le menu Toutes > Editer les colonnes >
Retrier/supprimer les colonnes
105/105/
106. Éclater une colonne sur plusieurs lignes
4. Trier sur la colonne Subjects
5. Menu Sort > Retrier de façon permanente
6. Exporter
106/106/
Astuce:
Si l’export Excel ou ods prend trop de
temps, exporter en valeurs séparées
par des virgules
108. Annuler ou rejouer un traitement
Permet d’annuler (« défaire ») ou rejouer (« refaire) un traitement
sans limites
108/108/
109. Exporter et réappliquer les traitements
Les traitements peuvent être exportés et réappliqués au jeu de
données initial ou à un autre jeu de données présentant la même
structure!
109/109/
110. Exporter les traitements
Extraire l’historique pour enregistrer les traitements
110/110/
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
111. Réappliquer les traitements
À partir d’un jeu de données fraîchement téléchargé
111/111/
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
113. Appliquer des transformations
personnalisées
Pendant quelques secondes, une information s’affiche après
une modification des données réalisée via le menu:
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.
113/113/
114. Appliquer des transformations
personnalisées
Les 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
114/114/
115. Appliquer des transformations
personnalisées
Activité : dans la colonne Author, ouvrir le menu Editer les
cellules > Transformer, puis utiliser la fonction value.trim()
permettant de supprimer les espaces initiaux et finaux
115/115/
121. Appliquer des transformations
personnalisées
Syntaxe générale
Pas de = avant les fonctions
+ permet de concaténer deux valeurs. Ex: "a"+"b" -> "ab"
Nom des fonctions sensible aux majuscules
value désigne le contenu d’une cellule
Les fonctions sont suivies de () contenant les paramètres
Les fonctions sont suivis de () s’il n’y a pas de paramètres
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)
121/121/
122. Appliquer des transformations
personnalisées
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)
122/122/
123. Appliquer des transformations
personnalisées
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)
123/123/
124. Appliquer des transformations
personnalisées
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.
Syntaxe délicate à maîtriser
124/124/
125. Créer une colonne en fonction d’une autre
Activité : examiner la structure des données de la nouvelle
colonne Citation 4, et créer une nouvelle colonne Annee ne
contenant que l’année de l’article (utiliser le langage GREL, avec au
moins deux des fonctions suivantes: split, substring, length, replaceChars,indexOf)
126. Créer une colonne en fonction d’une autre
Activité : examiner la structure des données de la nouvelle
colonne Citation 4
Pp debut-fin (Année)
127. Créer une colonne en fonction d’une autre
Activité : créer une nouvelle colonne Annee ne contenant que
l’année de l’article (utiliser le langage GREL, avec au moins deux des fonctions
suivantes: split, substring, length, replaceChars,indexOf)
128. Créer une colonne en fonction d’une autre
Activité : créer une nouvelle colonne Annee ne contenant que
l’année de l’article (utiliser le langage GREL, avec au moins deux des fonctions
suivantes: split, substring, length, replaceChars,indexOf)
Plusieurs formules possibles, dont:
value.split('(')[1].substring(0,4)
value.substring(length(value)-5,length(value)-1)
substring(value.replaceChars('()',''), value.indexOf('(')))
129. Créer une colonne en fonction d’une autre
Activité : créer une nouvelle colonne Annee ne contenant que
l’année de l’article (utiliser le langage GREL, avec au moins deux des fonctions
suivantes: split, substring, length, replaceChars,indexOf)
130. Ce que nous n’avons pas vu…
Enrichir un jeu de données avec des informations issues du web
(sur la base d’une URL ou d’un service de « réconciliation »)
Traiter des valeurs numériques
Croiser deux jeux de données
Utiliser les expressions régulières
131. 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
Editor's Notes
Initiation à OpenRefine
Non prévu :
Dédoublonner
Enrichir un fichier en récupérant automatiquement des données sur le web
Croiser des fichiers
Travail avec des données numériques ou des dates
Dataiku et Talend ne font pas que du nettoyage de données mais aussi des manipulations plus avancées
Le nettoyage n’est pas une tache automatique, cela demande de la réflexion…
Initiation à OpenRefine
Talend, Trifacta : versions gratuites mais limitées à des petits jeux de données
Dataiku : payant mais version gratuite disponible pour étudiants
Initiation à OpenRefine
Version non modifiée : https://raw.githubusercontent.com/data-lessons/library-openrefine/gh-pages/data/doaj-article-sample.csv
Autres jeux de données au besoin:
https://github.com/data-lessons/library-openrefine/tree/gh-pages/data
https://github.com/weecology/portal-teachingdb
La base de données d'enseignement du projet Portal est une version simplifiée de la base de données de projets de portail conçue pour l'enseignement. Il fournit un exemple réel d'histoire de vie, de population et de données écologiques, avec une complexité suffisante pour enseigner de nombreux aspects de l'analyse et de la gestion des données, mais avec beaucoup de complexités supprimées pour permettre aux élèves de se concentrer sur les idées et les compétences fondamentales enseignées. (S. K. Morgan Ernest, Thomas J. Valone, and James H. Brown. 2009. Long-term monitoring and experimental manipulation of a Chihuahuan Desert ecosystem near Portal, Arizona, USA. Ecology 90:1708.)
oil_production.csv Data on oil production by world region from 2000 to 2014, in thousands of barrels per day, from the U.S. Energy Information Administration.
ucb_stanford_2014.csv Data on federal government grants to UC Berkeley and Stanford University in 2014, downloaded from USASpending.gov.
Initiation à OpenRefine
Dans OpenRefine, le regroupement signifie "trouver des groupes de valeurs différentes qui pourraient être des représentations alternatives de la même chose". Par exemple, les deux chaînes "New York" et "New York" sont très susceptibles de se référer au même concept et ont simplement des différences de capitalisation. De même, "Gödel" et "Godel" se réfèrent probablement à la même personne. Le regroupement est un outil très puissant pour le nettoyage des ensembles de données contenant des entrées mal orthographiées ou mal saisies. OpenRefine a mis en place plusieurs algorithmes de clustering. Expérimentez avec eux et en savoir plus sur ces algorithmes et leur fonctionnement.
Pour en savoir plus: https://github.com/OpenRefine/OpenRefine/wiki/Clustering-In-Depth