在 Pandas 数据帧中聚合跨越多天的时间戳

Aggregating timestamps spanning multiple days in Pandas dataframes

我是 pandas 的新手,我正在尝试根据时间绘制事件数量,在不同的时间分辨率

我的数据文件如下所示:

223789 213163 1341100972
223789 213163 1341100972
376989 50329 1341101181
26375 168366 1341101183
376989 13813 1341101192
...

第三列是时间戳。我想读取文件并绘制每个时间戳的行数。这就是我所做的:

data = read_table(file_name, sep=' ', header=None, names=['u1','u2','timestamp'], dtype={'timestamp': np.int}, parse_dates=[2], date_parser=datetime.datetime.fromtimestamp)
data.groupby('timestamp').size().plot()

如果我对 的分辨率没问题,但我不明白聚合数据以获得分钟或小时分辨率的最佳方法是什么.事实上,如果我这样做:

data.groupby(data['timestamp'].map(lambda t: t.hour)).size().plot()

问题是所有引用同一小时不同日期的所有行都聚合在一起,而我想保持时间顺序。

我还没有找到浏览相关帖子和 Stack Overflow 问题的解决方案。请问有人可以帮忙吗?

谢谢!

使用 TimeGrouper 方法,您可以做到这一点

data.set_index('timestamp').groupby(pd.TimeGrouper('1D')).count()

首先是 set_indextimestamp,然后是 groupby 1D

同样,分钟

data.set_index('timestamp').groupby(pd.TimeGrouper('60s')).count()

的小时分辨率

data.set_index('timestamp').groupby(pd.TimeGrouper('1H')).count()