与 python 一起使用的时间序列数据库

ren*_*ren 3 python sqlite time-series

我有一个用 python 编写的应用程序,它当前以“日期时间值”的格式将一些值存储在文本文件中。到目前为止,这工作得很好。

现在的问题是我需要开始按时间间隔检索数据。我已将文件转换为 sqlite 数据库。但是我发现性能真的很差。我运行了如下查询:

select min(value) from data where dt > '2013-05-13 15:48:13' and dt < '2013-05-13 15:49:13'
Run Code Online (Sandbox Code Playgroud)

所以我的最低时间间隔是1m。

但这似乎需要大约 0.036 秒,当我需要为甚至很小的时间间隔生成图表时,这真的很慢。

您建议使用什么其他方法来解决这个问题。

eum*_*iro 5

如果你没有tooooo多的数据,那么一切都入内存加载到大熊猫的TimeSeries。

import pandas as pd
ts = pd.TimeSeries(range(86400), index=pd.DatetimeIndex(start='2013-05-14 00:00:00', freq='1S', periods=86400))
Run Code Online (Sandbox Code Playgroud)

为今天的每一秒创建一个具有 86400 个值的 TimeSeries。

以下行需要 2.72 毫秒并返回您等待的值:

ts.between_time('2013-05-14 15:48:13', '2013-05-14 15:49:13').min()
Run Code Online (Sandbox Code Playgroud)

您也可以使用不同的频率和不等距的值:

> pd.TimeSeries([1,2,3], index=pd.DatetimeIndex([datetime(2013,5,14,0,0,0,100000), datetime(2013,5,14,0,0,0,200000), datetime(2013,5,14,0,0,0,900000)]))

2013-05-14 00:00:00.100000    1
2013-05-14 00:00:00.200000    2
2013-05-14 00:00:00.900000    3
Run Code Online (Sandbox Code Playgroud)