Exploiter tous les fichiers CSV, petits ou (très) grands, avec quelques outils simples

Pour manipuler rapidement des fichiers CSV, quelle que soit leur taille, quelques outils simples vous mettront définitivement à l’aise. J’en utilise deux en complémentarité : iNZight et EmEditor. Bien que plus limité, Notepad++  est aussi digne de considération.

Quel soulagement que de pouvoir consulter – en un clic – le contenu d’un fichier de plusieurs centaines de Mo, le filtrer, le transposer ou l’agréger de façon visuelle, pour mieux se concentrer sur la donnée et comment la faire parler ! En fin de traitements, il m’arrive fréquemment de basculer vers Datawrapper ou Géoclip-Statistiques locales pour produire – tout aussi vite – de superbes graphiques ou cartes d’analyse.  

En première intention, vous utilisez probablement, comme je l’ai longtemps fait, Excel, Calc ou Google Sheets, et vous avez certainement rencontré leurs limites (RechercheV, vous avez aimé ?)

Les outils dont je vais parler dans cette série d’articles sont étonnamment puissants et véloces, tous gratuits (sauf EmEditor, mais il ne coute pas grand-chose). Avec iNZight, il est même possible d’échanger directement avec les développeurs, très cordiaux et réactifs en dépit des 12 heures de décalage horaire avec l’Université d’Auckland (NZ = Nouvelle-Zélande) !

Posons tout d’abord le cahier des charges idéal, que peut-on attendre d’un outil visuel de manipulation et valorisation de fichiers CSV ?

Dans le monde du format textuel CSV,
les chausse-trappes sont fréquentes

Vous ne vous êtes jamais fait piéger en cliquant un peu vite sur un bien gros fichier CSV ? Moi si, à en être réduit à “tuer” le programme ouvrant par défaut, s’épuisant en vain à rassembler la mémoire nécessaire. Même un tableur peut déclarer forfait avec certains jeux de données (trop de lignes ou trop de colonnes). Avec des outils adaptés, optimisés, seules les premières lignes seront lues et affichées, et les suivantes uniquement à la demande : vous pourrez alors en analyser rapidement le contenu.

Les codes des communes françaises commencent parfois par un 0. Et alors ? Il ne saurait être question de voir cette information altérée du fait d’une conversion automatique en nombre. Une date risque-t-elle d’être traitée comme un texte, vous empêchant de la manipuler à votre guise ? Le bon outil vous aidera à la décoder comme il convient, pour la trier ou en extraire la seule année par exemple.

Face à un fichier de plusieurs millions de lignes et/ou des centaines de colonnes, la priorité est d’abord d’en extraire le seul sous-ensemble pertinent pour votre étude : peut-être simplement quelques milliers de lignes et une dizaine de colonnes.

Lorsque l’on publie soi-même un fichier CSV, il importe de s’assurer de sa validité : la structure est-elle correctement délimitée, les colonnes présentent-elles un contenu homogène ? La plupart des outils étudiés ici permettent de le vérifier.

Trois outils légers, polyvalents et véloces

iNZight, conçu par le département de statistique de l’Université d’Auckland, est un outil polyvalent, ambitieux tout en restant intuitif.

EmEditor est un éditeur de texte supérieurement armé pour ouvrir et requêter des fichiers très volumineux, même de plusieurs Go.

Notepad++sans doute le plus connu des trois, présente, avec les plugins CSV Lint et CSV Query, d’intéressantes fonctions de manipulation de fichiers CSV.

Les tableaux qui suivent comparent les performances des trois programmes. Dans les articles suivants, je détaillerai leur fonctionnement à partir d’exemples concrets.

Fonctions de prise en mainiNZightEmEditorNotepad++
Prise en compte du délimiteur français ";"
Reconnaissance auto de colonnes avec des valeurs commençant par 0
Ajustement du type de chaque colonne
Gestion de l'encodage UTF-8
Fichiers de plus de 100 colonnes
Fichiers de plus d'un million de lignes
Filtrage de colonnes
Filtrages multiples (combinés avec ET ou OU)
Extraction/suppression de colonnes
Déplacement de colonnes
Découpage en fichiers plus petits
Indicateurs de synthèse sur la table et chaque colonne (min/max, nb de valeurs distinctes...)
Validation de la cohérence du CSV
Échantillonnage
Copier/coller possible pour charger des données
Appréciation8/108/106/10

Nettoyages et recodages

Dépendante de la qualité des données d’origine, la deuxième étape consiste à consolider la structure de la table, identifier les colonnes-clés, repérer les doublons éventuels, et surtout s’assurer de la cohérence du contenu de chaque colonne

Après la première étape, le jeu de données obtenu devrait disposer de colonnes correctement typées : caractère, numérique ou date. Elles peuvent toutefois comporter des valeurs manquantes, dont il faudra préciser le statut : laisser en l’état (valeurs NULL ou vides), à remplacer par des 0, à estimer à partir de la dernière valeur non nulle précédemment renseignée, à partir de la moyenne des cellules environnantes, etc.

Du fait de leur plus grande hétérogénéité, les colonnes de type caractère demandent souvent un travail complémentaire : élimination de blancs superflus, recodage de modalités vers une nomenclature plus maniable, ajout de 0 manquants pour aboutir à un code de longueur déterminée, passage en majuscules ou minuscules, désaccentuation…

