Alors on est en 2025 et y’a encore des gens qui utilisent du CSV comme source de données. Non mais “allo quoi” comme on disait en 2013 !

Si vous êtes un développeur, data scientist ou juste quelqu’un qui galère avec des tonnes de données “tabulaires”, cet article va vous faire gagner des heures de votre vie, parce que 10 Go de CSV dans Excel, et bien ça crash ! Même avec votre propre script Python, ça peut aussi mouliner un peu si vous ne faites pas d’optimisation particulière.

Alors que faire ???

Et bien il est temps de sortir l’artillerie lourde en passant à Xan, un outil développé en Rust et optimisé jusqu’à l’os qui vous permettra de traiter, filtrer, et transformer vos tonnes de données en quelques secondes là où d’autres outils rendraient l’âme instantanément. Imaginez un peu, ce que pandas fait en 30 secondes, Xan le fait en 3 secondes, tout ça en consommant 10 fois moins de mémoire !

view

La commande xan view transforme votre terminal en une interface de données élégante et fonctionnelle.

Alors bien sûr, ça se passe dans le terminal, sous macOS, Windows et Linux et comme d’autres outils du même style tels que OctoSQL et Miller, il vous rendra bien des services. Car oui, Xan, qui a été développé par le Médialab de Science Po est un fork de XSV complètement repensé pour les besoins spécifiques des sciences sociales et de l’analyse de données web.

correlation

Oui, c’est bien un graphique de corrélation généré directement dans votre terminal. Magique !

Voici les principales commandes de l’outil :

  • xan view : prévisualisation des données dans le terminal
  • xan filter : filtrage des lignes selon une condition
  • xan map : création de nouvelles colonnes
  • xan sort : tri des données
  • xan join : jointure de fichiers CSV
  • xan stats : statistiques descriptives
  • xan frequency : tableaux de fréquence
  • xan hist : histogrammes dans le terminal
  • xan dedup : dédoublonner un fichier
  • xan transform : pour opérer des changements sur le texte (par exemple passer en minuscule certaines données…etc)
  • xan fill : Pour remplir avec des zéro ou autre, des endroits du CSV où les valeurs sont absentes
  • …etc… soit plus de 50 commandes au total couvrant presque tous les besoins liés aux CSV et à l’analyse des données.

series

Analyser des séries temporelles directement dans votre terminal, sans une seule ligne de matplotlib

L’intérêt comme je vous le disais, c’est que Xan peut traiter d’énormes fichiers avec peu de mémoire grâce notamment à une parallélisation automatique intelligente des traitements. Pour vous donner une idée, là où un script pandas standard consommerait 4 Go de RAM pour traiter un fichier CSV de 1 Go, Xan peut accomplir la même tâche avec seulement 100 Mo de mémoire.

Pour l’installer, rien de plus simple, y’a des commandes pour tous les OS mais le mieux c’est encore de faire sur PC (Linux, Windows) :

Ou sous macOS :

heatmap

Une heatmap digne d’une visualisation D3.js, mais générée entièrement dans votre terminal

Xan dispose également de son propre langage d’expression baptisé Moonblade (nommé d’après l’épée magique de Xan dans Baldur’s Gate, les connaisseurs reconnaîtront…). C’est une syntaxe à mi chemin entre Python et Javascript, permettant de traiter facilement les CSV.

Voici quelques exemples concrets:

  • Filtrage : xan filter 'count > 10' data.csv
  • Transformation : xan transform name 'upper(name)' data.csv
  • Calcul : xan map 'tweet_count / retweet_count' ratio data.csv
  • Agrégation: xan agg 'sum(retweet_count), mean(retweet_count)' data.csv

small multiples

Des “small multiples” comme dirait Tufte, générés en un clin d’œil dans votre terminal

Cela permet de piloter Xan dans vos programmes, sans avoir besoin d’installer une lib. Et c’est tout aussi optimisé ! Il y a également des fonctions pour traiter tout ce qui est dates, chaines de caractères, URLs…etc. En utilisant des pipes Unix pour chainer les commandes, vous serez le maitre du monde !

Pour vous donner un exemple concret, voici comment analyser rapidement un jeu de données de médias :

# Télécharger un jeu de données d'exemple
curl -LO https://github.com/medialab/corpora/raw/master/polarisation/medias.csv

# Explorer rapidement le fichier
xan headers medias.csv
xan count medias.csv
xan view medias.csv

# Quelques analyses basiques
xan stats -s indegree,foundation_year medias.csv
xan frequency -s edito medias.csv | xan hist

# Filtrer et transformer
xan filter 'foundation_year > 2000' medias.csv > recents.csv
xan map 'fmt("{} ({})", name, foundation_year)' display_name recents.csv > result.csv

Bref, encore un super outil qui va vous faire gagner grave du temps ! Utilisez-le par exemple dans vos scripts Python ou intégrez-le dans vos pipelines de traitement de données, vous ne serez pas déçus ! Même la documentation est ouf !


Source link

Categorized in: