【问题标题】:What are some good ways to compress data across time?有哪些好方法可以跨时间压缩数据?
【发布时间】:2013-11-05 14:34:20
【问题描述】:

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

更新: 带有纪元时间而不是时间字符串的数据集

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

数组远比这个大。可能是 6 位长度。我打算建立一个图表来表示这个数组。由于显而易见的原因,我不能使用所有数据来构建这个图表(价值与时间);所以我需要随着时间的推移对其进行标准化。

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

如何计算用户友好的插槽。即每分钟,每小时,每天,八小时左右。我正在考虑从阵列中完成最多 25 个插槽,我在图表上显示了这些插槽。

我希望这有助于理解我的观点。

【问题讨论】:

  • 这个问题是关于节省内存(字节)还是关于以用户友好的方式显示值的问题?
  • @HighPerformanceMark 我的错。我手动创建了一个演示数据集。
  • @sled 这是关于以用户友好的方式显示值。要在图表上显示 100,000 个值,我需要压缩时间尺度。我需要一些方向来以用户友好的方式压缩这个时间尺度。
  • mhhh 这只是一个快速的想法(不保证它会起作用):首先构建一个二叉树/排序树,然后从叶子开始,将叶子合并到包含多个项目的桶中,直到达到 25 个桶在叶子级别。这些桶然后代表您的时间线上可能包含多个项目的点。非常类似于 BTree。
  • 或者另一种想法,您可以尝试使用 k 近邻算法沿时间线构建集群。

标签: arrays algorithm graph analytics


【解决方案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.  ]

【讨论】:

  • 问题不在于日期时间转换。我有由此产生的纪元时间。它更多的是在时间尺度上压缩 100,000 个值,以使其更加用户友好。也许我会用数据中的纪元时间更新问题。
  • 我不确定。我如何在我的数据上使用它。我需要压缩时间尺度。基本上以分钟/天/小时等的槽/桶显示结果。
  • 在历元上应用直方图,稍后您可以将它们转换为天、分钟...
【解决方案2】:

如果不了解您的值的性质,很难说,压缩值以进行显示是您可以舍弃什么和不能舍弃什么的问题。不过有一些想法:

  1. 直方图
  2. 烛台图

【讨论】:

    【解决方案3】:

    此 JSON 和 DateTimes 是否以文本形式传输?

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

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

    【讨论】:

    • 问题不在于日期时间转换。我有由此产生的纪元时间。它更多的是在时间尺度上压缩 100,000 个值,以使其更加用户友好。
    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多