【问题标题】:Performance of custom function while using .apply on Pandas Dataframes在 Pandas Dataframes 上使用 .apply 时自定义函数的性能
【发布时间】:2016-04-30 11:13:00
【问题描述】:

正如标题所暗示的,我想更好地了解使用应用于数据帧的自定义函数在速度方面的局限性。示例:

df.apply(custom_function)

文档及其相关内容 (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html) 在主题上有点偏离,只是将此功能称为根据所使用的功能使其变慢。由于我不知道这种矢量化是如何发生的 - 因此使我的函数的分析成为一个耗时的尝试和重复的事情,有人可以指出一些关于什么样的东西的经验法则: 1)不降低速度 2) 大大减慢了整个过程

更准确地说:如果我在函数中将东西保存在其他地方,我会受到严重损坏吗?

【问题讨论】:

    标签: performance pandas vectorization apply


    【解决方案1】:

    我认为自定义函数减慢 Pandas 的主要原因是内置方法是在 Cython(C-Extensions for Python)中实现的。您将使用的任何纯 pythonic 都将比内置的慢得多。如果您设法使用也在 Cython 中实现的扩展以满足您的需求,您可能会很幸运并且具有相对较好的性能。根据 Pandas 文档“......最终的 cythonized 解决方案比纯 python 快大约 100 倍”(http://pandas.pydata.org/pandas-docs/stable/enhancingperf.html)

    一般来说,我会避免从 apply 函数内部写入值。我无法想象你为什么要这么做。如果您需要有关返回系列的信息,最好在应用完成后进行回顾测试。

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 2021-09-29
      • 2021-06-22
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2019-11-23
      相关资源
      最近更新 更多