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 通常更快,有一些重要的注意事项需要考虑:
以上是np.vectorize 与 Pandas apply:对于大型数据集,哪个更快?的详细内容。更多信息请关注PHP中文网其他相关文章!