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 main | iNZight | EmEditor | Notepad++ |
---|---|---|---|
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éciation | 8/10 | 8/10 | 6/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 propre | iNZight | EmEditor | Notepad++ |
---|---|---|---|
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éciation | 8/10 | 7/10 | 3/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éation | iNZight | EmEditor | Notepad++ |
---|---|---|---|
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éciation | 9/10 | 5/10 | 5/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 table | iNZight | EmEditor | Notepad++ |
---|---|---|---|
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éciation | 9/10 | 7/10 | 5/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'analyse | iNZight | EmEditor | Notepad++ |
---|---|---|---|
Graphiques par colonne | ✔ | ||
Graphiques par paires | ✔ | ||
Séries temporelles (lissages, désaisonnalisation...) | ✔ | ||
Cartographie thématique | ✔ | ||
Régressions | ✔ | ||
Analyse factorielle, en composantes principales | ✔ | ||
Appréciation | 8/10 | NA | NA |
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érales | iNZight | EmEditor | Notepad++ |
---|---|---|---|
License | GNU General Public License | Propriétaire | GNU General Public License |
Prix | Gratuit | 40 € | Gratuit |
Évaluation 30 jours | ✔ | ||
Open source (github) | ✔ | ✔ | |
Éditeur/mainteneur | Université d'Auckland | Yutaka Emura - Emurasoft | Don HO |
Nationalité | NZ | USA-JPN | FR-CN |
Version étudiée | 4.2 | 21.4.7 | 8.2.1 |
Version française | ✔ | ✔ | |
Création | 2011 | 1997 | 2003 |
Plugins indispensables | CSVLint, CSVQuery | ||
Langage d'extension | R | regex | regex |
Poids du programme | 900 Mo (R compris) | 60 Mo | 20 Mo |
Systèmes d'exploitation supportés | Windows, OSX, Linux | Windows | Windows |
Conservation des étapes d'un traitement | ✔ | ✔ | |
Formats en lecture | csv, xls(x), json, rds, SAS, Stata, SPSS | txt, 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
Billets connexes dans ce blog
- iNZight : le tapis volant néo-zélandais de la statistique
- Deux puissants éditeurs et requêteurs de fichiers CSV : EmEditor et Notepad++
Autres outils intuitifs pouvant lire du CSV
Exemple de prise de tête avec CSV