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

时间:2013-05-14 14:20:36

标签: 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'

所以我的最短时间间隔为1米。

但这似乎需要0.036秒,这在我需要制作图表时非常慢 即使很小的时间间隔。

您建议使用哪种其他方法解决此问题。

1 个答案:

答案 0 :(得分:4)

如果您没有太多数据,则将所有内容加载到内存中pandas TimeSeries。

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

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

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

ts.between_time('2013-05-14 15:48:13', '2013-05-14 15:49:13').min()

您可以使用不同的频率而不是等间距值:

> 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