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 calcular un promedio móvil en un dataframe?

Tengo una columna de un dataframe que se ve así:

CurrentCreditLines
0   5.0
1   14.0
2   NaN
3   5.0
4   19.0

con 110k registros, ¿cómo puedo calcular el promedio móvil? También necesito que sea redondeado y con tipo float, intenté esto:

test["CurrentCreditLines"].rolling(min_periods=1, center=True, window=12).mean().round().float()

pero obtuve el siguiente error:

'Series' object has no attribute 'float'
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para calcular la media móvil de una columna en un dataframe de Pandas, puedes usar la función rolling. La sintaxis de esta función es la siguiente:

    df[nombre_columna].rolling(tamaño_ventana).mean()
    

    donde tamaño_ventana es el tamaño de la ventana móvil y nombre_columna es el nombre de la columna para la cual deseas calcular la media móvil.

    En tu caso, puedes utilizar el siguiente código para calcular la media móvil de la columna CurrentCreditLines:

    df['CurrentCreditLines'].rolling(window=12, min_periods=1, center=True).mean().round().astype(float)
    

    Aquí, estamos usando un tamaño de ventana de 12 y establecemos el parámetro center en True para asegurarnos de que el cálculo móvil esté centrado en cada registro. También establecemos min_periods en 1 para garantizar que obtengamos un resultado válido incluso si hay valores faltantes en los datos.

    Finalmente, utilizamos el método round para redondear el resultado al número entero más cercano y utilizamos el método astype para convertir el resultado al tipo float.

    Ten en cuenta que el objeto Series devuelto por la función rolling no tiene un atributo float, de ahí el error que encontraste. En cambio, puedes utilizar el método astype para convertir el resultado al tipo deseado.

Comments are closed.