【发布时间】:2023-03-11 03:21:01
【问题描述】:
我有这个巨大的数据集,其中包含几天的日期和时间戳。日期时间格式为 UNIX 格式。数据集是一些登录的日志。
该代码应该对开始和结束时间日志进行分组,并提供日志计数和唯一 ID 计数。
我正在尝试获取一些统计信息,例如:
total log counts per hour & unique login ids per hour.
可以选择小时的日志计数,即一周的24hrs, 12hrs, 6 hrs, 1 hr, etc 和day 以及此类选项。
我可以使用start 和end 小时拆分数据,但我无法获得logs 和unique ids 的计数统计信息。
代码:
from datetime import datetime,time
# This splits data from start to end time
start = time(8,0,0)
end = time(20,0,0)
with open('input', 'r') as infile, open('output','w') as outfile:
for row in infile:
col = row.split()
t1 = datetime.fromtimestamp(float(col[2])).time()
t2 = datetime.fromtimestamp(float(col[3])).time()
print (t1 >= start and t2 <= end)
输入数据格式:数据没有标题,但字段如下。输入中不知道天数。
UserID, StartTime, StopTime, GPS1, GPS2
00022d9064bc,1073260801,1073260803,819251,440006
00022d9064bc,1073260803,1073260810,819213,439954
00904b4557d3,1073260803,1073261920,817526,439458
00022de73863,1073260804,1073265410,817558,439525
00904b14b494,1073260804,1073262625,817558,439525
00022d1406df,1073260807,1073260809,820428,438735
00022d9064bc,1073260801,1073260803,819251,440006
00022dba8f51,1073260801,1073260803,819251,440006
00022de1c6c1,1073260801,1073260803,819251,440006
003065f30f37,1073260801,1073260803,819251,440006
00904b48a3b6,1073260801,1073260803,819251,440006
00904b83a0ea,1073260803,1073260810,819213,439954
00904b85d3cf,1073260803,1073261920,817526,439458
00904b14b494,1073260804,1073265410,817558,439525
00904b99499c,1073260804,1073262625,817558,439525
00904bb96e83,1073260804,1073265163,817558,439525
00904bf91b75,1073260804,1073263786,817558,439525
预期输出:示例输出
StartTime, EndTime, Day, LogCount, UniqueIDCount
00:00:00, 01:00:00, Mon, 349, 30
StartTime and Endtime = Human readable format
已经实现了仅分离具有时间范围的数据,但我正在尝试编写一个舍入时间并计算日志和唯一标识的计数。也欢迎使用Pandas 的解决方案。
编辑一:我更详细
StartTime --> EndTIime
1/5/2004, 5:30:01 --> 1/5/2004, 5:30:03
但这介于 5:00:00 --> 6:00:00 之间。所以这种时间范围内所有日志的计数是我想要找到的。同样对于其他人也喜欢
5:00:00 --> 6:00:00 Hourly Count
00:00:00 --> 6:00:00 Every 6 hours
00:00:00 --> 12:00:00 Every 12 hours
5 Jan 2004, Mon --> count
6 Jan 2004, Tue --> Count
等等寻找一个通用程序,我可以根据需要更改时间/小时范围。
【问题讨论】:
-
您希望报告中包含的最短和最长日期/时间是多少?是从 min(StartTime) 到 max(EndTime) 舍入到小时还是其他?
-
@MaxU 我有几个数据集,有些是 100 天,有些是多年。不能仅限于一个数据集且数据集大小超过 1GB。时间运行 24 小时。我需要在几个小时内将它们分开并获取那些日子的日志计数
-
您可以在其他地方发布或上传更多数据吗,因为目前只有一小时的数据?
-
@MaxU 请找到完整数据的一小块dropbox.com/s/varv1lyb5uskexh/dart_small.csv?dl=0
-
你想计算多少次这样的行:
2004-01-05 00:00:10 --> 2004-01-05 04:19:06? 5次?
标签: python datetime pandas dataset python-datetime