Si se tiene un dataset con transacciones históricas de usuarios, y se quiere hacer variables que midan acumulados en cada momento (eje: monto consumo en últimos 30dias, promedio consumo el últimos 90 días, etc.), puede usarse el siguiente script que usa funciones de pandas para calcularlo.
Conceptualmente seria así:
Script:
import pandas as pd def cumulative(data, id2, fdate, not_feature, windows=[30, 90]): """calcula acumulados para describir tendencia""" data2 = data.copy() headers = data2.columns.values.tolist() headers = [x for x in headers if x not in not_feature] for col in headers: print('calculating windows for:',col) for d in windows: nd = str(d)+'d' data2[col+'_sum_'+nd] = data2.set_index('fecha').groupby(id2)[col].rolling(nd).sum().values return data2 if __name__ == '__main__': path = 'https://www.dropbox.com/s/3g4rz8a0lpvkag4/payment.csv?dl=1' data = pd.read_csv(path) data['fecha'] = pd.to_datetime(data['fecha']) data = data.sort_values(['user_id', 'fecha'], ascending=[True, True]) not_feature = ['fecha', 'user_id'] data2 = cumulative(data, 'user_id', 'fecha', not_feature, windows=[30, 90]) data2.to_csv('data2.csv')
No hay comentarios:
Publicar un comentario