python - iloc - pandas set index
Media móvil: pandas (2)
La media móvil devuelve una Series
, solo debe agregarla como una nueva columna de su DataFrame
( MA
) como se describe a continuación.
Para obtener información, la función rolling_mean
ha quedado obsoleta en las versiones más recientes de pandas. He usado el nuevo método en mi ejemplo, mire abajo una cita de la documentación de los pandas
Advertencia Antes de la versión 0.18.0,
pd.rolling_*
,pd.expanding_*
ypd.ewm*
eran funciones de nivel de módulo y ahora están en desuso. Estos se reemplazan mediante el uso deRolling
,Expanding
yEWM.
objetos y una llamada al método correspondiente.
df[''MA''] = df.rolling(window=5).mean()
print(df)
# Value MA
# Date
# 1989-01-02 6.11 NaN
# 1989-01-03 6.08 NaN
# 1989-01-04 6.11 NaN
# 1989-01-05 6.15 NaN
# 1989-01-09 6.25 6.14
# 1989-01-10 6.24 6.17
# 1989-01-11 6.26 6.20
# 1989-01-12 6.23 6.23
# 1989-01-13 6.28 6.25
# 1989-01-16 6.31 6.27
Me gustaría agregar un cálculo de promedio móvil a mi serie temporal de intercambio.
Datos originales de Quandl
Exchange = Quandl.get ("BUNDESBANK / BBEX3_D_SEK_USD_CA_AC_000", authtoken = "xxxxxxx")
Value
Date
1989-01-02 6.10500
1989-01-03 6.07500
1989-01-04 6.10750
1989-01-05 6.15250
1989-01-09 6.25500
1989-01-10 6.24250
1989-01-11 6.26250
1989-01-12 6.23250
1989-01-13 6.27750
1989-01-16 6.31250
Cálculo de Avarage móvil
MovingAverage = pd.rolling_mean (Exchange, 5)
Value
Date
1989-01-02 NaN
1989-01-03 NaN
1989-01-04 NaN
1989-01-05 NaN
1989-01-09 6.13900
1989-01-10 6.16650
1989-01-11 6.20400
1989-01-12 6.22900
1989-01-13 6.25400
1989-01-16 6.26550
Me gustaría agregar el promedio móvil calculado como una nueva columna a la derecha después de ''Valor'' usando el mismo índice (Fecha). Preferiblemente también me gustaría cambiar el nombre del promedio móvil calculado a ''MA''
En caso de que esté calculando más de una media móvil:
for i in range(2,10):
df[''MA{}''.format(i)] = df.rolling(window=i).mean()
Entonces puedes hacer un promedio agregado de todos los MA
df[[f for f in list(df) if "MA" in f]].mean(axis=1)