Я искал для этого какое-то время и не нашел правильного решения. У меня есть временные ряды с парой миллионов строк, который имеет довольно странную структуру:Pandas TimeSeries С продолжительностью события
VisitorID Time VisitDuration
1 01.01.2014 00:01 80 seconds
2 01.01.2014 00:03 37 seconds
Я хотел бы знать, сколько людей на веб-сайте в течение определенного момента. Для этого мне пришлось бы превратить эти данные во что-то большее:
Time VisitorsPresent
01.01.2014 00:01 1
01.01.2014 00:02 1
01.01.2014 00:03 2
...
Но делать что-то подобное представляется крайне неэффективным. Мой код будет:
dates = {}
for index, row in data.iterrows():
for i in range(0,int(row["duration"])):
dates[index+pd.DateOffset(seconds=i)] = dates.get(index+pd.DateOffset(seconds=i), 1) + 1
Тогда я мог бы передать это в серии и быть в состоянии ресамплинг:
result = pd.Series(dates)
result.resample("5min",how="mean").plot()
Не могли бы вы мне точку в правильном направлении?
EDIT ---
Привет HYRY Вот голова()
uid join_time_UTC duration 0 1 2014-03-07 16:58:01 2953 1 2 2014-03-07 17:13:14 1954 2 3 2014-03-07 17:47:38 223
Вы можете преобразовать данные to enter_time и exit_tim e, а затем подсчитывать эти два раза за каждую секунду. разные из двух отсчетов - это изменение счета во втором. Затем используйте 'cumsum()' для разных счетчиков, вы получаете подсчет онлайн в каждую секунду. Если вы публикуете некоторые реальные данные, я могу показать вам код. – HYRY