当前位置: 首页 > 面试题库 >

为什么np.where比pd.apply快

宋建柏
2023-03-14
问题内容

示例代码在这里

import pandas as pd
import numpy as np

df = pd.DataFrame({'Customer' : ['Bob', 'Ken', 'Steve', 'Joe'],
                   'Spending' : [130,22,313,46]})

#[400000 rows x 4 columns]
df = pd.concat([df]*100000).reset_index(drop=True)

In [129]: %timeit df['Grade']= np.where(df['Spending'] > 100 ,'A','B')
10 loops, best of 3: 21.6 ms per loop

In [130]: %timeit df['grade'] = df.apply(lambda row: 'A' if row['Spending'] > 100 else 'B', axis = 1)
1 loop, best of 3: 7.08 s per loop

问题答案:

我认为np.where速度更快,因为使用numpy array矢量化方式和熊猫构建在此数组上。

df.apply慢,因为它使用loops

vectorize操作是最快的,cython routines然后是apply

请参阅此答案,并更好地解释pandas开发人员Jeff



 类似资料:
  • 问题内容: 我不知道为什么numba在这里击败numpy(超过3倍)。我在这里进行基准测试时是否犯了一些根本性的错误?对于numpy来说似乎是完美的情况,不是吗?请注意,作为检查,我还运行了一个结合了numba和numpy的变体(未显示),正如预期的那样,它与不带numba的numpy运行相同。 (顺便说一下,这是一个后续问题:数字处理二维数组的最快方法:dataframe vs series v

  • 我读到了关于b/w recyclerview和listview的区别,发现RecyclerViewer比listview更快。 我尝试在线搜索,但没有找到任何令人满意的答案,我知道它使用了ViewHolder模式和通知适配器,但它的内在功能是什么,所以它更快?

  • 本文向大家介绍LSTM为什么比RNN好?相关面试题,主要包含被问及LSTM为什么比RNN好?时的应答技巧和注意事项,需要的朋友参考一下 因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。

  • 问题内容: 我有一个问题,我需要查找具有与值匹配的度量 或 根本没有该度量的记录。我使用s,using和using三种或四种不同的方法解决了该问题。但是,每次查询最终都变得非常慢。然后,我尝试将查询一分为二,它们都非常快地运行(三秒钟)。但是使用组合查询需要花费超过五分钟的时间。 在SO上阅读,我尝试了,速度非常快,但是对于我正在使用的脚本非常不便。 有两个问题: 为什么这么快?(或者为什么这么慢

  • 问题内容: 我听说(在互联网上的某处阅读)比顺序IO快。它是否正确?如果是,那为什么会更快? 没有按顺序阅读。 已经从磁盘读取本身一样呢 映射区域不是顺序的-因此没有DMA(?)。 那么实际上应该比从文件慢吗?我上面的哪些假设是错误的? 问题答案: 我听说(在互联网上的某处阅读)mmap()比顺序IO更快。它是否正确?如果是,那为什么会更快? 可能是-有优点和缺点,如下所列。 当您真的有理由要关心

  • 问题内容: 在优化代码时,我意识到了以下几点: 并且: 我认为它与在C中实现python的方式有关,但我想知道是否有人愿意解释为什么会这样? 问题答案: 结果的(有些出乎意料的原因)是Python似乎折叠了涉及浮点乘法和幂运算而不是除法的常量表达式。完全是另一种野兽,因为没有字节码,并且涉及函数调用。 在Python 2.6.5上,以下代码: 编译为以下字节码: 如您所见,乘法和乘幂根本不需要时间