SlideShare a Scribd company logo
1 of 2
Download to read offline
Mémo : Programmer dans Openrefine avec GREL et Jython 1/2
Mémo : Analyse de données JSON dans Openrefine
Auteur : Mathieu Saby
Licence CC-BY
Historique
V1 10/11/2018 Création
La version d’Openrefine décrite est la 3.1.
Table des matières
1. Analyse de données JSON en GREL ...........................................................................................................2
2. Analyse de données JSON en Python........................................................................................................2
Mémo : Programmer dans Openrefine avec GREL et Jython 2/2
1. Analyse de données JSON en GREL
Une valeur JSON peut être atomique (texte (entre guillemets double), nombre, booléen, null) ou
complexe (objets, tableaux).
Les objets (entre {}) sont composés d’une ou plusieurs paires non ordonnées de couples « "clé" :
"valeur" » séparées par des virgules. Les clés sont toujours encadrées de guillemets doubles.
Ex : {"nom" : "Dupont"} ou {"nom" : "Dupont", "prenom" : "Jean", "age" :43}
Les tableaux (entre []) sont composés d’une ou plusieurs valeurs ordonnées séparées par des virgules.
Ex : ["Dupont"] ou ["Dupont","Martin",34]
Un tableau ou un objet peuvent être imbriqués dans un autre tableau ou objet.
Ex : {"clients" : [ {"nom" : "Dupont"}, {"nom" : "Martin"} ] }
La fonction GREL parseJson() transforme une chaîne en valeur JSON qui peut ensuite être manipulée en
parcourant l’index des tableaux ou en récupérant la valeur d’une clé.
Le Nième élément d’un tableau est récupérable avec la syntaxe [N].
La valeur correspondant à une clé est récupérable avec la syntaxe ["clé"] ou .clé.
➢ Ex : '["a","b",12]'.parseJson()[0]  « a »
➢ Ex : '{"a" : 1,"b" : 2}'.parseJson().a  1
Les éléments d’un tableau peuvent être listés et manipulés avec forEach (qui parcourt un tableau) et filtrés
avec filter (qui renvoie les éléments du tableau correspondant à certains critères)
Ex : soit l’objet JSON suivant (objet -> tableau -> 2 objets)
{"liste":[
{"id":"id001","name":"nom1"},
{"id":"id002","name":"nom2"}
]}
Pour récupérer un tableau contenant la clé "name" pour tous les éléments de la liste :
➢ forEach(value.parseJson()["liste"], element_temporaire, element_temporaire["name"])  [ "nom1", "nom2" ]
Pour récupérer le nom de l’élément id001:
➢ filter(value.parseJson()["liste"], element_temporaire, element_temporaire["id"]=="id001")[0]["name"]
2. Analyse de données JSON en Python
Si la clé était variable ou inconnue au lieu d’être toujours "liste", le plus simple est de recourir à Jython au
lieu de GREL.
Exemple :
import json
donnees = json.loads (value)
for cle, valeur in donnees.items():
return (valeur['name'])
Résultat :
value import json donnees = json.loa ...
{"inconnu1":{"id":"id001","name":"nom1"}} nom1
{"inconnu2":{"id":"id002","name":"nom2"}} nom2

More Related Content

What's hot

La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlStéphane Legrand
 
Theme 9(bis)
Theme 9(bis)Theme 9(bis)
Theme 9(bis)salmazen
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soatSOAT
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...ECAM Brussels Engineering School
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Pablo Tamarit
 
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchronesAsyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchronestchappui
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en gokader15
 
Good or Evil: les fonctions anonymes en Javascript
Good or Evil: les fonctions anonymes en JavascriptGood or Evil: les fonctions anonymes en Javascript
Good or Evil: les fonctions anonymes en JavascriptNoirdes
 

What's hot (17)

La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
Ruby STAR
Ruby STARRuby STAR
Ruby STAR
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Theme 8
Theme 8Theme 8
Theme 8
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
Theme 9(bis)
Theme 9(bis)Theme 9(bis)
Theme 9(bis)
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Spark dataframe
Spark dataframeSpark dataframe
Spark dataframe
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012
 
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchronesAsyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Good or Evil: les fonctions anonymes en Javascript
Good or Evil: les fonctions anonymes en JavascriptGood or Evil: les fonctions anonymes en Javascript
Good or Evil: les fonctions anonymes en Javascript
 
Java Nio 2
Java Nio 2Java Nio 2
Java Nio 2
 

Similar to Analyse de données JSON dans Openrefine

Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RLaurent Beauguitte
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementMohamed hedi Abidi
 
TP1 Data science: manipulation d'une base de donnée
 TP1 Data science: manipulation d'une base de donnée TP1 Data science: manipulation d'une base de donnée
TP1 Data science: manipulation d'une base de donnéeSaharBenMabrouk
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texteEstelle Delpech
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXEmmanuelle Morlock
 
