index iloc example columns python python-3.x pandas moving-average

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_* y pd.ewm* eran funciones de nivel de módulo y ahora están en desuso. Estos se reemplazan mediante el uso de Rolling , Expanding y EWM. 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)