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

时间:2015-04-07 16:25:05

标签: python pandas time-series

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

我的数据文件如下所示:

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问题的解决方案。有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用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()