Cómo calcular las medias móviles en Python

Una media móvil es una técnica que se puede utilizar para suavizar los datos de series de tiempo para reducir el «ruido» en los datos e identificar más fácilmente patrones y tendencias.

La idea detrás de un promedio móvil es tomar el promedio de un cierto número de períodos anteriores para llegar a un «promedio móvil» para un período determinado.

Este tutorial explica cómo calcular promedios móviles en Python.

Ejemplo: promedios móviles en Python

Supongamos que tenemos la siguiente matriz que muestra las ventas totales de una determinada empresa durante 10 períodos:

x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]

Método 1: use la función cumsum ().

Una forma de calcular la media móvil es utilizar la función cumsum ():

importar numpy como np

#define la función de promedio móvil 
def moving_avg (x, n):
    cumsum = np.cumsum (np.insertar (x, 0, 0)) 
    return (cumsum [n:] - cumsum [: - n]) / float (n)

#calcular la media móvil utilizando los 3 períodos de tiempo anteriores
 n = 3
moviendo_avg (x, n):

matriz ([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])

A continuación se explica cómo interpretar la salida:

  • El promedio móvil en el tercer período es 47. Esto se calcula como el promedio de los primeros tres períodos: (50 + 55 + 36) / 3 = 47 .
  • La media móvil en el cuarto período es 46,67. Esto se calcula como el promedio de los tres períodos anteriores: (55 + 36 + 49) / 3 = 46,67 .

Y así.

Método 2: usa pandas.

Otra forma de calcular la media móvil es escribir una función basada en pandas:

importar pandas como pd

#define la matriz para usar y el número de períodos anteriores para usar en el cálculo 
x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]
n = 3

#calcular media móvil
pd.Series (x) .rolling (window = n) .mean (). iloc [n-1:]. values

matriz ([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])

Este método produce exactamente los mismos resultados que el método anterior, pero tiende a ejecutarse más rápido en matrices más grandes.

Tenga en cuenta que también puede especificar cualquier número de períodos de tiempo anteriores para usar en el cálculo de la media móvil. Por ejemplo, quizás prefieras usar n = 5:

#utiliza 5 períodos anteriores para calcular la media móvil 
n = 5

#calcular media móvil
pd.Series (x) .rolling (window = n) .mean (). iloc [n-1:]. values

matriz ([54.8, 59.8, 69., 79., 85.2, 89.2])

Cuantos más períodos utilice para calcular la media móvil, más «suavizada» será la línea de la media móvil.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Deja un comentario en el muro del agradecimiento para que todos sepán que Statologos explica mejor y facil y si te es viable puedes hacer una donación:

Puedes hacer un donativo
Muro del agradecimiento

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

La distancia euclidiana entre dos vectores, A y B, se calcula como: Distancia euclidiana = √ Σ (A i -B…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!