gpt4 book ai didi

python - 分组并确定最繁忙的时间段

转载 作者:太空宇宙 更新时间:2023-11-03 15:25:47 27 4
gpt4 key购买 nike

我有一个日志文件,其中一列是日期,另一列是时间。我正在尝试查找最受欢迎的时间段。

Date          Time
Jan/01/2017 08:23:45
Jan/01/2017 15:54:21
Jan/02/2017 04:02:39
Jan/03/2017 06:33:12
...

我正在寻找一种有效的方法将数据分组为 10 分钟部分,然后找到最流行的 1 小时间隔。因此,最流行的一小时间隔很可能是连续的,例如:

Interval               Count
08:10:00 - 09:10:00 586
08:20:00 - 09:20:00 565
08:30:00 - 09:30:00 544
...

这必须能够很好地扩展到 GB 的数据,并且我需要能够找到最流行的间隔,最好无需对整个表进行排序。

最佳答案

您可以使用整数除法和 Counter 转换为自午夜以来的分钟数。无需对数据进行排序,这应该可以正常工作并且高效:

from collections import Counter

log = """Jan/01/2017 08:23:45
Jan/01/2017 15:54:21
Jan/01/2017 15:50:21
Jan/01/2017 15:52:21
Jan/02/2017 04:02:39
Jan/03/2017 06:33:12"""

portion = 10
interval = 60

counter = Counter()

for line in log.split("\n"):
time = line.split()[-1]
hour, minute, second = map(int, time.split(':'))
since_midnight = hour * 60 + minute
counter[since_midnight // portion] += 1

for slot, count in counter.most_common():
print("%02d:%02d -> %02d:%02d - %d" % ((slot * portion) / 60,
(slot * portion) % 60,
((slot + 1) * portion) / 60,
((slot + 1) * portion) % 60,
count))

它输出:

15:50 -> 16:00 - 3
04:00 -> 04:10 - 1
08:20 -> 08:30 - 1
06:30 -> 06:40 - 1

由于您没有编写任何代码,我将留给您一个练习:对于给定的 10 分钟部分,增加包含该部分的每 60 分钟间隔的计数器。一个简单的 for 循环就可以了。

此外,您应该逐行读取文件。 split("\n") 只是一个简单的示例。

关于python - 分组并确定最繁忙的时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43160546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com