【发布时间】:2016-07-06 17:45:39
【问题描述】:
我有多个时间序列,它们是各种算法的输出。这些算法可以有各种参数,并因此产生时间序列:
timestamp1=1;
value1=5;
timestamp2=2;
value2=8;
timestamp3=3;
value3=4;
timestamp4=4;
value4=12;
resultsOfAlgorithms=[
{
'algorithm':'minmax',
'param-a':'12',
'param-b':'200',
'result-of-algorithm':[[timestamp1,value1],[timestamp2,value2]]
},
{
'algorithm':'minmax',
'param-a':'12',
'param-b':'30',
'result-of-algorithm':[[timestamp1,value1],[timestamp3,value3]]
},
{
'algorithm':'minmax',
'param-a':'12',
'param-b':'30',
'result-of-algorithm':[[timestamp2,value2],[timestamp4,value4]]
},
{
'algorithm':'delta',
'param-a':'12',
'param-b':'50',
'result-of-algorithm':[[timestamp2,value2],[timestamp4,value4]]
}
]
我希望能够按算法和参数过滤时间序列并绘制过滤后的时间序列以查看给定参数如何影响输出。为此,我需要知道给定参数的所有出现值,然后才能选择具有所需参数的时间序列。例如。我想用 param-b==30 绘制 minmax 算法的所有结果。使用 minmax 算法和 param-b==30 产生了 2 个结果。因此,我想要一个包含 2 个时间序列的情节。
这可能与 pandas 或这超出了 pandas 的功能?如何实现?
编辑: 在互联网上搜索更多我想我正在寻找一种使用分层索引的方法。时间序列也应该保持分开。每个结果都是一个单独的时间序列。它不应与其他结果合并在一起。我需要按使用的参数过滤算法的结果。过滤器的结果应该仍然是一个时间序列列表。
编辑 2: 有多个子问题:
查找每个参数的所有现有值(用户不知道所有值,因为参数可以由系统自动生成)
-
用户选择一些值进行过滤 用户可以提供的一种方式是字典(但欢迎更多用户友好的想法):
过滤器={ '参数-b':[30,50], “算法”:“最小最大” }
-
来自 resultsOfAlgorithms[1:2] 的时间序列(第二个和第三个结果)作为过滤的结果给出,因为这些结果是由 minmax 算法产生的,而 param-b 是 30。因此在这种情况下
[ [[timestamp1,value1],[timestamp3,value3]], [[timestamp1,value1],[timestamp3,value3]] ]
过滤的结果会返回多个时间序列,我要绘制比较。
用户想尝试各种过滤器,看看它们如何影响结果
我在 Jupyter notebook 中做这一切。而且我想让用户尽可能轻松地尝试各种过滤器。
结果中的时间戳不共享。结果之间的时间戳不一定是共享的。例如。所有时间序列都可能发生在下午 1 点到 3 点之间,并且具有大致相同数量的值,但时间戳和值的数量并不相同。
【问题讨论】:
-
你想单独存储时间序列(在一个列表中,或者就像他们在这里一样,在
resultsOfAlgorithms中)?或者将它们作为数据框中的列保存不是更好吗?如果有一些自然的、公共的时间戳空间,那么后者更方便。这些列将被分层索引,并且迭代选定的系列可能会容易得多。 -
在想要按算法和参数过滤的情况下,“时间序列应该保持分离”是什么意思?也许您的上述数据在最终结果中的外观示例会有所帮助。
-
resultsOfAlgorithms中的第二项和第三项参数相同但result-of-algorithm不同,因此时间序列不是由它们的参数唯一确定的。这是对的吗?至于共享时间戳空间,我认为如果系列的时间戳重叠,则所有时间戳的联合可能是明智的。 (时间序列将包含缺失的 NaN)。