Explorez vos CSV avec csv2datasette

Vous vous souvenez WTFcsv, conçu par Rahul Bhargava et Catherine D’Ignazio, présenté au public français à Data Literacy Conference en 2018 ? Il s’agit d’un petit outil permettant d’explorer très rapidement le contenu d’un fichier CSV à travers de petits graphes ou des données statistiques. Idéal pour explorer rapidement un jeu de données open data.

J’ai toujours apprécié cet outil mais il a plusieurs défauts qui freinent son usage :

  • il ne gère pas bien les différentes formes de CSV (points-virgules, TSV, etc.)
  • c’est un outil SAS hébergé je ne sais où, je ne lui confierais pas de fichiers hors open data
  • enfin, il ne peut pas ouvrir de gros fichiers

Pour toutes ces raisons, et comme je suis un fan de Datasette, j’ai créé csv2datasette, un petit script en bash qui permet d’ouvrir un fichier directement dans Datasette, avec la possibilité d’obtenir automatiquement des stats pour chaque colonne : « the column name, the number of unique values, the number of filled rows, the number of missing values, the minimum value, the maximum value, the median, the 10th, 25th, 50th, 75th and 90th centiles, the average, the sum, the shortest string, the longest string, the number of numeric values, the number of text values, the number of probable ISO dates, the top 3 frequent values ». Pratique pour bien comprendre le contenu de chaque colonne : les manques, les valeurs aberrantes, etc.

Une fois le CSV chargé, vous profitez de toutes les fonctionnalités de Datasette qui vous permettent d’aller assez loin dans l’exploration, avec son interface utilisateur simplifiée ou directement en SQL.

C’est assez modeste, le design est discutable, le truc est un peu trop geeky (il faut installer Datasette, plus l’extension REGEXP pour SQLite) et testé seulement sous Linux, mais passé toutes ces barrières, c’est un outil qui peut peut-être vous faire gagner du temps si vous avez l’habitude d’explorer des fichiers CSV.

Comme il m’est très utile, je me suis dit qu’il pourrait en intéresser certains ici.

Et vous, qu’utilisez-vous en pareil cas ?

2 « J'aime »

Il existe aussi un plugin pour ajouter une UI d’import de CSV :

Perso pour explorer ou datatouiller un fichier CSV en local j’aime bien OpenRefine. La force de Datasette est dans le cas d’usage de publication d’un fichier.

Dans les trucs récents mais que j’ai encore jamais essayés, je pense que Observable Framework c’est le turfu (points bonus si c’est combiné avec DuckDB-WASM).

Ce qu’en pense Simon Willison (créateur de Datasette) :

3 « J'aime »

Ca a l’air super @CharlesNepote mais tu m’as perdu sur le bash.

Pour les noobs comme moi, je recommande Exploratory qui est bâti sur R et donne accès à beaucoup de fonctions de R dans une interface amicale-utilisatrice (user-friendly) : https://exploratory.io/
Il y a une version gratuite dès lors que les données sont rendues publiques (le même modèle que Tableau Public) que j’utilise avec mes étudiants : Exploratory Public
(:warning:Exploratory n’est pas open source alors qu’il est bâti entièrement sur des composants ouverts)

Evidemment, j’ai toujours en tête WTFCSV qui est vraiment super. Bah, Exploratory crée une page pour chaque data frame. Voici un exemple avec les données (fascinantes) d’un des très nombreux csv de la DSA transparency database : sor_instagram_2024_03_17_full_00013_00003

En terme d’interface, je trouve ça génial. On a un aperçu de chacune des colonnes, du nombre d’enregistrements qui évolue après chaque étape du traitement de données. Pédagogiquement, c’est ce que j’ai trouvé de mieux pour former à des usages avancés des données. Bien mieux que le tableur où en tant qu’enseignant, c’est impossible de savoir comment les données ont été transformées. Là on a résumé étape par étape et on peut revenir en arrière.

2 « J'aime »

Et sinon quand je veux faire un truc sérieux et reproductible, je fais du R. Et j’utilise le package {skimr} qui fait un super aperçu des données : Using Skimr

Le résumé indique les variables par type avec des stats descriptives et un histogramme en ASCII du plus bel effet :
skim_dataset.jpg

lire cet article sur skimr

Huggingface a fait une interface assez cool d’exploration de ses datasets, exemple :
https://huggingface.co/datasets/Cohere/beir-embed-english-v3/viewer/arguana-corpus/train

1 « J'aime »

Et on peut citer aussi l’explorateur de CSV de data.gouv.fr qui fonctionne très bien : exemple

1 « J'aime »

@samgoeta Sur ce dernier exemple on est plus sur de la visualisation de CSV et moins sur le profilage de données (data profiling), non ?

Oui effectivement mais comme tu peux le voir sur la dernière colonne, il y a quand même un aperçu des valeurs les plus fréquentes dans l’explorateur

1 « J'aime »

Pour ceux qui utilise VSCode, je conseille l’extension Data Wrangler, qui peut faciliter l’exploration et le nettoyage des données.

5 « J'aime »

Sur R, un autre package sympa pour explorer ses données en une ligne de code :

summarytools::dfSummary(data)

Screenshot from 2024-03-19 15-29-49

3 « J'aime »

Toutes vos réponses sont hyper intéressantes ! Certaines je connaissais, d’autres seulement de nom, et d’autres pas du tout (les packages R, Data Wrangler).

Ce que j’ai cherché à faire avec csv2datasette, c’est un outil à la fois très rapide d’usage, local, et en ligne de commande, ce que je retrouve moins dans vos solutions SAS ou avec des outils où il faut lancer préalablement l’interface, faire Fichier / importer > + sélectionner des options, etc. J’utilise aussi énormément Visidata qui fait des choses très simples comme des histogrammes mais on atteint rapidement ses limites.

Peut-être c’est possible en R de lancer le chargement des packages et du CSV en une seule ligne de commande ? J’ai tout juste quelques notions en R…

1 « J'aime »

@CharlesNepote disons qu’il faudrait au minimum deux lignes de code sur R, une pour charger le CSV (si le package est déjà installé, deux sinon) :

install.packages("readr") #si le package n'est pas déjà installé
data <- readr::read_csv("path/to/data.csv")

Une autre pour l’explorer :

summarytools::dfSummary(data)

@Diane_Thierry petite question juste pour évaluer la faisabilité : pour que tout se passe en local, est-ce qu’avec flexdashboard (ou autre), on pourrait depuis une page web (sans charger R) importer un fichier et générer l’aperçu avec dfSummary ?
Ou sinon avec une appli Shiny mais les données passent par les serveurs de RStudio, non ?

Avec webR (R en Web assembly) tout peut se faire dans le navigateur sans serveur. Mais quitte à aller dans cette direction mieux vaut sans doute s’appuyer sur DuckDB, beaucoup plus robuste je pense.

1 « J'aime »

@samgoeta sans même passer par R en ligne il y a des applications Shiny qui ont été construites déjà, par exemple celle-ci.