【问题标题】:Fastest way to cut a pandas time-series剪切熊猫时间序列的最快方法
【发布时间】:2020-02-18 21:51:04
【问题描述】:

寻找切割时间序列的最快方法……例如,只取比某个索引更新的值。

我找到了两种常用的方法:

df = original_series.truncate(before=example_time)

df = original_series[example_time:]

哪个更快(对于大时间序列 > 10**6 值)?

【问题讨论】:

  • 你为什么不试试%timeit
  • 如果你提供一些样本数据,也许有人无聊会玩弄perfplottimeit给你一些基准。

标签: python pandas time-series


【解决方案1】:

这通常取决于您的数据帧索引是什么,将 10^7 值的随机数据帧放入 timeit 我们得到以下结果。

从性能的角度来看,由于 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)

编辑这一切都在 pandas 0.24.2 上,在 0.14-0.18 版本中,loc 性能要差得多

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 2018-07-12
    • 2021-09-12
    • 2018-11-03
    • 2020-04-08
    • 2018-12-25
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多