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 agregar datos geográficamente segregados por fecha en Python?

Estoy trabajando con datos de series de tiempo que se desglosan por varios niveles geográficos (provincia y región de salud). Los datos se desglosan aún más por grupos de edad. Me gustaría agregar los datos primero hasta el nivel de región de salud y luego hasta el nivel de provincia, dependiendo de la necesidad.

Datos de ejemplo:

df = pd.DataFrame({'Date':['1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022','1/1/2022'],
             'province':[35,35,35,35,35,35,35,35,35],
             'health region':[1,1,1,2,2,2,3,3,3],
              'age group':[1,2,3,1,2,3,1,2,3],'cases':[6,1,9,7,9,0,4,2,2]})

Salida deseada al agregar hasta el nivel de región de salud:

df_hr = pd.DataFrame({'Date':['1/1/2022','1/1/2022','1/1/2022'],
                     'province':[35,35,35],
                     'health region':[1,2,3],'cases':[16,16,8]})

Cuando uso el siguiente código:

df = df.groupby('health region').sum()

Pierdo las fechas.

Cuando intento:

df =  df.groupby(['health region','Date']).sum()

o

df =  df.groupby(['health region',df['Date'].dt.date]).sum()

Obtengo un error ValueError: mixed datetimes and integers in passed array

¿Hay alguna manera fácil de hacer esto? Estaba pensando en usar un bucle para dividir los datos por región de salud, guardar las fechas únicas, agregar, fusionar las fechas nuevamente y luego juntar las regiones sanitarias nuevamente. Pero preferiría no hacerlo si hay una manera fácil de hacerlo.

Gracias,
i.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar los datos primero hasta la región sanitaria y luego hasta la provincia, puedes usar la función groupby en pandas. Primero, agrupa los datos por ‘región sanitaria’ y ‘Fecha’ y luego agrega la columna ‘casos’ utilizando la función sum:

    df_health_region = df.groupby(['región sanitaria', 'Fecha']).sum().reset_index()
    

    Esto te dará un DataFrame con los datos agregados por región sanitaria y fecha. Para agregar hasta el nivel de provincia, agrupa los datos nuevamente por ‘provincia’ y ‘Fecha’ y agrega la columna ‘casos’ utilizando sum:

    df_province = df_health_region.groupby(['provincia', 'Fecha']).sum().reset_index()
    

    Esto te dará el resultado deseado con los datos agregados por provincia y fecha.

    Ten en cuenta que necesitas restablecer el índice después de cada operación groupby para obtener un DataFrame en lugar de una Serie agrupada.

Comments are closed.