我目前正在学习 F#,我正在探索使用它来分析金融时间序列。谁能推荐一个好的数据结构来存储时间序列数据?

F# 提供了丰富的 native 类型选择,我正在寻找一些简单的组合来提供优雅、简洁和高效的解决方案。

我正在寻找存储刻度数据,它由数百万条记录组成,每个记录都带有时间戳,以及几个(~5-20)个数字和文本数据字段,可能有缺失值。

我的第一个想法可能是一系列元组或记录,但我想知道是否有人可以提出一些在现实世界中运行良好的建议。

编辑:

补充几点以供澄清:

我可能需要的常见操作是:

  • 基于时间的查找 - 即在给定时间查找最近的数据点
  • 基于时间的连接
  • 追加
    (更新和删除将很少见。)

  • 我应该明确指出,我主要将 F# 用作研究的交互式工具进行探索,并且能够将编译作为(非常大的)额外奖励。

    另一个编辑:

    我还应该提到,我对 F# 的角色/使用和这些数据纯粹是研究而不是开发。目的是一旦我们更好地理解数据(以及我们想用它做什么),那么我们以后就可以指定我们的开发人员将构建的工具。例如数据仓库等,我们将开始使用它们的数据结构等。

    虽然,我担心我们的模型计算量大,使用大量内存并且不能总是以递归方式编码。因此,无论如何,我们许多人最终不得不查询大块。

    我还应该说,我以前一直使用 Matlab 或 R 来处理这些类型的任务,但我现在对 F# 感兴趣,因为它为研究提供了交互式的、高级别的灵活性,但相同的代码可以用于生产。

    我很抱歉一开始没有提供这个上下文信息(这是我的第一个问题),我现在可以看到它可以帮助人们形成他们的答案。

    再次感谢所有花时间帮助我的人。

    最佳答案

    数据结构的最佳选择取决于您要对其进行的操作。

    最简单的是一个结构数组。这具有快速随机查找、未压缩表示的良好空间效率和良好局部性的优点。如果子结构(如字符串)之间存在共享,则对它们进行实习以确保它们被共享。

    替代方案可能是按需从磁盘加载的 seq、允许您快速添加元素的单向链表或允许在随机位置高效插入等操作的平衡二叉树。

    关于f# - 在 F# 中存储大型时间序列的简洁、有用和有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4386242/

    10-13 07:09
    查看更多