← retour aux snippets

datamash: calculs statistiques par groupe

Agrèger des colonnes (moyenne, médiane, somme, min, max, écart-type) groupées par clé.

objectif

Calculer rapidement des statistiques sur des fichiers CSV/TSV directement en ligne de commande.

code minimal

# CSV avec en-têtes: group by "team", moyenne de "score"
datamash -t, --header-in --header-out -g team mean score < results.csv

utilisation

# multiples métriques par groupe
datamash -t, --header-in --header-out -g team count score mean score median score min score max score < results.csv

# TSV (par défaut: tab) et tri préalable (recommandé pour cohérence)
sort -k1,1 data.tsv | datamash --header-in --header-out -g key sum 2 sstdev 3

variante(s) utile(s)

# changer le séparateur de sortie vers ','
datamash -t, --output-delimiter=, --header-in -g team mean score < results.csv

# retraiter un JSON en CSV puis datamash (jq)
jq -r '.items[] | [.team, .score] | @csv' data.json | datamash -t, -g 1 mean 2

notes

  • -t, indique le séparateur d’entrée; sans option, c’est TAB.
  • triez par clé (ex: sort -k1,1) pour éviter des regroupements non déterministes.
  • --header-in/--header-out conservent les noms de colonnes.