在 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_index
到 timestamp
,然后是 groupby
1D
同样,分钟
data.set_index('timestamp').groupby(pd.TimeGrouper('60s')).count()
和
的小时分辨率
data.set_index('timestamp').groupby(pd.TimeGrouper('1H')).count()
我是 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_index
到 timestamp
,然后是 groupby
1D
同样,分钟
data.set_index('timestamp').groupby(pd.TimeGrouper('60s')).count()
和
的小时分辨率data.set_index('timestamp').groupby(pd.TimeGrouper('1H')).count()