微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:按时间间隔对结果分组

如何解决Python:按时间间隔对结果分组

bisect.bisect解决此问题的另一种方法

import datetime
import bisect
import collections

data=[ (datetime.datetime(2010, 2, 26, 12, 8, 17), 5594813L), 
  (datetime.datetime(2010, 2, 26, 12, 7, 31), 5594810L), 
  (datetime.datetime(2010, 2, 26, 12, 6, 4) , 5594807L),
]
interval=datetime.timedelta(minutes=1,seconds=30)
start=datetime.datetime(2010, 2, 26, 12, 6, 4)
grid=[start+n*interval for n in range(10)]
bins=collections.defaultdict(list)
for date,num in data:
    idx=bisect.bisect(grid,date)
    bins[idx].append(num)
for idx,nums in bins.iteritems():
    print('{0} --- {1}'.format(grid[idx],len(nums)))

解决方法

我有一个从腌制文件加载的大数据。数据是一个元组的排序列表,其中包含一个日期时间和一个这样的整数

[ (datetime.datetime(2010,2,26,12,8,17),5594813L),(datetime.datetime(2010,7,31),5594810L),6,4),5594807L),etc
]

我想根据一些时间间隔获得人口密度。例如,我想在5分钟/ 1分钟/ 30秒内获取记录数。

最好的方法是什么?我知道我可以遍历列表中的每个实例,但是正在寻找一种更好的方法(如果存在)。

所需的输出将类似于:

2010-01-01 04:10:00  --- 5000
2010-02-04 10:05:00  --- 4000
2010-01-02 13:25:00  --- 3999

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。