有什么方法可以跨时间压缩数据?

时间:2013-11-05 14:34:20

标签: arrays algorithm graph analytics

我有一组具有timevalue属性的对象。看起来像这样。

UPDATE:数据集,包含纪元时间而非时间字符串

[{datetime:1383661634, value: 43},{datetime:1383661856, value: 40}, {datetime:1383662133, value: 23}, {datetime:1383662944, value: 23}]

阵列远大于此。可能是6位数的长度。我打算构建一个图表来表示这个数组。由于显而易见的原因,我无法使用每一位数据来构建此图(值与时间的关系);所以我需要在一段时间内将其标准化。

所以这是主要问题 - 这些对象的时间戳没有趋势;所以我需要动态选择时间槽,我可以在其中平均值或显示该槽中对象的数量。

如何计算用户友好的插槽。即每分钟,每小时,每天,八小时左右。我期待从阵列中完成最多25个插槽,我将在图表中显示。

我希望这有助于说明我的观点。

3 个答案:

答案 0 :(得分:1)

您可以将日期/时间转换为纪元,并使用numpy.histogram获取范围:

import random, numpy
l = [ random.randint(0, 1000) for x in range(1000) ]
num_items_bins, bin_ranges = numpy.histogram(l, 25) 
print num_items_bins
print bin_ranges

给出:

[34 38 42 41 43 50 34 29 37 46 31 47 43 29 30 42 38 52 42 44 42 42 51 34 39]
[    1.      40.96    80.92   120.88   160.84   200.8    240.76   280.72
   320.68   360.64   400.6    440.56   480.52   520.48   560.44   600.4
   640.36   680.32   720.28   760.24   800.2    840.16   880.12   920.08
   960.04  1000.  ]

答案 1 :(得分:1)

很难说不知道你的价值观的本质,压缩显示价值是你可以放弃的东西和你不能放弃的东西。但有些想法:

  1. 直方图
  2. 烛台图

答案 2 :(得分:0)

这个JSON和DateTimes是以文本形式传输的吗?

为什么不将Date作为long(Int64)传输,并使用方法转换为DateTime?根据您可以使用这些实现的语言:

仅此一项就可以为您节省大量空间,因为字符串每个字符为16位,而长TimeStamp只有64位。