5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdf5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdfAliouDiallo24
 
Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5Abib Faye
 

Similar to Analyse de données JSON dans Openrefine (13)

Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec R
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et Développement
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
 
R Devtools
R DevtoolsR Devtools
R Devtools
 
TP1 Data science: manipulation d'une base de donnée
 TP1 Data science: manipulation d'une base de donnée TP1 Data science: manipulation d'une base de donnée
TP1 Data science: manipulation d'une base de donnée
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texte
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
 
5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdf5- understandinggJava_Collections_v4.pdf
5- understandinggJava_Collections_v4.pdf
 
Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Td2 bibnum
Td2 bibnumTd2 bibnum
Td2 bibnum
 

More from 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
 
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
 
Nettoyer et transformer ses données avec Openrefine : partie 1
Nettoyer et transformer ses données avec Openrefine : partie 1Nettoyer et transformer ses données avec Openrefine : partie 1
Nettoyer et transformer ses données avec Openrefine : partie 1Mathieu Saby
 
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
 
Nettoyer et préparer des données avec OpenRefine
Nettoyer et préparer des données avec OpenRefineNettoyer et préparer des données avec OpenRefine
Nettoyer et préparer des données avec OpenRefineMathieu 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
 

More from Mathieu Saby (10)

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
 
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
 
Nettoyer et transformer ses données avec Openrefine : partie 1
Nettoyer et transformer ses données avec Openrefine : partie 1Nettoyer et transformer ses données avec Openrefine : partie 1
Nettoyer et transformer ses données avec Openrefine : partie 1
 
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...
 
Nettoyer et préparer des données avec OpenRefine
Nettoyer et préparer des données avec OpenRefineNettoyer et préparer des données avec OpenRefine
Nettoyer et préparer des données avec OpenRefine
 
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
 

Analyse de données JSON dans Openrefine

  • 1. Mémo : Programmer dans Openrefine avec GREL et Jython 1/2 Mémo : Analyse de données JSON dans Openrefine Auteur : Mathieu Saby Licence CC-BY Historique V1 10/11/2018 Création La version d’Openrefine décrite est la 3.1. Table des matières 1. Analyse de données JSON en GREL ...........................................................................................................2 2. Analyse de données JSON en Python........................................................................................................2
  • 2. Mémo : Programmer dans Openrefine avec GREL et Jython 2/2 1. Analyse de données JSON en GREL Une valeur JSON peut être atomique (texte (entre guillemets double), nombre, booléen, null) ou complexe (objets, tableaux). Les objets (entre {}) sont composés d’une ou plusieurs paires non ordonnées de couples « "clé" : "valeur" » séparées par des virgules. Les clés sont toujours encadrées de guillemets doubles. Ex : {"nom" : "Dupont"} ou {"nom" : "Dupont", "prenom" : "Jean", "age" :43} Les tableaux (entre []) sont composés d’une ou plusieurs valeurs ordonnées séparées par des virgules. Ex : ["Dupont"] ou ["Dupont","Martin",34] Un tableau ou un objet peuvent être imbriqués dans un autre tableau ou objet. Ex : {"clients" : [ {"nom" : "Dupont"}, {"nom" : "Martin"} ] } La fonction GREL parseJson() transforme une chaîne en valeur JSON qui peut ensuite être manipulée en parcourant l’index des tableaux ou en récupérant la valeur d’une clé. Le Nième élément d’un tableau est récupérable avec la syntaxe [N]. La valeur correspondant à une clé est récupérable avec la syntaxe ["clé"] ou .clé. ➢ Ex : '["a","b",12]'.parseJson()[0]  « a » ➢ Ex : '{"a" : 1,"b" : 2}'.parseJson().a  1 Les éléments d’un tableau peuvent être listés et manipulés avec forEach (qui parcourt un tableau) et filtrés avec filter (qui renvoie les éléments du tableau correspondant à certains critères) Ex : soit l’objet JSON suivant (objet -> tableau -> 2 objets) {"liste":[ {"id":"id001","name":"nom1"}, {"id":"id002","name":"nom2"} ]} Pour récupérer un tableau contenant la clé "name" pour tous les éléments de la liste : ➢ forEach(value.parseJson()["liste"], element_temporaire, element_temporaire["name"])  [ "nom1", "nom2" ] Pour récupérer le nom de l’élément id001: ➢ filter(value.parseJson()["liste"], element_temporaire, element_temporaire["id"]=="id001")[0]["name"] 2. Analyse de données JSON en Python Si la clé était variable ou inconnue au lieu d’être toujours "liste", le plus simple est de recourir à Jython au lieu de GREL. Exemple : import json donnees = json.loads (value) for cle, valeur in donnees.items(): return (valeur['name']) Résultat : value import json donnees = json.loa ... {"inconnu1":{"id":"id001","name":"nom1"}} nom1 {"inconnu2":{"id":"id002","name":"nom2"}} nom2