Как использовать функцию интерполяции Pandas для длинных временных рядов без ошибки памяти? - PullRequest
0 голосов
/ 10 июня 2019

Я использую встроенную функцию интерполяции серии Pandas для линейной интерполяции пропущенных значений (nans) во временном ряду. Тем не менее, для длинных временных рядов (N = 10 ^ 9) код никогда не прекращает работу и в конечном итоге дает сбой ..

Очень простой пример:

N = 10**6
s = pd.Series(np.arange(N))
s[::10] = np.nan # Set every 10th value to nan
s = s.interpolate() # Linearly interpolate nans

Для N = 10 ^ 6 шаг интерполяции занимает 0,06 секунды, для N = 10 ^ 7 - 0,6 секунды, для N = 10 ^ 8 - 6 секунд.

Проблема начинается, когда N увеличивается до 10 ^ 9 (это примерно длина временного ряда, с которым я работаю). Теперь мой компьютер просто выходит из строя ... Я предполагаю, что это какая-то ошибка памяти, не зная много о внутренней работе компьютеров.

Есть ли способ избежать этого, не создавая медленного цикла for и не разбивая временные ряды?

...