statistics — Cálculos estadísticos

Propósito:Implementaciones de cálculos estadísticos comunes

El módulo statistics implementa muchas fórmulas estadísticas comunes para cálculos eficientes usando varios tipos numéricos de Python (int, float, Decimal, y Fracción).

Promedios

Hay tres formas de promedios soportadas, la media, la mediana, y el modo. Calcula la media aritmética con mean().

statistics_mean.py
from statistics import *

data = [1, 2, 2, 5, 10, 12]

print('{:0.2f}'.format(mean(data)))

El valor de retorno para enteros y número de coma flotante es siempre un float. Para datos de entrada Decimal y Fraction, el resultado es de el mismo tipo que las entradas.

$ python3 statistics_mean.py

5.33

Calcula el punto de datos más común en un conjunto de datos usando mode().

statistics_mode.py
from statistics import *

data = [1, 2, 2, 5, 10, 12]

print(mode(data))

El valor de retorno siempre es un miembro del conjunto de datos de entrada. Porque mode() trata la entrada como un conjunto de valores discretos y cuenta las reapariciones, las entradas en realidad no necesitan ser valores numéricos.

$ python3 statistics_mode.py

2

Hay cuatro variaciones para calcular la mediana, o el valor medio. Las tres primeras son versiones sencillas de lo algoritmo usual, con diferentes soluciones para manejar conjuntos de datos con número par de elementos.

statistics_median.py
from statistics import *

data = [1, 2, 2, 5, 10, 12]

print('median     : {:0.2f}'.format(median(data)))
print('low        : {:0.2f}'.format(median_low(data)))
print('high       : {:0.2f}'.format(median_high(data)))

median()` encuentra el valor central, y si el conjunto de datos tiene un número par de valores promedia los dos elementos del medio. median_low() siempre devuelve un valor del conjunto de datos de entrada, utilizando el menor de los dos elementos intermedios para conjuntos de datos con un número par de artículos. median_high() devuelve de manera similar el mayor de los dos elementos intermedios.

$ python3 statistics_median.py

median     : 3.50
low        : 2.00
high       : 5.00

La cuarta versión del cálculo de la mediana, median_grouped(), trata las entradas como datos continuos y calcula la mediana del percentil del 50% al encontrar primero el rango mediano usando el ancho de intervalo provisto y luego interpolando dentro de ese rango usando la posición de los valores del conjunto de datos que caen en ese rango.

statistics_median_grouped.py
from statistics import *

data = [10, 20, 30, 40]

print('1: {:0.2f}'.format(median_grouped(data, interval=1)))
print('2: {:0.2f}'.format(median_grouped(data, interval=2)))
print('3: {:0.2f}'.format(median_grouped(data, interval=3)))

A medida que aumenta el ancho del intervalo, la mediana calculada para los mismos datos cambia.

$ python3 statistics_median_grouped.py

1: 29.50
2: 29.00
3: 28.50

Varianza

Las estadísticas usan dos valores para expresar cómo se dispersa un conjunto de valores en relación al promedio. La varianza es el promedio del cuadrado de la diferencia de cada valor y el promedio, y la desviación estándar es la raíz cuadrada de la varianza (que es útil porque tomar la raíz cuadrada permite expresar la desviación estándar en las mismas unidades que los datos de entrada). Grandes valores para varianza o la desviación estándar indican que el conjunto de datos está disperso, mientras que los valores pequeños indican que los datos se agrupan más cerca del promedio.

statistics_variance.py
from statistics import *
import subprocess


def get_line_lengths():
    cmd = 'wc -l ../[a-z]*/*.py'
    out = subprocess.check_output(
        cmd, shell=True).decode('utf-8')
    for line in out.splitlines():
        parts = line.split()
        if parts[1].strip().lower() == 'total':
            break
        nlines = int(parts[0].strip())
        if not nlines:
            continue  # skip empty files
        yield (nlines, parts[1].strip())


data = list(get_line_lengths())

lengths = [d[0] for d in data]
sample = lengths[::2]

print('Basic statistics:')
print('  count     : {:3d}'.format(len(lengths)))
print('  min       : {:6.2f}'.format(min(lengths)))
print('  max       : {:6.2f}'.format(max(lengths)))
print('  mean      : {:6.2f}'.format(mean(lengths)))

print('\nPopulation variance:')
print('  pstdev    : {:6.2f}'.format(pstdev(lengths)))
print('  pvariance : {:6.2f}'.format(pvariance(lengths)))

print('\nEstimated variance for sample:')
print('  count     : {:3d}'.format(len(sample)))
print('  stdev     : {:6.2f}'.format(stdev(sample)))
print('  variance  : {:6.2f}'.format(variance(sample)))

Python incluye dos conjuntos de funciones para calcular la varianza y la desviación estándar, dependiendo de si el conjunto de datos representa toda la población o una muestra de la población. Este ejemplo usa wc para contar el número de líneas en los archivos de entrada para todos los ejemplos de programas y luego usa pvariance() y pstdev() para calcular la varianza y la desviación estándar para toda la población antes de usar variance() y stddev() para calcular la varianza de la muestra y la desviación estándar para un subconjunto creado mediante el uso de la longitud de cada segundo archivo encontrado.

$ python3 statistics_variance.py

Basic statistics:
  count     : 959
  min       :   4.00
  max       : 228.00
  mean      :  28.62

Population variance:
  pstdev    :  18.52
  pvariance : 342.95

Estimated variance for sample:
  count     : 480
  stdev     :  21.09
  variance  : 444.61

Ver también