Я искал повсюду, но пока не нашел хорошего способа сделать это.У меня есть датафрейм с собственными данными текстовых сообщений.В нем есть столбцы «utctime», «отправитель», «получатель» и «сообщение».То, что я хотел бы сделать, это сгруппировать это по произвольному минутному периоду времени (например, 10 или 20 минут), а затем посмотреть, в течение нескольких лет, количество сообщений, которые я отправляю за этот период времени в течение одного дня.
Первые несколько строк данных выглядят так, и это продолжается еще на 2 года:
utctime sender recipient message
0 2016-11-25 18:00:25.877000+00:00 Person1 Me message1
1 2016-11-25 18:50:58.694000+00:00 Person2 Me message2
2 2016-11-25 18:54:41.871000+00:00 Me Person2 message3
3 2016-11-25 18:54:58.583000+00:00 Person2 Me message4
4 2016-11-25 19:01:19.694000+00:00 Me Person2 message5
Каков наилучший способ сделать это, чтобы я мог видеть свои собственныеЧастота обмена текстовыми сообщениями с шагом в 20 минут с 00:00 до 23: 40?
Пока у меня есть еще одна функция, которая объединяет время в один день:
def time_of_day(data, tz_info):
utctime = data.utctime.dt.tz_convert(tz_info)
data['timeofday'] = pd.to_datetime({'year': 2017,
'month': 1,
'day': 1,
'hour': utctime.dt.hour,
'minute': utctime.dt.minute,
'second': utctime.dt.second})
return data
ЧтоЗатем я группирую с помощью пользовательского группировщика:
sf = pytz.timezone('US/Pacific')
timedelta = '10min'
grouper = pd.Grouper(key='timeofday', freq=timedelta)
data = time_of_day(data, sf) # data is returned in time of day for tz
freq = data.groupby(grouper).count()
Есть ли лучший способ сделать это?