我有一个用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秒,这在我需要制作图表时非常慢 即使很小的时间间隔。
您建议使用哪种其他方法解决此问题。
答案 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