En este artículo, veremos cómo calcular la media móvil de un marco de datos por intervalo de tiempo usando Pandas en Python.
Pandas dataframe.rolling() es una función que nos ayuda a hacer cálculos en una ventana móvil. En otras palabras, tomamos una ventana de un tamaño fijo y realizamos algunos cálculos matemáticos sobre ella.
Sintaxis: DataFrame.rolling(ventana, min_periods=Ninguno, centro=Falso, win_type=Ninguno, on=Ninguno, eje=0).mean()
Parámetros :
- ventana : Tamaño de la ventana. Esa es la cantidad de observaciones que tenemos que tomar para el cálculo de cada ventana.
- min_periods : menor número de observaciones en una ventana requerida para tener un valor (de lo contrario, el resultado es NA).
- center : Se utiliza para colocar las etiquetas en el centro de la ventana.
- win_type : se utiliza para establecer el tipo de ventana.
- on : columna de fecha y hora de nuestro marco de datos en el que tenemos que calcular la media móvil.
- eje : entero o string, por defecto 0
Conjunto de datos utilizado: Tesla_Stock
Implementación paso a paso
Paso 1: Importación de bibliotecas
Python3
# import pandas as pd import pandas as pd
Paso 2: Importación de datos
Python3
# importing Data tesla_df = pd.read_csv('Tesla_Stock.csv', index_col='Date', parse_dates=True) # printing the dataFrame tesla_df.head(10)
Salida :
Calcularemos la media móvil de la columna ‘Cerrar’ del DataFrame.
Paso 3: Cálculo de la media móvil
Python3
# Updating the dataFrame with just the # column 'Close' as others columns are # of no use right now we have used .to_frame # which converts Series to a DataFrame. tesla_df = tesla_df['Close'].to_frame() # calculating Rolling mean and storing it # into a new column of existing dataFrame # we have set the window as 30 and rest all # parameters are set to default. tesla_df['MA30'] = tesla_df['Close'].rolling(30).mean() # Rolling mean is also called as Moving Average , # hence we have used the notation MA # and MA30 is the moving average (rolling mean) # of 30 days # printing dataframe tesla_df
Producción:
Las primeras 29 filas de la columna MA30 tendrán un valor NULL y el primer valor no NULL estará en la fila 30. Ahora calcularemos la media móvil con una ventana de 200.
Python3
# calculating Rolling mean and storing it into # a new column of existing dataFrame we have set # the window as 200 and rest all parameters are # set to default. tesla_df['MA200'] = tesla_df['Close'].rolling(200).mean() # Rolling mean is also called as Moving Average, hence # we have used the notation MA and MA200 is the moving # average (rolling mean) of 200 days # printing dataframe tesla_df
Salida :
Para ‘MA200’, el primer no NULL estará en la fila 200. Ahora, grafiquemos ‘MA30’, ‘MA200’ y ‘Cerrar’ para una mejor visualización
Paso 4: Trazado
Python3
# importing matplotlib module import matplotlib.pyplot as plt plt.style.use('default') # %matplotlib inline: only draw static # images in the notebook %matplotlib inline tesla_df[['Close', 'MA30', 'MA200']].plot( label='tesla', figsize=(16, 8))
PRODUCCIÓN:
Publicación traducida automáticamente
Artículo escrito por bistpratham y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA