SlideShare une entreprise Scribd logo
1  sur  131
Télécharger pour lire hors ligne
Nettoyer et préparer des données
avec OpenRefine
BU UNS
Formation URFIST PACAC
25/4/2017
M. Saby
1/
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/
Nettoyer et préparer des données
3/
Du rêve …à la réalité
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/
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
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
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
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
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é !
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
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,
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?)
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é,
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)
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
Quels outils ?
Tableurs
Scripts
Programmes dédiés
16/
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
Présentation d’OpenRefine
18/
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/
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/
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/
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/
Importer des données
23/
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/
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/
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/
Importer des données
Plusieurs formats de fichiers possibles
Depuis plusieurs emplacements
27/
Importer des données
Charger le fichier dans OpenRefine le fichier précédemment
enregistré sur le Bureau
28/
Importer des données
Ecran d’import en 2 parties : aperçu des donnés + paramètres
29/
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
Importer des données
Lire et écrire en français…
31/
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/
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/
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
Travailler avec OpenRefine:
principes généraux
35/
L’espace de travail
36/
Lien vers le projet
ExportNouveau
projetContenu du fichierFacettes
et filtres
Historique
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)
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/
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/
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)
Réordonner ou supprimer des colonnes
Dans la 1re colonne Toutes
41/
Tris, filtres et facettes
42/
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/
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/
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)
Trier les données
Retrier de façon permanente
46/
Nouveau menu
Trier les données
47/
Les lignes ont été effectivement réordonnées
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/
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/
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/
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/
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/
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
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
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/
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
Utiliser les facettes
Annuler l’opération en fermant l’histogramme
Activité : dans la facette Language, remplacer la valeur English
par EN
57/
Utiliser les facettes
Activité : dans la facette Language, remplacer la valeur English
par EN
58/
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/
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/
Utiliser les facettes
Activité : vérifier la langue réelle d’après les titres
61/
15 titres en anglais
Utiliser les facettes
Activité : puis ajouter la bonne valeur dans Language
62/
Utiliser les facettes
Afficher un histogramme à partir d’une facette
63/
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/
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/
Utiliser les facettes: pour aller plus loin
Facettes personnalisées : suppose une utilisation du langage
GREL (voir plus loin)
66/
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/
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/
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/
Utiliser les facettes: pour aller plus loin
Activité : Certains articles portent-ils le même DOI (numéro
censé être unique)?
70/
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…
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/
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 |
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
Regrouper des valeurs proches
75/
(« clusterisation »)
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/
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/
Regrouper des valeurs proches
Plusieurs algorithmes
78/
Regrouper des valeurs proches
Ex: La méthode « plus proches voisins » basé sur la distance de
Levenshtein détecte 5 groupes de valeurs
79/
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
Regrouper des valeurs proches
Valider la suggestion
81/
cocher
Prudence!
Ces algorithmes peuvent faire des rapprochements non
pertinents.
Ex. sur la colonne Authors:
82/
Ces deux valeurs sont différentes !
Transformations courantes du
contenu des colonnes
83/
Appliquer des transformations courantes
Activité: Transformer les valeurs de la colonne Title pour
obtenir ce résultat
84/84/
Appliquer des transformations courantes
Editer les cellules > Transformations courantes > En majuscules
85/85/
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/
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/
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/
Éclater les cellules comprenant des
valeurs multiples
89/
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
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/
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/
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/
Diviser une colonne en fonction de son
contenu
94/94/
décocher
conserver
Diviser une colonne en fonction de son
contenu
95/95/
É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/
É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/
É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/
É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
Éclater une colonne sur plusieurs lignes
Solution:
1. Editer les cellules > Diviser les cellules multivaluées
100/100/
Éclater une colonne sur plusieurs lignes
Solution:
2. Nettoyer les valeurs
101/101/
Repérer les variantes singulier/pluriel, etc
É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/
É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/
É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/
É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/
É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
Exporter et réappliquer les
traitements
107/
Annuler ou rejouer un traitement
Permet d’annuler (« défaire ») ou rejouer (« refaire) un traitement
sans limites
108/108/
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/
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
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
Personnaliser ses opérations avec
des formules
Introduction au langage GREL
Démonstration sans exercice
112/
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/
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/
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/
Appliquer des transformations
personnalisées
Activité : dans la colonne Author, ouvrir le menu Editer les
cellules > Transformer
116/116/
Formule
(sans = initial)
Résultat de
la formule
Appliquer des transformations
personnalisées
Activité : dans la colonne Author, ouvrir le menu Editer les
cellules > Transformer
117/117/
Erreur !
Il manque les () après trim
Appliquer des transformations
personnalisées
Activité : dans la colonne Author, ouvrir le menu Editer les
cellules > Transformer
118/118/
Cette fois c’est bon!
Valider pour appliquer
Appliquer des transformations
personnalisées
Deux menus utiles: aide et historique
119/119/
Aide précieuse!
Utiliser Crtrl+F pour rechercher une commande
Appliquer des transformations
personnalisées
Deux menus utiles: aide et historique
120/120/
Historique
Permet de réutiliser une formule
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/
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/
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/
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/
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)
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)
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)
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('(')))
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)
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
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

