我是大熊猫的新手,我正在尝试根据时间绘制事件的数量,以不同的时间分辨率。
我的数据文件如下所示:
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问题的解决方案。有人可以帮忙吗?
谢谢!
答案 0 :(得分:1)
使用TimeGrouper方法,你可以这样做
data.set_index('timestamp').groupby(pd.TimeGrouper('1D')).count()
首先set_index
到timestamp
,然后groupby
一天1D
同样,分钟
data.set_index('timestamp').groupby(pd.TimeGrouper('60s')).count()
和
的小时分辨率 data.set_index('timestamp').groupby(pd.TimeGrouper('1H')).count()