Самый быстрый способ вырезать временные ряды панд - PullRequest
0 голосов
/ 22 октября 2019

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

Я нашел два часто используемых метода:

df = original_series.truncate(before=example_time)

и

df = original_series[example_time:]

Какой из них быстрее (для больших временных рядов> 10 ** 6 значений)?

1 Ответ

0 голосов
/ 22 октября 2019

Обычно это зависит от того, какой у вас индекс фрейма данных, выбрасывая случайный фрейм данных из 10 ^ 7 значений во времени, и мы получаем следующее.

С точки зрения производительности усечение более неэффективно, поскольку pandas оптимизирован для целочисленной индексации через numpy.

Truncate: 
62.6 ms ± 3.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Bracket Indexing:
54.1 µs ± 4.41 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

ILoc:
69.5 µs ± 4.52 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

Loc:
92 µs ± 5.09 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

Ix (which is deprecated):
110 µs ± 8.44 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

РЕДАКТИРОВАТЬ Это все на пандах 0.24.2, в версиях 0.14-0.18 производительность loc была намного хуже

...