【发布时间】:2013-06-25 14:48:51
【问题描述】:
我已分隔日志文件,每 5 分钟捕获一次某些进程的快照。我想对它们进行一些统计分析,对数据的子集进行分组和绘制图表等。其中一部分将涉及计算进程打开的时间(即总分钟数 = 快照在 x 5 中的显示方式)。我可以使用 Python、R 或任何我选择的语言。
挑战在于没有一个字段是唯一的(存在一对多和多对多关系),所以唯一的匹配是当每个 元素在整行上都是一样的。
也许举个例子会有所帮助。假设第一个快照日志如下所示:
R123,M,5,... <-- line A
R190,Z,4,...
R663,M,8,...
5 分钟后,下一张快照显示:
R123,M,5,... <-- line A
R123,P,3,... <-- line B
R955,Z,3,...
显然,A 行中的过程现在至少已经运行了 5 分钟。但是即使 B 行具有相同的第一个字段,其他字段也不匹配,因此它不是同一个过程。
我只是想找出一个好的数据模型,让这些数据易于使用。
一个选项是简单的频率计数:将每一整行读入 Python dict 或 Perl 哈希,并以该行作为键,这样当重复行出现在下一个快照中时,它只会添加到计数中。例如在 Perl 中:$count{$_}++ foreach @lines;
但是一整行数据甚至可以作为字典键有效吗?那么不连续的实例呢,比如如果 A 行连续出现 3 个快照,然后另一天又出现?--这些应该是单独的实例,这样基于时间的查询仍然有效。
对我如何处理和存储这些数据有什么建议吗?
【问题讨论】:
-
为什么不把重复的行去掉?有一个
duplicated函数有一个数据框方法。 -
@DWin:因为我需要量化他重复的行,因为有关该过程持续多长时间的关键数据只能通过查看从第一次出现到最后一次出现的次数或多长时间才能找到。
标签: python r algorithm data-modeling