我有一些正在尝试使用的数据(NOAA提供的天气预报)。有各种数据系列(温度,湿度等),每个数据系列包含一系列数据点,并在各种时间范围内索引到一组日期时间(某些系列每小时一次,其他系列每3小时一次,有些每天一次)。是否存在用于处理此类数据并以用户友好方式访问它的任何类型的库。
理想用法是:

db = TimeData()
db.set_val('2010-12-01 12:00','temp',34)
db.set_val('2010-12-01 15:00','temp',37)
db.set_val('2010-12-01 12:00','wind',5)
db.set_val('2010-12-01 13:00','wind',6)
db.query('2010-12-01 13:00') # {'wind':6, 'temp':34}


基本上,查询将返回每个系列的最新值。
我查看了scikits.timeseries,但是由于涉及到预计算的数量(它希望所有数据都一次性完成,没有随机访问设置),因此该用例并不十分适合。

最佳答案

如果对数据进行了排序,则可以使用bisect模块快速获取最大时间小于或等于指定时间的条目。

就像是:

i = bisect_right(times, time)
# times[j] <= time for j<i
# times[j] > time for j>=i
if times[i-1] == time:
      # exact match
      value = values[i-1]
else:
      # interpolate
      value = (values[i-1]+values[i])/2

10-06 04:44
查看更多