pandas 的问题不在于性能。这是认知开销。

更快的数据帧引擎固然很好,但它们并没有减少分析师必须记住的语法量。帖子“pandas 的问题不是性能”。这是认知开销。首先出现在《走向数据科学》上。

来源:走向数据科学

关于 pandas 的重点是性能。

正如其创建者所承认的那样,pandas 的基础并不是为当今的数据工作负载而构建的。随着时间的推移,pandas 在这一领域取得了真正的进步,特别是最近发布的 pandas 3.0。与此同时,Polars 和 DuckDB 已经展示了当现代数据结构从一开始就成为设计的一部分时可以实现的目标。

但性能只是数据分析的成本之一。对于许多日常任务来说,后端性能是次要问题。数据集适合内存。计算在一秒钟内完成。但分析师必须花时间记住 API、重新排列括号、查找聚合模式并检查分组键是否已悄悄成为索引。

CPU 空闲。人类则不然。

pandas 以及在不同程度上大多数数据帧 API 的更深层次问题是认知开销。

普通代码中隐藏的税收

考虑一个简单的任务:保持正销售,计算利润,按区域汇总并对结果进行排序:

摘要 = (

sales.loc[销售["收入"] > 0]

.assign(保证金=lambda df: df["收入"] - df["成本"])

  • .groupby("区域", as_index=False)
  • .agg(
  • 总收入=(“收入”,“总和”),
  • average_margin=(“保证金”,“平均值”),
  • .sort_values("total_revenue", 升序=False)

    )这不是坏熊猫。这并不是为了赢得语法比较而故意组装的糟糕示例。有经验的 pandas 用户可以毫无困难地阅读它。但请注意,表达式中有多少内容是与 API 协商,而不是详细说明实际逻辑:列有时是 sales["revenue"],有时是 df["revenue"],有时是字符串“revenue”。如果我们想保留方法链,创建列需要进行赋值和 lambda 表达式。命名聚合表示为元组,其顺序是列在前,函数在后。降序通过将升序选项设置为 False 来表示。“AI 现在就可以写”只是答案的一半工作流程不是:更接近: