Una media móvil es simplemente la media de un cierto número de períodos anteriores en una serie de tiempo.
Para calcular la media móvil de una o más columnas en un DataFrame de pandas, podemos usar la siguiente sintaxis:
df [' nombre_columna ']. rolling ( rolling_window ). significa ()
Este tutorial proporciona varios ejemplos de cómo utilizar esta función en la práctica.
Ejemplo: calcular la media móvil en pandas
Supongamos que tenemos el siguiente DataFrame de pandas:
importar numpy como np
importar pandas como pd
#Haga que este ejemplo sea reproducible
np. al azar . semilla (0)
#create dataset
period = np. arange (1, 101, 1)
leads = np. al azar . uniforme (1, 20, 100)
ventas = 60 + 2 * período + np. al azar . normal (loc = 0, escala = .5 * período, tamaño = 100)
gl = pd. DataFrame ({' período ': período, ' clientes potenciales ': clientes potenciales, ' ventas ': ventas})
#ver las primeras 10 filas
df. cabeza (10)
el período conduce a las ventas
0 1 11.427457 61.417425
1 2 14.588598 64.900826
2 3 12.452504 66.698494
3 4 11,352780 64,927513
4 5 9.049441 73.720630
5 6 13.271988 77.687668
6 7 9.314157 78.125728
7 8 17,943687 75,280301
8 9 19.309592 73.181613
9 10 8.285389 85.272259
Podemos usar la siguiente sintaxis para crear una nueva columna que contenga la media móvil de ‘ventas’ de los 5 períodos anteriores:
# encontrar la media móvil de los 5 períodos de ventas anteriores df [' rolling_sales_5 '] = df [' sales ']. rodante (5). significa () #ver las primeras 10 filas df. cabeza (10) el período conduce a las ventas rolling_sales_5 0 1 11.427457 61.417425 NaN 1 2 14.588598 64.900826 NaN 2 3 12.452504 66.698494 NaN 3 4 11,352780 64,927513 NaN 4 5 9.049441 73.720630 66.332978 5 6 13.271988 77.687668 69.587026 6 7 9.314157 78.125728 72.232007 7 8 17,943687 75,280301 73,948368 8 9 19.309592 73.181613 75.599188 9 10 8.285389 85.272259 77.909514
Podemos verificar manualmente que las ventas medias móviles que se muestran para el período 5 son la media de los 5 períodos anteriores:
Media móvil en el período 5: (61,417 + 64,900 + 66,698 + 64,927 + 73,720) / 5 = 66,33
Podemos usar una sintaxis similar para calcular la media móvil de varias columnas:
# encontrar la media móvil de los 5 periodos de clientes potenciales anteriores df [' rolling_leads_5 '] = df [' leads ']. rodante (5). significa () # encontrar la media móvil de los 5 períodos de clientes potenciales anteriores df [' rolling_sales_5 '] = df [' ventas ']. rodante (5). significa () #ver las primeras 10 filas df. cabeza (10) período genera ventas rolling_sales_5 rolling_leads_5 0 1 11.427457 61.417425 NaN NaN 1 2 14.588598 64.900826 NaN NaN 2 3 12.452504 66.698494 NaN NaN 3 4 11,352780 64,927513 NaN NaN 4 5 9.049441 73.720630 66.332978 11.774156 5 6 13.271988 77.687668 69.587026 12.143062 6 7 9.314157 78.125728 72.232007 11.088174 7 8 17,943687 75,280301 73,948368 12,186411 8 9 19.309592 73.181613 75.599188 13.777773 9 10 8.285389 85.272259 77.909514 13.624963
También podemos crear una gráfica de línea rápida usando Matplotlib para visualizar las ventas sin procesar en comparación con la media móvil de ventas:
importar matplotlib. pyplot como plt
plt. plot (df [' rolling_sales_5 '], label = ' Media
móvil
') plt. plot (df [' ventas '], label = ' Datos brutos ') plt. leyenda ()
plt. ylabel (' Ventas ')
plt. xlabel (' Período ')
plt. mostrar ()

La línea azul muestra la media móvil de ventas de 5 períodos y la línea naranja muestra los datos de ventas sin procesar.
Recursos adicionales
Cómo calcular la correlación de rodadura en pandas
Cómo calcular la media de columnas en pandas
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/