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()
.
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()
.
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.
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.
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.
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
- Documentación de la biblioteca estándar para statistics
- mathtips.com: Mediana para datos de tipo de frecuencia discreta y continua (datos agrupados) – Discusión de la mediana para datos continuos
- PEP 450 – Añadiendo un módulo de estadísticas a la biblioteca estándar.