Como llegar promedios semanales de valores de columna y número de la semana para el año correspondiente en base a los registros de datos diarios con los pandas

Bhobbl988:

Todavía estoy aprendiendo Python y me gustaría pedir su ayuda con el siguiente problema:

Tengo un archivo CSV con los datos diarios y estoy buscando una solución para resumir por semanas calendario. Así que para los datos maqueta continuación he filas se extendían más de 2 semanas (semana 14 (semana actual) y 13 semanas (la semana pasada)). Ahora tengo que encontrar una manera de agrupar filas por semana calendario, reconocen que año al que pertenecen y calcular la suma semanas y semanas de media. En el ejemplo de entrada de archivo que sólo hay dos identificadores diferentes. Sin embargo, en el archivo de datos real que espero muchos más.

input.csv

id   date      activeMembers
1  2020-03-30       10
2  2020-03-30       1
1  2020-03-29       5
2  2020-03-29       6
1  2020-03-28       0
2  2020-03-28       15
1  2020-03-27       32
2  2020-03-27       10
1  2020-03-26       9
2  2020-03-26       3
1  2020-03-25       0
2  2020-03-25       0
1  2020-03-24       0
2  2020-03-24       65
1  2020-03-23       22
2  2020-03-23       12
...

deseada OUTPUT.CSV

id   week      WeeklyActiveMembersSum   WeeklyAverageActiveMembers
1   202014              10                        1.4
2   202014              1                         0.1
1   202013              68                        9.7
2   202013              111                      15.9

mi objetivo es:

import pandas as pd

df = pd.read_csv('path/to/my/input.csv')

Aquí que había necesidad de agrupar por 'id' + 'fecha' columna (por semana Calendario - no estoy seguro si esto es posible) y crear una columna de 'semana' con el número de la semana, y luego sumar valores '' Miembros activos de la semana en particular , guardar como columna 'WeeklyActiveMembersSum' en mi archivo de salida y, finalmente, calcular '' weeklyAverageActiveMembers para la semana en particular. Estaba experimentando con GroupBy y parámetros ISIN pero sin suerte hasta ahora ... ¿Tendría que ir con algo similar a esto:

df.groupby('id', as_index=False).agg({'date':'max',
                                  'activeMembers':'sum'}  

y finalmente salvar a todos como OUTPUT.CSV:

df.to_csv('path/to/my/output.csv', index=False)

¡Gracias por adelantado!

Quang Hoang:

Parece que estoy recibiendo un entorno semana diferente que lo hace:

# should convert datetime column to datetime type
df['date'] = pd.to_datetime(df['date'])

(df.groupby(['id',df.date.dt.strftime('%Y%W')], sort=False)
   .activeMembers.agg([('Sum','sum'),('Average','mean')])
   .add_prefix('activeMembers')
   .reset_index()
)

Salida:

   id    date  activeMembersSum  activeMembersAverage
0   1  202013                10             10.000000
1   2  202013                 1              1.000000
2   1  202012                68              9.714286
3   2  202012               111             15.857143

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=387773&siteId=1
Recomendado
Clasificación