Contenu connexe

Tendances

Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
Business Intelligence : Transformer les données en information.
Business Intelligence : Transformer les données en information.Business Intelligence : Transformer les données en information.
Business Intelligence : Transformer les données en information.arnaudm
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleLilia Sfaxi
 
DataWarehouse
DataWarehouseDataWarehouse
DataWarehousenzuguem
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian Lilia Sfaxi
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
Projet Bi - 3 - Alimentation des données
Projet Bi - 3 - Alimentation des donnéesProjet Bi - 3 - Alimentation des données
Projet Bi - 3 - Alimentation des donnéesJean-Marc Dupont
 
Introduction à la Business Intelligence
Introduction à la Business Intelligence Introduction à la Business Intelligence
Introduction à la Business Intelligence Cynapsys It Hotspot
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence Yassine Badri
 
La Business Intelligence
La Business Intelligence La Business Intelligence
La Business Intelligence Khchaf Mouna
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
 
Conception datawarehouse
Conception datawarehouseConception datawarehouse
Conception datawarehouseHassane Dkhissi
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleLilia Sfaxi
 
Business Intelligence : introduction to datawarehouse
Business Intelligence : introduction to datawarehouseBusiness Intelligence : introduction to datawarehouse
Business Intelligence : introduction to datawarehouseAlexandre Equoy
 

Tendances (20)

Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
Business Intelligence : Transformer les données en information.
Business Intelligence : Transformer les données en information.Business Intelligence : Transformer les données en information.
Business Intelligence : Transformer les données en information.
 
Le processus ETL (Extraction, Transformation, Chargement)
Le processus ETL (Extraction, Transformation, Chargement)Le processus ETL (Extraction, Transformation, Chargement)
Le processus ETL (Extraction, Transformation, Chargement)
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation Multidimensionnelle
 
DataWarehouse
DataWarehouseDataWarehouse
DataWarehouse
 
Présentation bi 1.0
Présentation bi 1.0Présentation bi 1.0
Présentation bi 1.0
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Projet Bi - 3 - Alimentation des données
Projet Bi - 3 - Alimentation des donnéesProjet Bi - 3 - Alimentation des données
Projet Bi - 3 - Alimentation des données
 
Introduction à la Business Intelligence
Introduction à la Business Intelligence Introduction à la Business Intelligence
Introduction à la Business Intelligence
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
Business intelligence
Business intelligenceBusiness intelligence
Business intelligence
 
La Business Intelligence
La Business Intelligence La Business Intelligence
La Business Intelligence
 
Big data
Big dataBig data
Big data
 
Introduction au BIG DATA
Introduction au BIG DATAIntroduction au BIG DATA
Introduction au BIG DATA
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
Conception datawarehouse
Conception datawarehouseConception datawarehouse
Conception datawarehouse
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique Décisionnelle
 
Business Intelligence : introduction to datawarehouse
Business Intelligence : introduction to datawarehouseBusiness Intelligence : introduction to datawarehouse
Business Intelligence : introduction to datawarehouse
 
Power bi desktop et Power BI Service
Power bi desktop et Power BI ServicePower bi desktop et Power BI Service
Power bi desktop et Power BI Service
 

Similaire à Nettoyer et préparer des données avec OpenRefine

Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Mathieu Saby
 
Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Aline Deschamps
 
S17 adressez vos besoins complexes de reporting avec db2 web query
S17   adressez vos besoins complexes de reporting avec db2 web queryS17   adressez vos besoins complexes de reporting avec db2 web query
S17 adressez vos besoins complexes de reporting avec db2 web queryGautier DUMAS
 
SIBD101-Introduction aux bases de données.pdf
SIBD101-Introduction aux bases de données.pdfSIBD101-Introduction aux bases de données.pdf
SIBD101-Introduction aux bases de données.pdfNadim ELSAKAAN
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Apprentissage automatique avec RapidMiner
Apprentissage automatique avec RapidMinerApprentissage automatique avec RapidMiner
Apprentissage automatique avec RapidMinerMajdi Hannachi
 
Formation Informatique base et généralités
Formation Informatique base et généralitésFormation Informatique base et généralités
Formation Informatique base et généralitésSinovatia
 
