我有两个带有日期时间信息的数据框,df_stream是一个事件流,并且df_events是时间上的特定事件。例如:
蓝色是流,红线是事件。窗口位于30min事件的任一侧,时间粒度为30s。
如何为给定的时间窗口和时间粒度生成所有事件的流平均行为的数据帧/图表?
流数据框如下所示:
streamEventId
DateTime
2020-08-20 10:39:24 44791313
2020-08-20 10:40:30 44791721
2020-08-20 10:40:54 44694121
2020-08-20 10:41:16 44902962
2020-08-20 10:42:04 44622569
事件数据框如下所示:
DateTime
0 2020-11-17 09:49:00
1 2020-11-17 10:49:00
2 2020-11-17 11:11:00
3 2020-11-17 11:16:00
4 2020-11-17 12:11:00
我已经设法打印了每个事件的图表,并打印了它们各自的窗口,但我正在努力结合逻辑。我也使用iterrows我不喜欢的。
我目前的做法:
for i in df_events[["DateTime"]].iterrows():
date_time = i[1].values[0]
before = date_time - pd.Timedelta(window)
after = date_time + pd.Timedelta(window)
df_stream_temp = df_stream.loc[before:after].copy()
plt.figure(figsize=(20, 2))
df_stream_mva = (
df_stream.streamEventId.groupby(pd.Grouper(freq="30s"))
.count()
.loc[before:after]
)
y_height = df_stream_mva.max()
ax = df_stream_mva.plot()
plt.vlines(df_events.DateTime.to_list(), 0, y_height, color="lightcoral")
ax.set_ylim([0, y_height])
这给出了一系列很好的图表:
等等...
我想计算然后用置信区间绘制上述平均值。


