You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python(Pandas)新增计算列的性能影响探究

高效处理Pandas DataFrame列的几种方案

看你正在深耕机器学习底层原理而非停留在操作层面,这个方向真的很赞!针对你提到的预处理income-class列的需求,确实有不少比自定义calculate函数更高效的矢量化方法,既能提升处理速度,也更贴合Pandas/Numpy的设计逻辑,甚至能实现你想要的“即时处理”直接用于可视化。

下面是几个实用的解决方案:

1. Numpy矢量化判断(适配简单分支逻辑)

Numpy的where函数是矢量化操作的代表,它会一次性对整个数组完成判断,比逐行apply效率高得多,大数据集下优势尤其明显:

import numpy as np

# 这里假设else分支返回200,你可以根据实际需求修改
df['calculated_col'] = np.where(df['income-class'] == '<=50K', 100, 200)

如果是多分支复杂逻辑,还可以嵌套np.where,或者用np.select来定义多个条件与对应结果。

2. Pandas字典映射(适合明确的键值对应关系)

如果income-class只有固定的几个类别,用字典映射的方式更直观,代码可读性也更强:

income_mapping = {
    '<=50K': 100,
    '>50K': 200  # 补充你的其他类别映射规则
}
df['calculated_col'] = df['income-class'].map(income_mapping)

要是存在未匹配的类别,还可以用.fillna()来兜底处理,比如.map(income_mapping).fillna(0)。

3. 即时处理直接用于可视化

如果不需要把处理后的列保存到DataFrame里,完全可以在Matplotlib调用时直接处理数据,实现“即时处理”:

import matplotlib.pyplot as plt

# 直接在绘图参数中生成处理后的数据,无需额外存列
plt.bar(
    x=df.index,
    height=np.where(df['income-class'] == '<=50K', 100, 200)
)
plt.show()

额外小提示

这些方法的核心都是矢量化操作——避免逐行循环或apply,而是利用Numpy/Pandas底层的C实现批量处理数据。理解矢量化的原理不仅能提升数据处理效率,对你后续深入TensorFlow也大有裨益,因为TensorFlow的计算逻辑同样依赖矢量化的张量操作,本质逻辑是相通的。

内容的提问来源于stack exchange,提问作者Martin Horvath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:07:45