IODS : Retour d’expériences au sein du Center for Data Science
IODS : Retour d’expériences au sein du Center for Data ScienceIODS : Retour d’expériences au sein du Center for Data Science
IODS : Retour d’expériences au sein du Center for Data ScienceBorderCloud
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
Cours access
Cours accessCours access
Cours accesskourbali
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linuxIdriss22
 
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v160 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16CERTyou Formation
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementgplanchat
 
Analyse de données avec SPSS (1).pdf
Analyse de données avec SPSS (1).pdfAnalyse de données avec SPSS (1).pdf
Analyse de données avec SPSS (1).pdfImadSa
 

Similaire à Nettoyer et préparer des données avec OpenRefine (20)

Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
 
Cours 01.pptx
Cours 01.pptxCours 01.pptx
Cours 01.pptx
 
Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"Matinale "Data Science et Machine Learning"
Matinale "Data Science et Machine Learning"
 
Utc data publica1
Utc data publica1Utc data publica1
Utc data publica1
 
S17 adressez vos besoins complexes de reporting avec db2 web query
S17   adressez vos besoins complexes de reporting avec db2 web queryS17   adressez vos besoins complexes de reporting avec db2 web query
S17 adressez vos besoins complexes de reporting avec db2 web query
 
SIBD101-Introduction aux bases de données.pdf
SIBD101-Introduction aux bases de données.pdfSIBD101-Introduction aux bases de données.pdf
SIBD101-Introduction aux bases de données.pdf
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Apprentissage automatique avec RapidMiner
Apprentissage automatique avec RapidMinerApprentissage automatique avec RapidMiner
Apprentissage automatique avec RapidMiner
 
Formation Informatique base et généralités
Formation Informatique base et généralitésFormation Informatique base et généralités
Formation Informatique base et généralités
 
IODS : Retour d’expériences au sein du Center for Data Science
IODS : Retour d’expériences au sein du Center for Data ScienceIODS : Retour d’expériences au sein du Center for Data Science
IODS : Retour d’expériences au sein du Center for Data Science
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Une Introduction à R
Une Introduction à RUne Introduction à R
Une Introduction à R
 
Cours access
Cours accessCours access
Cours access
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linux
 
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v160 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
Analyse de données avec SPSS (1).pdf
Analyse de données avec SPSS (1).pdfAnalyse de données avec SPSS (1).pdf
Analyse de données avec SPSS (1).pdf
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
X-Datatest - FR
X-Datatest - FRX-Datatest - FR
X-Datatest - FR
 

Plus de Mathieu Saby

Science ouverte et appels à projets
Science ouverte et appels à projetsScience ouverte et appels à projets
Science ouverte et appels à projetsMathieu Saby
 
Programmer dans Openrefine avec GREL
Programmer dans Openrefine avec GRELProgrammer dans Openrefine avec GREL
Programmer dans Openrefine avec GRELMathieu Saby
 
Usage des expressions régulières dans Openrefine
Usage des expressions régulières dans OpenrefineUsage des expressions régulières dans Openrefine
Usage des expressions régulières dans OpenrefineMathieu Saby
 
Analyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineAnalyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineMathieu Saby
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Mathieu Saby
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Mathieu Saby
 
Gérer et diffuser ses données: principes et bonnes pratiques
Gérer et diffuser ses données: principes et bonnes pratiquesGérer et diffuser ses données: principes et bonnes pratiques
Gérer et diffuser ses données: principes et bonnes pratiquesMathieu Saby
 
Le projet du SCD de Nice: une approche globale des données de la recherche
Le projet du SCD de Nice: une approche globale des données de la rechercheLe projet du SCD de Nice: une approche globale des données de la recherche
Le projet du SCD de Nice: une approche globale des données de la rechercheMathieu Saby
 

Plus de Mathieu Saby (8)

Science ouverte et appels à projets
Science ouverte et appels à projetsScience ouverte et appels à projets
Science ouverte et appels à projets
 
Programmer dans Openrefine avec GREL
Programmer dans Openrefine avec GRELProgrammer dans Openrefine avec GREL
Programmer dans Openrefine avec GREL
 
Usage des expressions régulières dans Openrefine
Usage des expressions régulières dans OpenrefineUsage des expressions régulières dans Openrefine
Usage des expressions régulières dans Openrefine
 
Analyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineAnalyse de données JSON dans Openrefine
Analyse de données JSON dans Openrefine
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
Gérer et diffuser ses données: principes et bonnes pratiques
Gérer et diffuser ses données: principes et bonnes pratiquesGérer et diffuser ses données: principes et bonnes pratiques
Gérer et diffuser ses données: principes et bonnes pratiques
 