Fonctions de nettoyage et mise au propreiNZightEmEditorNotepad++
Remplacement des valeurs manquantes (avec la dernière valeur renseignée dans la colonne...)
Repérage des doublons
Tris multicritères
Recodage de modalités
Conversion (par colonne) en majuscules/minuscules/initiales capitalisées
Ajout de caractères à gauche pour obtenir un contenu de longueur fixe
Suppression d'espaces inutiles (avant et/ou après)
Désaccentuation
Appréciation8/107/103/10

Création de nouvelles variables

Les nomenclatures combinent souvent plusieurs niveaux d’information. On sera ainsi amené à découper un code complexe en sous composants, par exemple pour extraire le département d’un code commune. Ou à l’inverse combiner année, mois et jour pour construire un unique champ date.

Parce qu’un ratio ou un taux d’évolution est souvent plus expressif, il est utile de définir, par une formule de calcul simple, un ou plusieurs indicateurs dérivés. Des opérations statistiques plus fines comme des calculs de rang ou des discrétisations facilitent l’élaboration de palmarès ou de cartographies thématiques.

Fonctions de créationiNZightEmEditorNotepad++
Colonne dérivée par extraction/séparation
Colonne dérivée par concaténation
Colonne dérivée par formules numériques
Numérotation automatique
Calcul de rangs
Discrétisation de variables numériques
Standardisation
Appréciation9/105/105/10

Agrégations, jointures, transpositions

Mais ce qui fait vraiment la différence entre la plupart de ces outils, et même avec des logiciels ultra-communs comme Excel, Calc et Google Sheets, ce sont les jointures, les pivots et les regroupements statistiques. À ce jeu, iNZight impressionne par sa flexibilité, et EmEditor surprend, proposant une riche palette de fonctionnalité sur un terrain où l’on attend pas un éditeur de texte, si puissant soit-il.

Excel a popularisé le tableau croisé dynamique, mais l’opération inverse est tout autant utile, voire davantage : celle qui permet de passer d’un format large (beaucoup de colonnes) à un format long (quelques colonnes clés, au prix de plus de lignes). Les outils de datavisualisation privilégient bien souvent le format long.

Avec les jointures, vous pourrez étendre les possibilités d’analyse de votre jeu d’origine, associant par exemple à des données communales le code d’un bassin de vie ou d’une intercommunalité, tirés d’une table de passage, ou complétant des données économiques par des indicateurs démographiques issus d’un autre fichier CSV. 

Les jointures facilitent aussi les agrégations vers des niveaux plus synthétiques.

Fonctions de tableiNZightEmEditorNotepad++
Jointure de plusieurs fichiers CSV sur colonnes clés
Agrégations de variables numériques par colonnes clés (sommes, comptages, moyenne, min/max...)
Transposition format large => format long (unpivot)
Transposition format long => format large (pivot/tableau croisé)
Concaténation de deux fichiers de même structure
Appréciation9/107/105/10

Visualisations et traitements statistiques

L’étonnant iNZight offre bien d’autres leviers d’analyse : comme son nom l’indique, il entend faire parler vos données de façon intuitive, mobilisant par exemple datavisualisation exploratoire, techniques de lissage, et modélisation statistique. Les cartes thématiques complètent la gamme des outils graphiques proposés, lesquels tirent parti des bibliothèques R qui forment le socle de cet outil.

Fonctions d'analyseiNZightEmEditorNotepad++
Graphiques par colonne
Graphiques par paires
Séries temporelles (lissages, désaisonnalisation...)
Cartographie thématique
Régressions
Analyse factorielle, en composantes principales
Appréciation8/10NANA

Caractéristiques générales

Dans ce tableau final j’aborde quelques caractéristiques plus générales, vous permettant de mieux apprécier l’opportunité de tester vous-même ces différents logiciels.

Caractéristiques généralesiNZightEmEditorNotepad++
LicenseGNU General Public LicensePropriétaireGNU General Public License
PrixGratuit40 €Gratuit
Évaluation 30 jours
Open source (github)
Éditeur/mainteneurUniversité d'AucklandYutaka Emura - EmurasoftDon HO
NationalitéNZUSA-JPNFR-CN
Version étudiée4.221.4.78.2.1
Version française
Création201119972003
Plugins indispensablesCSVLint, CSVQuery
Langage d'extensionRregexregex
Poids du programme900 Mo (R compris)60 Mo20 Mo
Systèmes d'exploitation supportésWindows, OSX, LinuxWindowsWindows
Conservation des étapes d'un traitement
Formats en lecturecsv, xls(x), json, rds, SAS, Stata, SPSStxt, csv...txt, csv...

Des outils complémentaires de R ou JavaScript

L’usager régulier de la donnée le sait bien : une grande partie de son temps consiste, avant même toute analyse statistique ou visuelle, à prendre le contrôle d’un jeu de données, l’avoir à sa main et le façonner à sa guise, pour naviguer dans les meilleures conditions vers la phase de réelle valeur ajoutée. 

Il est rageant de devoir perdre des minutes, voire des heures, pour des opérations aussi basiques qu’ouvrir un fichier, en inspecter le contenu, extraire ce dont on a besoin, le compléter ou l’agréger. Investir dans les bons outils peut vous faire gagner un temps considérable, et partant vous ouvrir de larges horizons, pour des explorations démultipliées.

Les langages de programmation ne sont pas indispensables. Même pour ceux qui les maitrisent – j’en suis – , ils ne sont pas toujours les plus pertinents en première intention. Ces considérations ont présidé à la création d’iNZight, auquel je consacre un billet détaillé.

Pour aller plus loin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.