Эффективный способ выравнивания нескольких нерегулярных временных рядов в регулярные временные ряды с несколькими столбцами - PullRequest
0 голосов
/ 08 декабря 2018

Я новичок в python и стремлюсь выровнять несколько нерегулярных временных рядов в один обычный объект.Я пробовал эту наивную реализацию только для одного временного ряда, где dts - это обычный массив даты и времени (включая часовой пояс), mydates содержит неправильные даты (аналогичный тип), а myts хранит неправильные значения данных:

    regts = [None] * len(dts)
    for j in range(len(mydates)):
        idx = dts.index(mydates[j])
        regts[idx] = myts[j]

Скорость приемлема для длины до 1000, но затем она становится очень медленной из-за размера набора данных.Я уверен, что есть много эффективных способов сделать это.

1 Ответ

0 голосов
/ 08 декабря 2018

A dts.index(), который выполняет линейное сканирование, даст квадратичную ошибку, болезненную для длин, намного превышающих тысячу.Это цикл, вложенный в ваш внешний цикл.

Создайте множество кортежей со списком, охватывающим ваши исходные данные, а затем отсортируйте его для получения требуемого временного ряда.

Так что если

for stamp, value in mytimeseries:
    print(stamp, value)

отображает ваш объединенный временной ряд, тогда sorted(mytimeseries) - желаемый результат.

...