Le projet du SCD de Nice: une approche globale des données de la recherche
Le projet du SCD de Nice: une approche globale des données de la rechercheLe projet du SCD de Nice: une approche globale des données de la recherche
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/
  • 3. Nettoyer et préparer des données 3/ Du rêve …à la réalité
  • 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/
  • 27. Importer des données Plusieurs formats de fichiers possibles Depuis plusieurs emplacements 27/
  • 28. Importer des données Charger le fichier dans OpenRefine le fichier précédemment enregistré sur le Bureau 28/
  • 29. Importer des données Ecran d’import en 2 parties : aperçu des donnés + paramètres 29/
  • 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
  • 31. Importer des données Lire et écrire en français… 31/
  • 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)
  • 41. Réordonner ou supprimer des colonnes Dans la 1re colonne Toutes 41/
  • 42. Tris, filtres et facettes 42/
  • 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)
  • 46. Trier les données Retrier de façon permanente 46/ Nouveau menu
  • 47. Trier les données 47/ Les lignes ont été effectivement réordonnées
  • 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/
  • 58. Utiliser les facettes Activité : dans la facette Language, remplacer la valeur English par EN 58/
  • 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/
  • 61. Utiliser les facettes Activité : vérifier la langue réelle d’après les titres 61/ 15 titres en anglais
  • 62. Utiliser les facettes Activité : puis ajouter la bonne valeur dans Language 62/
  • 63. Utiliser les facettes Afficher un histogramme à partir d’une facette 63/
  • 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
  • 75. Regrouper des valeurs proches 75/ (« clusterisation »)
  • 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/
  • 78. Regrouper des valeurs proches Plusieurs algorithmes 78/
  • 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
  • 81. Regrouper des valeurs proches Valider la suggestion 81/ cocher
  • 82. Prudence! Ces algorithmes peuvent faire des rapprochements non pertinents. Ex. sur la colonne Authors: 82/ Ces deux valeurs sont différentes !
  • 84. Appliquer des transformations courantes Activité: Transformer les valeurs de la colonne Title pour obtenir ce résultat 84/84/
  • 85. Appliquer des transformations courantes Editer les cellules > Transformations courantes > En majuscules 85/85/
  • 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/
  • 89. Éclater les cellules comprenant des valeurs multiples 89/
  • 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/
  • 94. Diviser une colonne en fonction de son contenu 94/94/ décocher conserver
  • 95. Diviser une colonne en fonction de son contenu 95/95/
  • 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
  • 107. Exporter et réappliquer les traitements 107/
  • 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
  • 112. Personnaliser ses opérations avec des formules Introduction au langage GREL Démonstration sans exercice 112/
  • 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/
  • 116. Appliquer des transformations personnalisées Activité : dans la colonne Author, ouvrir le menu Editer les cellules > Transformer 116/116/ Formule (sans = initial) Résultat de la formule
  • 117. Appliquer des transformations personnalisées Activité : dans la colonne Author, ouvrir le menu Editer les cellules > Transformer 117/117/ Erreur ! Il manque les () après trim
  • 118. Appliquer des transformations personnalisées Activité : dans la colonne Author, ouvrir le menu Editer les cellules > Transformer 118/118/ Cette fois c’est bon! Valider pour appliquer
  • 119. Appliquer des transformations personnalisées Deux menus utiles: aide et historique 119/119/ Aide précieuse! Utiliser Crtrl+F pour rechercher une commande
  • 120. Appliquer des transformations personnalisées Deux menus utiles: aide et historique 120/120/ Historique Permet de réutiliser une formule
  • 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

Notes de l'éditeur

  1. Initiation à OpenRefine
  2. 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
  3. https://fr.pinterest.com/pin/342062534175200467/
  4. Anglais : clean, cleanse, wrangle, prepare Voir https://en.wikipedia.org/wiki/Data_cleansing
  5. Dataiku et Talend ne font pas que du nettoyage de données mais aussi des manipulations plus avancées
  6. Le nettoyage n’est pas une tache automatique, cela demande de la réflexion…
  7. Initiation à OpenRefine
  8. Talend, Trifacta : versions gratuites mais limitées à des petits jeux de données Dataiku : payant mais version gratuite disponible pour étudiants
  9. Initiation à OpenRefine
  10. 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.
  11. Initiation à OpenRefine
  12. 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
  13. Initiation à OpenRefine
  14. Démonstration sans exercice
  15. Manque transfos courantes
  16. Manque transfos courantes
  17. Manque transfos courantes
  18. Manque transfos courantes
  19. Manque transfos courantes
  20. Manque transfos courantes
  21. http://paldhous.github.io/ucsc/2016/investigative-policy/datasets.html https://icantiemyownshoes.wordpress.com/2014/04/15/openrefine-and-messy-legacy-access-points-in-an-archivists-toolkit-database/ (variante: Library Carpentry) https://practicaldatamanagement.wordpress.com/2014/05/16/help-me-im-covered-in-bees-or-using-openrefine-to-clean-specimen-data/