首页  >  文章  >  后端开发  >  np.vectorize 与 Pandas apply:对于大型数据集,哪个更快?

np.vectorize 与 Pandas apply:对于大型数据集,哪个更快?

DDD
DDD原创
2024-10-27 07:16:02547浏览

np.vectorize vs. Pandas apply: Which is Faster for Large Datasets?

np.vectorize 与 Pandas apply:性能比较

Pandas 用户通常会遇到基于现有列创建新列的需要。用于此任务的两种流行方法是 Pandas 的 apply 函数和 NumPy 的向量化。然而,这些方法之间的速度差异是一个尚未得到彻底研究的问题。

预期行为

根据观察和实验,预计np.vectorize 明显快于 df.apply,特别是对于较大的数据集。

速度差异的原因

性能差距的主要原因在于每种方法的本质。

df.apply 的工作原理是迭代 DataFrame 中的每一行并评估给定的函数。这涉及到 Pandas 系列对象的创建和操作,由于它们的索引、值和属性,这些对象会带来很大的开销。

另一方面,np.vectorize 将输入函数转换为通用函数(ufunc )直接对 NumPy 数组进行操作。这允许进行高度优化的向量化计算,并避免 Python 级别的循环。

性能基准

该问题的实验展示了 np.对 df.apply 进行矢量化以适应不同的数据集大小。对于具有 100 万行的 DataFrame,np.vectorize 的速度快了 25 倍以上。

其他注意事项

虽然 np.vectorize 通常更快,有一些重要的注意事项需要考虑:

  • 对于小型数据集,设置向量化计算的开销可能会抵消任何性能提升。
  • 对于不容易向量化的操作,例如条件赋值,df.apply 可能是更好的选择。
  • 通过 NumPy 运算或 numba 优化进行真正的矢量化可以提供更高的效率。

以上是np.vectorize 与 Pandas apply:对于大型数据集,哪个更快?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn