Advertisement
  1. Code
  2. Python

Los módulos matemáticos de Python: Estadísticas

Scroll to top
Read Time: 6 min
This post is part of a series called Mathematical Modules in Python.
Mathematical Modules in Python: Decimal and Fractions
Mathematical Modules in Python: Statistics

() translation by (you can also view the original English article)

El análisis estadístico de los datos nos ayuda a dar sentido a la información en su conjunto. Esto tiene aplicaciones en muchos campos como bioestadística y análisis de negocios.

En lugar de pasar por puntos de datos individuales, sólo una mirada a su valor medio colectivo o varianza puede revelar tendencias y características que podríamos haber perdido observando todos los datos en formato "en bruto". También hace que la comparación entre dos grandes conjuntos de datos sea más fácil y más significativa.

Teniendo en cuenta estas necesidades, Python nos ha proporcionado el módulo estadísticas.

En este tutorial, aprenderá sobre diferentes maneras de calcular promedios y medir la propagación de un conjunto dado de datos. A menos que se indique lo contrario, todas las funciones de este módulo admiten conjuntos de datos basados en int, float, decimal y fraction como entrada.

Cálculo de media

Puede utilizar la función mean(datos) para calcular la media de algunos datos dados. Se calcula dividiendo la suma de todos los puntos de datos por el número de puntos de datos. Si los datos están vacíos, se levantará un StatisticsError. Aquí están algunos ejemplos:

1
import statistics
2
from fractions import Fraction as F
3
from decimal import Decimal as D
4
5
statistics.mean([11, 2, 13, 14, 44])
6
# returns 16.8

7
8
statistics.mean([F(8, 10), F(11, 20), F(2, 5), F(28, 5)])
9
# returns Fraction(147, 80)

10
11
statistics.mean([D("1.5"), D("5.75"), D("10.625"), D("2.375")])
12
# returns Decimal('5.0625')

Aprendiste muchas funciones para generar números aleatorios en nuestro último tutorial. Vamos a usarlos ahora para generar nuestros datos y ver si la media final es igual a lo que esperamos que sea.

1
import random
2
import statistics
3
4
data_points = [ random.randint(1, 100) for x in range(1,1001) ]
5
statistics.mean(data_points)
6
# returns 50.618

7
8
data_points = [ random.triangular(1, 100, 80) for x in range(1,1001) ]
9
statistics.mean(data_points)
10
# returns 59.93292281437689

Con la función randint(), se espera que la media esté cerca del punto medio de ambos extremos, y con la distribución triangular, se supone que está cerca de low + high + mode / 3. Por lo tanto, la media en la Primero y segundo caso debe ser de 50 y 60,33 respectivamente, lo que está cerca de lo que realmente obtuvo.

Cálculo de la Moda

La media es un buen indicador del promedio, pero algunos valores extremos pueden resultar en un promedio que está lejos de la ubicación central real. En algunos casos es más deseable determinar el punto de datos más frecuente en un conjunto de datos. La función mode() devolverá el punto de datos más común a partir de datos numéricos discretos y no numéricos. Esta es la única función estadística que se puede utilizar con datos no numéricos.

1
import random
2
import statistics
3
4
data_points = [ random.randint(1, 100) for x in range(1,1001) ]
5
statistics.mode(data_points)
6
# returns 94

7
8
data_points = [ random.randint(1, 100) for x in range(1,1001) ]
9
statistics.mode(data_points)
10
# returns 49

11
12
data_points = [ random.randint(1, 100) for x in range(1,1001) ]
13
statistics.mode(data_points)
14
# returns 32

15
16
mode(["cat", "dog", "dog", "cat", "monkey", "monkey", "dog"])
17
# returns 'dog'

El modo de enteros aleatoriamente generados en un rango dado puede ser cualquiera de esos números, ya que la frecuencia de ocurrencia de cada número es impredecible. Los tres ejemplos en el fragmento de código anterior prueban ese punto. El último ejemplo nos muestra cómo podemos calcular el modo de datos no numéricos.

Cálculo de Mediana

Dependiendo de moda para calcular un valor central puede ser un poco engañoso. Como acabamos de ver en la sección anterior, siempre será el punto de datos más popular, independientemente de todos los demás valores del conjunto de datos. Otra forma de determinar una ubicación central es utilizando la función median(). Devolverá el valor mediano de los datos numéricos dados calculando la media de dos puntos medios si es necesario. Si el número de puntos de datos es impar, devuelve el punto medio. Si el número de puntos de datos es par, devuelve el promedio de dos valores medianos.

El problema con la función median() es que el valor final puede no ser un punto de datos real cuando el número de puntos de datos es par. En estos casos, puede utilizar median_low() o median_high() para calcular la mediana. Con un número par de puntos de datos, estas funciones devolverán el valor menor y mayor de los dos puntos medios respectivamente.

1
import random
2
import statistics
3
4
data_points = [ random.randint(1, 100) for x in range(1,50) ]
5
statistics.median(data_points)
6
# returns 53

7
8
data_points = [ random.randint(1, 100) for x in range(1,51) ]
9
statistics.median(data_points)
10
# returns 51.0

11
12
data_points = [ random.randint(1, 100) for x in range(1,51) ]
13
statistics.median(data_points)
14
# returns 49.0

15
16
data_points = [ random.randint(1, 100) for x in range(1,51) ]
17
statistics.median_low(data_points)
18
# returns 50

19
20
statistics.median_high(data_points)
21
# returns 52

22
23
statistics.median(data_points)
24
# returns 51.0

En el último caso, la mediana baja y alta fueron 50 y 52. Esto significa que no había ningún punto de datos con valor 51 en nuestro conjunto de datos, pero la median() calculaba todavía que la mediana era 51.0.

Medición de la difusión de datos

Determinar cuánto los puntos de datos se desvían del valor típico o medio del conjunto de datos es tan importante como calcular el valor central o medio en sí. El módulo de estadística tiene cuatro funciones diferentes para ayudarnos a calcular esta extensión de datos.

Puede utilizar la función de pvariance(data, mu=None) para calcular la varianza de población de un conjunto de datos determinado.

El segundo argumento en este caso es opcional. El valor de mu, cuando se proporciona, debe ser igual a la media de los datos dados. La media se calcula automáticamente si falta el valor. Esta función es útil cuando se desea calcular la variacion de una población completa. Si sus datos son sólo una muestra de la población, puede utilizar la función de variance(data, xBar=None) para calcular la varianza de la muestra. Aquí, xBar es la media de la muestra dada y se calcula automáticamente si no se proporciona.

Para calcular la definición estándar de población y la desviación estándar de la muestra, puede utilizar las funciones pstdev(data, mu=None) y stdev(data, xBar=None), respectivamente.

1
import statistics
2
from fractions import Fraction as F
3
4
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
5
6
statistics.pvariance(data)     # returns 6.666666666666667

7
statistics.pstdev(data)        # returns 2.581988897471611

8
statistics.variance(data)      # returns 7.5

9
statistics.stdev(data)         # returns 2.7386127875258306

10
11
more_data = [3, 4, 5, 5, 5, 5, 5, 6, 6]
12
13
statistics.pvariance(more_data)   # returns 0.7654320987654322

14
statistics.pstdev(more_data)      # returns 0.8748897637790901

15
16
some_fractions = [F(5, 6), F(2, 3), F(11, 12)]
17
statistics.variance(some_fractions)
18
# returns Fraction(7, 432)

19

Como se desprende del ejemplo anterior, una menor variacion implica que más puntos de datos están más próximos en valor a la media. También puede calcular la desviación estándar de decimales y fracciones.

Consideraciones finales

En este último tutorial de la serie, aprendimos sobre las diferentes funciones disponibles en el módulo de estadísticas. Pudo haber observado que los datos dados a las funciones fueron ordenados en la mayoría de los casos, pero no tienen que ser siempre asi. He utilizado listas ordernadas en este tutorial porque facilitan entender cómo el valor devuelto por diferentes funciones está relacionado con los datos de entrada.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.