83 votes

utilitaire en ligne de commande pour imprimer les statistiques des nombres sous linux

Je me retrouve souvent avec un fichier qui comporte un numéro par ligne. Je finis par l'importer dans Excel pour visualiser des éléments tels que la médiane, l'écart-type, etc.

Existe-t-il un utilitaire en ligne de commande sous Linux pour faire la même chose ? J'ai généralement besoin de trouver la moyenne, la médiane, le minimum, le maximum et l'écart-type.

1 votes

Ceci est probablement pertinent : stackoverflow.com/questions/214363/ .

0 votes

Clôture du vote sur la base d'une récapitulation des outils. stats.stackexchange.com/questions/24934/ || serverfault.com/questions/548322/

0 votes

18voto

ghoti Points 14996

Moyenne :

awk '{sum += $1} END {print "mean = " sum/NR}' filename

Médiane :

gawk -v max=128 '

    function median(c,v,    j) { 
       asort(v,j) 
       if (c % 2) return j[(c+1)/2]
       else return (j[c/2+1]+j[c/2])/2.0
    }

    { 
       count++
       values[count]=$1
       if (count >= max) { 
         print  median(count,values); count=0
       } 
    } 

    END { 
       print  "median = " median(count,values)
    }
    ' filename

Mode :

awk '{c[$1]++} END {for (i in count) {if (c[i]>max) {max=i}} print "mode = " max}' filename

Ce mode de calcul nécessite un nombre pair d'échantillons, mais vous voyez comment cela fonctionne...

Écart-type :

awk '{sum+=$1; sumsq+=$1*$1} END {print "stdev = " sqrt(sumsq/NR - (sum/NR)**2)}' filename

18voto

olejorgenb Points 21

Un outil de plus : https://www.gnu.org/software/datamash/

# Example: calculate the sum and mean of values 1 to 10:
$ seq 10 | datamash sum 1 mean 1
55 5.5

Il se peut qu'il soit plus couramment packagé (le premier outil que j'ai trouvé est en tout cas prépackagé pour nix).

9voto

Tommaso Points 41

Au cas où, il y a datastat Un programme simple pour Linux qui calcule des statistiques simples à partir de la ligne de commande. Par exemple, il est possible d'obtenir des statistiques simples à partir de la ligne de commande,

cat file.dat | datastat

affichera la valeur moyenne de toutes les lignes pour chaque colonne de file.dat. Si vous avez besoin de connaître l'écart-type, le min, le max, vous pouvez ajouter l'option --dev , --min y --max respectivement.

datastat permet d'agréger des lignes en fonction de la valeur d'une ou plusieurs colonnes "clés". Par exemple,

cat file.dat | datastat -k 1

produira, pour chaque valeur différente trouvée dans la première colonne (la "clé"), la moyenne de toutes les autres valeurs de colonne telles qu'agrégées parmi toutes les lignes ayant la même valeur dans la clé. Vous pouvez utiliser plusieurs colonnes comme champs clés (par exemple, -k 1-3, -k 2,4 etc...).

Il est écrit en C++, fonctionne rapidement et avec une faible occupation de la mémoire, et peut être associé à d'autres outils tels que cut , grep , sed , sort , awk etc.

8voto

Matt Parker Points 7373

data_hacks est un utilitaire en ligne de commande Python pour les statistiques de base.

Le premier exemple de cette page produit les résultats souhaités :

$ cat /tmp/data | histogram.py
# NumSamples = 29; Max = 10.00; Min = 1.00
# Mean = 4.379310; Variance = 5.131986; SD = 2.265389
# each * represents a count of 1
    1.0000 -     1.9000 [     1]: *
    1.9000 -     2.8000 [     5]: *****
    2.8000 -     3.7000 [     8]: ********
    3.7000 -     4.6000 [     3]: ***
    4.6000 -     5.5000 [     4]: ****
    5.5000 -     6.4000 [     2]: **
    6.4000 -     7.3000 [     3]: ***
    7.3000 -     8.2000 [     1]: *
    8.2000 -     9.1000 [     1]: *
    9.1000 -    10.0000 [     1]: *

8voto

dpmcmlxxvi Points 66

Vous pouvez également envisager d'utiliser clistats . Il s'agit d'un outil d'interface de ligne de commande hautement configurable permettant de calculer des statistiques pour un flux de nombres délimités en entrée.

Options E/S

  • Les données d'entrée peuvent provenir d'un fichier, de l'entrée standard ou d'un tuyau.
  • La sortie peut être écrite dans un fichier, sur la sortie standard ou sur un tuyau.
  • La sortie utilise des en-têtes qui commencent par "#" pour permettre le transfert vers gnuplot.

Options d'analyse

  • Détection d'un signal, d'une fin de fichier ou d'une ligne vierge pour arrêter le traitement
  • Le commentaire et le caractère de délimitation peuvent être définis
  • Les colonnes peuvent être filtrées lors du traitement
  • Les lignes peuvent être filtrées du traitement sur la base d'une contrainte numérique.
  • Les lignes peuvent être filtrées du traitement sur la base d'une contrainte de chaîne de caractères.
  • Les premières lignes d'en-tête peuvent être ignorées
  • Nombre fixe de lignes pouvant être traitées
  • Les délimiteurs en double peuvent être ignorés
  • Les lignes peuvent être transformées en colonnes
  • Appliquer strictement le principe selon lequel seules les lignes de même taille sont traitées.
  • Une ligne contenant les titres des colonnes peut être utilisée pour titrer les statistiques de sortie

Options statistiques

  • Statistiques sommaires (nombre, minimum, moyenne, maximum, écart-type)
  • Covariance
  • Corrélation
  • Décalage des moindres carrés
  • Pente des moindres carrés
  • Histogramme
  • Données brutes après filtrage

NOTE : Je suis l'auteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X