3

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

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

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

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

但这似乎需要大约 0.036 秒,当我需要为即使很小的时间间隔生成图表时,这确实很慢。

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

4

1 回答 1

5

如果您没有太多数据,则将所有内容加载到内存中并放入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.72ms 并返回您等待的值:

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
于 2013-05-14T14:27:00.620 回答