Я пытаюсь создать столбчатую диаграмму общего времени за билет на одного пользователя в день, мой DataFrame
выглядит следующим образом:Python панд ресэмплировать в день, группы по значению
date_timestamp ticket time user
23/03/2015 12:00:00 D-146 120 blgo
04/04/2015 12:00:00 D-173 15 blgo
29/04/2015 12:00:00 P-110 60 frle
29/04/2015 15:47:29 P-113 180 chki
29/04/2015 15:47:55 P-113 30 chki
30/04/2015 12:00:00 P-108 240 frle
30/04/2015 12:00:00 P-116 120 hahe
30/04/2015 13:46:25 P-116 240 hahe
01/05/2015 09:20:48 P-113 120 frle
01/05/2015 09:39:13 P-107 45 frle
Каждый бар на графике будет представлять одного пользователя в один день - высота бара будет представлять общее время, проведенное в этот день за считанные минуты, и будет разделено пропорционально количеству времени, которое пользователь выполнил в каждом билете в тот день.
Я знаю, что я могу получить общее время в день для каждого пользователя, используя следующие:
df[(df.user == 'blgo')]['time'].resample('B',how='sum').fillna(0)
Я также знаю, что я могу сгруппировать dataframe билетом следующим образом:
df2=df['time'].groupby(df['ticket'])
Предположительно, для достижения моей цели мне нужен кадр данных для каждого пользователя, дни с индексом, билеты в виде столбцов, и каждая ячейка будет общим временем, зарегистрированным в этом билете в этот день.
Любая помощь или совет будут оценены.
Хотите ли вы _fraction_ времени каждый пользователь провел на данный билет на определенный день, чтобы быть представленными, или _time_? (Например, в вашем примере пользователь «frle» каким-то образом потратил 54 часа на P-108 30/04/2015, в то время как пользователь «провел» шесть часов на P-116 в тот день, если они оба будут представлены как «100 % от времени пользователя »или увеличено до абсолютных часов?) –
Я хочу * время * - в некоторых случаях это может привести к тому, что ежедневная сумма будет составлять более 24 часов в день, но все в порядке. Тем не менее, я поправлю таблицу, потому что это может смутить некоторых людей, спасибо, что указали это. – Charon