es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener un promedio móvil con la media de la ventana anterior

Estoy buscando desesperadamente una solución con pandas. Tal vez podrías ayudarme.

Estoy buscando un promedio móvil teniendo en cuenta el promedio anterior.

df se ve así:

índice cuenta
0 4
1 6
2 10
3 12

Ahora, usando la función rolling(window=2).mean(), obtendría algo como esto:

índice cuenta r_mean
0 4 NaN
1 6 5
2 10 8
3 12 11

Me gustaría considerar el promedio del primer cálculo, de esta manera:

índice cuenta r_mean
0 4 NaN
1 6 5
2 10 7.5
3 12 9.5

donde,

fila1: (4+6)/2=5

fila2: (5+10)/2=7.5

fila3: (7.5+12)/2=9.75

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, puedes utilizar la función expanding().mean() en pandas. Esta función calcula la media de los valores hasta la fila actual.

    Primero, puedes crear una nueva columna con la media acumulativa:

    df['expanding_mean'] = df['count'].expanding().mean()
    

    Esto producirá el siguiente dataframe:

    index count expanding_mean
    0 4 4.000000
    1 6 5.000000
    2 10 6.666667
    3 12 8.000000

    Luego, puedes crear una nueva columna para la media móvil teniendo en cuenta la media anterior:

    df['rolling_mean'] = (df['expanding_mean'].shift() + df['count']) / 2
    

    Esto producirá el resultado deseado:

    index count expanding_mean rolling_mean
    0 4 4.000000 NaN
    1 6 5.000000 5.000000
    2 10 6.666667 7.500000
    3 12 8.000000 9.333333

    Ten en cuenta que en la primera fila, la media móvil es NaN porque no hay una media anterior para considerar.

    ¡Espero que esto ayude!

Comments are closed.