背景
我有一个k n维时间序列,每个时间序列表示为m x(n + 1)个数组,其中包含浮点值(n列加1表示日期)。
示例:的
k(大约400万)时间序列看起来像
20100101 0.12 0.34 0.45 ...
20100105 0.45 0.43 0.21 ...
... ... ... ...
每天,我想为数据集的一个子集(< k)添加一行。所有数据集都存储在一个 hd5f文件中的组中。
问题
将行附加到数据集的最省时的方法是什么?
输入是一个看起来像
的CSV文件key1, key2, key3, key4, date, value1, value2, ...
其中日期对于特定文件是唯一的,可以忽略。我有大约400万个数据集。问题是我必须查找密钥,获取完整的numpy数组,调整数组大小,添加行并再次存储数组。 hd5f文件的总大小约为100 GB。知道如何加快速度吗? 我认为我们可以同意使用SQLite或类似的东西不起作用 - 只要我拥有所有数据,平均数据集将有超过100万个元素乘以400万个数据集。
谢谢!
答案 0 :(得分:0)
你看过PyTables了吗?它是建立在HDF5库之上的分层数据库。
它有几种数组类型,但“表”类型听起来像是适用于您的数据格式。它基本上是NumPy记录数组的磁盘版本,其中每列可以是唯一的数据类型。表有一个附加方法,可以轻松添加其他行。
至于从CSV文件加载数据,numpy.loadtxt非常快。它会将文件作为NumPy记录数组加载到内存中。