考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

团队正在处理一个包含 5000 万行交易记录的 DataFrame df,其中包含 price(价格,float)和 qty(数量,int)两列。由于数据量巨大,特征工程的执行效率成为瓶颈。工程师 A 写了四种计算“总金额”(Total Amount)的代码片段。 代码片段: 1. df['total'] = df.apply(lambda x: x['price'] * x['qty'], axis=1) 2. df['total'] = [p * q for p, q in zip(df['price'], df['qty'])] 3. df['total'] = df['price'] * df['qty'] 4. df['total'] = np.vectorize(lambda p, q: p * q)(df['price'], df['qty']) 问题: 关于上述代码的性能与内存表现,下列说法最准确的是:
A. 方案 1(apply)最优,因为 Pandas 的 apply 方法底层自动进行了 C 语言级别的并行优化。
B. 方案 2(List Comprehension)最差,因为它是纯 Python 循环,但方案 1 比方案 3 更快,因为 apply 对行操作有缓存机制。
C. 方案 3(直接乘法)最优,因为它利用了 NumPy 的底层向量化(Vectorization)和 SIMD 指令集,且内存开销最小。
D. 方案 4(np.vectorize)最优,因为它专门用于将 Python 函数转换为高性能的 ufunc。
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

考察对 Pandas 底层运算机制的理解。 • A 错误:apply(axis=1) 是 Pandas 中性能较差的操作之一,本质上是在 Python 层面进行行级循环,且每行都会产生 Series 对象的构建开销,速度极慢。 • B 错误 :apply 通常比 List Comprehension 还要慢,因为它涉及 Pandas 内部复杂的索引对齐和对象封装开销。 • C 正确:Pandas 的列式运算(Series * Series)底层直接调用 NumPy 数组操作,能够利用 CPU 的 SIMD 指令集进行真正的向量化计算,速度通常比 apply 快 100 倍以上。 • D 错误:np.vectorize 主要是为了便利性(广播机制),它本质上还是运行 Python 的 for 循环(除非指定 C 签名),性能远不如原生数组运算。