按时间间隔对消息进行分组

按时间间隔对消息进行分组,第1张

按时间间隔对消息进行分组

假设您想按秒在1秒间隔内发布的数据分组数据,我们可以利用您的数据是有序的并且

int(out_ts)
将时间戳缩短到秒的事实,我们可以将其用作分组密钥。

进行分组的最简单方法是使用

itertools.groupby

from itertools import groupbydata = get_time_deltas(INFILE)  get_key = lambda x: int(x[0])  # function to get group key from databins = [(k, list(g)) for k, g in groupby(data, get_key)]

bins
将是一个元组列表,其中元组中的第一个值是键(整数,例如
082438
),第二个值是该秒上发布的数据条目的列表(带有timestamp =
082438.*
)。

用法示例:

# print out the number of messages for each secondfor sec, data in bins:    print('{0} --- {1}'.format(sec, len(data)))# write (sec, msg_per_sec) out to CSV fileimport csvwith open("test.csv", "w") as f:    csv.writer(f).writerows((s, len(d)) for s, d in bins)# get average message per secondmessage_counts = [len(d) for s, d in bins]avg_msg_per_second = float(sum(message_count)) / len(message_count)

PS在这个例子中,一个

list
被用于
bins
使得数据的顺序被保持。如果您需要随机访问数据,请考虑使用
OrderedDict
代替。


请注意,将解决方案调整为几秒钟的分组是相对简单的。例如,要按每分钟(60秒)的邮件分组,请将

get_key
功能更改为:

get_key = lambda x: int(x[0] / 60)  # truncate timestamp to the minute


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存