Pandas 重采样的替代方案

Posted

技术标签:

【中文标题】Pandas 重采样的替代方案【英文标题】:Alternative for Pandas resample 【发布时间】:2018-07-14 12:35:36 【问题描述】:

我正在寻找针对resampletime series 大规模数据(数千万或数亿条数据记录)的解决方案。 Pandas resample() 运行良好,直到达到大约 10 条 mio 数据记录,然后它实际上停止工作,因为硬件没有足够的内存。在庞大的数据集上,我曾多次使用 Pandas 遇到这个问题。但是,如果我只是在大型数据集上使用 for 循环,我可以读取数据并使用它,即使它要慢得多。有人知道没有pandasresample time series data 的好解决方案吗?

数据源是 mysql 服务器,记录包含 OHLC 数据和时间戳。时间序列的频率为 1 分钟,重采样频率为 5 分钟、30 分钟、1 小时、6 小时、1 天、1 小时、1 米,我都存储到不同的表中。我考虑将来切换到 mongoDB。

【问题讨论】:

由于重采样只需要本地(而不是全局)数据,您应该能够通过将时间序列分成块来解决问题。一次将一个块加载到 Pandas 系列中。重新采样系列并存储结果。对每个块重复该过程。要获得比这更具体的信息,我们需要更多信息。了解时间序列的来源会有所帮助——它是 CSV(什么格式?)还是数据库? (什么服务器?什么架构?)。时间序列的频率是多少,重采样频率是多少?您希望将数据存储在何处以及以何种格式存储? 感谢您的反馈。我已经用相应的信息更新了我的问题 【参考方案1】:

看看这个: Pandas Panel resampling alternatives

同时这个包被称为 xarray。虽然您可以查看 dask,它与 xarray 一起可以提供快速的并行重采样(以及许多其他 numpy 和 pandas 函数)。

【讨论】:

以上是关于Pandas 重采样的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pandas 同时应用重采样和分组?

python pandas重采样计数和总和

没有重采样的时间序列的 Pandas 子集

pandas resample 重采样

Pandas 的整数索引重采样等价物

从 Pandas 的重采样中获取索引