Illico Editor : nouveautés depuis 2021
Illico Editor est un (petit) couteau suisse de la qualification de donnĂ©es dĂ©veloppĂ© Ă lâorigine pour permettre aux experts mĂ©tiers de transformer les donnĂ©es sans recourir Ă la programmation⊠le tout dans une simple page HTML (pas de serveur Web) donc une utilisation Ă travers le navigateur.
Aujourdâhui, plus de 150 transformations de donnĂ©es sont disponibles prĂȘtes Ă l'emploi.
Particularité : chaque transformation exécutée ainsi que son résultat sont inscrits dans un journal de bord créant ainsi une sorte de procédure-type sans effort.
PubliĂ© sous licence GPL, le code dâIllico est globalement trĂšs basique : standards HTML5/CSS3/JS, et zĂ©ro dĂ©pendance, bibliothĂšque ou appel Ă un code tiers. Les donnĂ©es restent dans le (cache du) navigateur.
Les algorithmes sont trĂšs simples. La complexitĂ© est plutĂŽt liĂ©e Ă la maniĂšre dâimaginer de nouvelles transformations de donnĂ©es, Ă la fois gĂ©nĂ©riques (paramĂ©trables) tout en restant simples pour lâutilisateur (nombre rĂ©duit de paramĂštres).
- lien ná” 1 : Site principal (changement de domaine)
- lien ná” 2 : PrĂ©cĂ©dente dĂ©pĂȘche (2021)
Sommaire
- Quelques limites Ă connaĂźtre
- Objet de la dĂ©pĂȘche
- Nouveaux tutoriels
-
Nouvelles fonctionnalités
- Valeurs en liste : compacter, inverser lâordre, filtrer
- Valeurs en liste : lister les permutations, mélanger la liste
- enlever les accents et les cĂ©dilles de lâen-tĂȘte
- Permuter les colonnes
- Numéroter chaque série
- Obtenir les méta-données des colonnes sélectionnées
- Décaler les dates
- Jours de la semaine
- Transformation des périodes « temps : intervalles »
- Calculs
- Convertir dâun systĂšme de numĂ©ration Ă un autre
- Matrice : transposée, inverser, trier
Quelques limites Ă connaĂźtre
Dans mon usage, des crashs du navigateur ont Ă©tĂ© constatĂ©s sur des grands jeux de donnĂ©es avec les fonctionnalitĂ©s qui sollicitent le plus grand nombre de comparaisons (prĂ©cisĂ©ment le calcul de la distance dâĂ©dition / lignes).
Pour un grand volume de donnĂ©es, mon conseil serait dâopter pour Opera/Vivaldi qui proposent Ă lâutilisateur dâaugmenter la mĂ©moire allouĂ©e Ă la page (plutĂŽt que de faire crasher lâonglet/navigateur) ; de rĂ©duire le jeu de donnĂ©es aux colonnes/lignes Ă traiter (ce qui rĂ©duirait la taille), avant de se lancer dans les transformations ; ou dâopter pour des outils plus adaptĂ©s Ă cette volumĂ©trie.
Un test sur des donnĂ©es factices mâavait permis dâidentifier des tailles limites de jeu de donnĂ©es : https://illico.ti-nuage.fr/doc/build/html/fct/principes.html#jeu-de-donnees-volumineux
Objet de la dĂ©pĂȘche
Cette dĂ©pĂȘche fait Ă©cho Ă la prĂ©cĂ©dente de janvier 2021.
Au-delĂ des corrections de bug et des amĂ©liorations (gestion des nombres dĂ©cimaux et nĂ©gatifs pour les intervalles, options supplĂ©mentaires pour dĂ©cider lâinterprĂ©tation de âvaleursâ vides), je voulais prĂ©senter ici la trentaine de nouvelles fonctionnalitĂ©s/traitements et les nouveaux tutoriels.
Avant de commencer
Dans Illico, lâexpression valeurs en liste dĂ©signe
- des donnĂ©es prĂ©sentĂ©es sous la forme a, b, c (le sĂ©parateur peut ĂȘtre un caractĂšre ou une chaĂźne)
- des listes de couples de valeurs xxx:1 / yyy:2 / zzz:3 (un séparateur de liste / + un délimiteur {clé => valeur} ici :
Nouveaux tutoriels
La section tutoriels dĂ©crit des cas concrets pour lesquels il nâexiste pas de rĂ©solution « en 1 Ă©tape ».
Dans certains cas, une fonctionnalité a été développée pour couvrir tout ou partie de la résolution.
Ces tutoriels sont dĂ©taillĂ©s pas Ă pas dans la section âtutorielsâ afin dâĂȘtre utilisĂ©s comme support de formation.
Je résume ici leur logique.
Transposer une matrice
Au sens âmathĂ©matiqueâ du terme, bascule les lignes en colonnes et vice-versa :
nombre dâĂ©tapes/actions du tutoriel : 6
une nouvelle fonctionnalité a été développée par la suite pour transposer les données en 1 clic/étape/action
Comparer (rapidement) des groupes de colonnes
Comparer des groupes de colonnes prises deux Ă deux Ă©tait dĂ©jĂ possible. Cependant, avec un grand nombre de colonne, lâopĂ©ration pouvait sâavĂ©rer fastidieuse et source dâerreurs.
Le tutoriel prĂ©sente une maniĂšre plus gĂ©nĂ©rique de comparer un grand nombre de colonne de deux fichiers sources avec le mĂȘme en-tĂȘte, par exemple la description dâune mĂȘme population sur deux annĂ©es diffĂ©rentes.
nombre dâĂ©tapes/actions du tutoriel : (2 par fichier source) + 4
lâintĂ©rĂȘt de ce tutoriel rĂ©side surtout dans le fait de rendre la complexitĂ© du traitement indĂ©pendante du nombre (de paires) de colonnes Ă comparer
Comparer des lignes dans un fichier cumul
On souhaite identifier des diffĂ©rences mais cette fois au sein dâun mĂȘme fichier de donnĂ©es dĂ©crivant un cumul.
Il peut sâagir par exemple de deux jeux de donnĂ©es mis bout-Ă -bout dĂ©crivant une mĂȘme population sur deux annĂ©es diffĂ©rentes.
nombre dâĂ©tapes/actions du tutoriel : 3
Créer un fichier cumul à partir de deux sources aux formats proches
Le cas a Ă©tĂ© rencontrĂ© lors dâune analyse de journaux comptables oĂč les jeux de donnĂ©es prĂ©sentaient des rubriques/codes comptables en colonne.
Dâun mois sur lâautre, le nombre et lâordre de ces colonnes/rubriques diffĂ©raient. Le tutoriel permet de sâaffranchir de ces variations de la structure des donnĂ©es.
nombre dâĂ©tapes/actions du tutoriel : (4 par fichier source) + 3
Reconstituer des calendriers
Autre cas de figure rencontré, les données décrivent des personnes présentes sur des périodes avec en colonne la date de début, la date de fin, puis les autres données.
à partir de ces données, on recherche les dates/jours exactes qui ont rassemblé le plus de personne.
La rĂ©solution consiste Ă gĂ©nĂ©rer lâensemble des jours (entre la date de dĂ©but et la date de fin), câest-Ă -dire une description des faits Ă une Ă©chelle unitaire/atomique (chaque ligne dĂ©crivant alors une date et non une pĂ©riode).
Trois approches sont proposées dans le tutoriel : entre 3 et 6 étapes/actions
Fidélisation (suivre une cohorte)
La problématique soulevée était de comprendre les parcours, trajectoires pour une population donnée.
Exemple simplifiĂ© : 4 lignes de donnĂ©es dĂ©crivent (dans lâordre chronologique) les Ă©tats/statuts successifs dâun individu, Ă raison dâun par ligne : a -> b -> c -> d.
dans la pratique, le jeu de donnĂ©es dĂ©crivait une population dâindividu avec des trajectoire de 4 Ă 50 Ă©tats, parfois circulaires a -> b -> a -> d -> c
On souhaite identifier :
- le parcours par rapport Ă lâĂ©tat initial pour lâindividu pris en exemple, le rĂ©sultat sera la relation suivante : a => {b -> c -> d}
- les changements dâĂ©tat (de proche en proche) pour le mĂȘme exemple, le rĂ©sultat sera une liste de couple de valeurs : (a => b), (b => c), (c => d)
- les relations entre lâĂ©tat initial et nâimporte quel autre Ă©tat du parcours mĂȘme exemple, le rĂ©sultat sera trois couples de valeurs : (a => b), (a => c), (a => d)
- les relations entre nâimporte quel Ă©tat du parcours et nâimporte quel autre Ă©tat rencontrĂ© par la suite
mĂȘme exemple, le rĂ©sultat sera six couples :
- (a => b), (a => c), (a => d)
- (b => c), (b => d)
- (c => d)
La fonctionnalitĂ© utilisĂ©e possĂšde une option âscĂ©narioâ avec les 4 choix.
Ainsi, on définit « ce que représente les données » en précisant le ou les séparateurs, et la transformation est appliquée selon la demande.
Les 4 scĂ©narios sont proposĂ©s dans le tutoriel : 3 Ă©tapes/actions (une 4Ăšme Ă©tape est nĂ©cessaire si on souhaite Ă©tudier Ă part le 1er Ă©tat et lâĂ©tat terminal de la trajectoire)
Nouvelles fonctionnalités
La majorité des nouvelles fonctionnalités concerne
- des traitements de dates (décalage, conversion)
- des traitements dâintervalles numĂ©riques
- des traitements de périodes (intervalles de dates)
Elles sont prĂ©sentĂ©es ci-dessous dans leur rubrique respective (dans lâordre dâapparition des rubriques dans Illico et dans la documentation).
(dans lâapplication, chaque Ă©cran permettant dâexĂ©cuter une transformation possĂšde un lien vers la section/page concernĂ©e dans la documentation)
Valeurs en liste : compacter, inverser lâordre, filtrer
compacter les listes
rubrique « valeurs en liste : agrégats"
Pour une liste qui prĂ©sente des rĂ©pĂ©titionsâa,a,b,c,a,d,bâles deux options de cette transformation permettent dâobtenir :
- a,b,c,a,d,b : réduire à une occurrence, pour chaque série
- a,b,c,d : conserver globalement les premiĂšres occurrences
- c,a,d,b : conserver globalement les derniĂšres occurrences
inverser lâordre des Ă©lĂ©ments des listes
rubrique « valeurs en liste : structure"
Pour une colonne dĂ©crivant des listes dâĂ©lĂ©mentsâa:1, b:2â,
- inverse lâordre des valeurs des listes (b:2, a:1)
- inverse lâordre des valeurs des listes imbriquĂ©es seulement (1:a, 2:b)
- inverse lâordre des listes imbriquĂ©es et des valeurs dans ces listes (2:b, 1:a)
filtrer ou exclure les valeurs dâune liste
rubrique « valeurs en liste : filtres"
compare les listes de valeurs dâune colonne par rapport Ă une autre colonne de rĂ©fĂ©rence
- égal
- différent de
- supĂ©rieur/infĂ©rieur ou Ă©gal Ă
- strictement supĂ©rieur/infĂ©rieur Ă
réduire la liste à certaines clés
conserver/exclure certains couples {clé:valeur} lorsque la clé existe dans une autre colonne (qui contient pour chaque ligne la liste de clés à conserver ou à exclure)
Par exempleâet sans devoir utiliser des regex/expressions rationnellesâla liste 2021=3,2022=1,2024=4 pourra ĂȘtre rĂ©duite Ă 2022=1,2024=4 si la clĂ© 2021 existe dans la colonne de contrĂŽle.
Valeurs en liste : lister les permutations, mélanger la liste
rubrique valeurs en liste : enrichissement
lister les permutations des valeurs dâune liste
produit la liste de toutes les permutations des valeurs des listes de la colonne sélectionnée.
mélanger les valeurs de la liste
applique le mélange de Fisher-Yates sur les valeurs de la liste
enlever les accents et les cĂ©dilles de lâen-tĂȘte
rubrique « en-tĂȘte"
surtout utile lorsque lâon part dâun tableur et que lâon cherche Ă injecter les donnĂ©es dans une base de donnĂ©es ne tolĂ©rant pas ces caractĂšres dans les en-tĂȘtes
Permuter les colonnes
rubrique « colonnes : ordre"
Dans le cas dâun export de donnĂ©es depuis un logiciel mĂ©tier, ou suite Ă certaines transformations, certaines colonnes peuvent ĂȘtre gĂ©nĂ©rĂ©es dans un ordre qui ne sâavĂšre pas trĂšs intuitif.
Cette nouvelle fonctionnalitĂ© inverse en 1 clic lâordre des colonnes sĂ©lectionnĂ©es en permutant (au choix)
- 1Êłá” et 2á”, 3á” et 4á”, etc.
- 1Êłá” et derniĂšre, 2á” et avant-derniĂšre, etc.
Numéroter chaque série
rubrique âlignesâ
Dans Illico, le terme sĂ©rie dĂ©signe une suite de lignes contiguĂ«s qui possĂšdent la mĂȘme valeur dans la colonne sĂ©lectionnĂ©e (un identifiant par exemple).
Si lâidentifiant rĂ©apparaĂźt plus loin dans les donnĂ©es, il sâagira dâune nouvelle sĂ©rie.
(une autre transformation permet déjà de numéroter chaque ligne de la série)
Obtenir les méta-données des colonnes sélectionnées
rubrique âagrĂ©gatsâ
Pour les colonnes sélectionnées, indique
- si la colonne ne contient que des valeurs uniques (les valeurs vides sont comptées à part)
- le nombre de lignes sans valeur (valeur vide)
- le nombre de valeurs renseignées (valeur non-vide)
- la cardinalité : nombre de valeurs différentes rencontrées dans la colonne
Décaler les dates
rubrique âtempsâ
dĂ©caler les dates avec 1 constante (saisie par lâutilisateur)
permet de dĂ©caler les dates dâune colonne Ă partir dâune constante (on prĂ©cise lâunitĂ© : nombre de jours, de semaines, de mois ou dâannĂ©es)
décaler des dates selon 1 autre colonne
idem prĂ©cĂ©demment mais en se basant sur les valeurs dâune autre colonne plutĂŽt quâune constante
Jours de la semaine
rubrique âtempsâ
donner le nom des jours de la semaine
la date est alors recodĂ©e : lundi, mardiâŠ
compter chacun des jours de la semaine
nombre de lundis, de mardis, etc. dans lâintervalle dĂ©crit par des colonnes dĂ©but et fin de la pĂ©riode
obtenir le numĂ©ro du jour dans lâannĂ©e
1 pour le 1á”Êł janvier, 32 pour le 1á”Êł fĂ©vrierâŠ
Transformation des périodes « temps : intervalles »
compléter un intervalle de date (2 colonnes : début et fin de la période)
crĂ©e une liste de jour/date dans lâintervalle dĂ©crit
rechercher une date dans un intervalle de date
compare 1 colonne (date recherchée) par rapport à 2 autres colonnes décrivant une période (début et fin de la période)
combiner deux périodes (4 colonnes)
option (au choix) : obtenir
- une fusion : période englobant les deux [min, max]
- une union : période englobant les deux seulement si intersection
- une intersection : plus petite période commune
comparer les dates et une liste de seuils (saisie par lâutilisateur)
détecter des collisions de périodes
portée de la détection
- rechercher pour lâensemble des donnĂ©es
- rechercher dans les lignes qui partagent un mĂȘme identifiant (les lignes comparĂ©es ne sont pas forcĂ©ment contiguĂ«s)
- rechercher dans les lignes qui dĂ©crivent une sĂ©rie (lignes contiguĂ«s avec un mĂȘme identifiant)
Calculs
rubrique âcalculsâ
calculer une opération sur 1 colonne : options
options :
- opérations : minimum, maximum, moyenne, somme
- valeurs vides : ignorées ou traduites par zéro
- calcul : total ou cumulé
- option si cumulé : en partant de la premiÚre ou derniÚre ligne
- résultat : global ou local
- option si local : pour chaque série ou pour chaque identifiant
calculer une opĂ©ration avec 1 constante (saisie par lâutilisateur)
calculer une somme ou une moyenne sur x colonnes
Convertir dâun systĂšme de numĂ©ration Ă un autre
rubrique âenrichissementâ
conversion depuis et vers une base binaire, octale, décimale, hexadécimale
Matrice : transposée, inverser, trier
rubrique âmatriceâ
calculer la transposée
Transpose le jeu de donnĂ©es : les lignes deviennent les colonnes et inversement ; la ligne dâen-tĂȘte devient la premiĂšre colonne ; la premiĂšre colonne devient la ligne dâen-tĂȘte.
inverser lâordre des lignes
Inverse lâordre des lignes du jeu de donnĂ©es : la premiĂšre ligne devient la derniĂšre, la derniĂšre devient la premiĂšre, etc.
trier par ordre alphabétique
options
- ordre des lettres : AâŠZâŠaâŠzâŠĂâŠĂ© ou AâŠĂâŠZâŠaâŠĂ©âŠz
- placer les valeurs vides : au début ou à la fin
trier par ordre numérique
option : les valeurs vides sont
- les plus petites (seront placées au début du tableau)
- les plus grandes (seront placées à la fin du tableau)
- égales à zéro
trier par ordre chronologique
option : les valeurs vides sont
- dans le passé lointain
- dans un futur lointain
- égales à la date du jour
- égales à une date précise (à saisir)
Commentaires : voir le flux Atom ouvrir dans le navigateur