Pandas 该灭绝吗?一篇技术圈热文引发的数据工具之争
Hacker News 上 93 分热帖《Pandas Should Go Extinct》把 Python 数据分析的老牌王者推上风口浪尖。本文梳理争议背后的真实痛点:内存占用、API 混乱、类型系统缺失,以及 Polars、DuckDB 等新秀的替代方案,帮你判断什么时候该换工具。
一场关于「老工具该不该退休」的争论
Hacker News 上最近有一篇标题相当激烈的文章——《Pandas Should Go Extinct》,短短时间拿到 93 分、45 条评论。评论区吵成一片:有人拍手叫好,说自己被 Pandas 折磨了五年;也有人反驳,说问题不在 Pandas,而在用错场景。
这篇文章本身观点偏激,但它戳中的痛点很真实。作为 Python 数据科学生态里最知名的库,Pandas 确实到了该被重新审视的时候。
Pandas 到底哪里让人难受
第一,内存是硬伤。 Pandas 默认用 NumPy 数组存数据,字符串列尤其吃内存。一个几百 MB 的 CSV 读进来,动辄膨胀到几个 GB,笔记本直接卡死。虽然可以手动指定 dtype 缓解,但这对新手极不友好。
第二,API 设计不统一。 同样是「取一列」,有人写 df['col'],有人写 df.col,还有 df.loc[:, 'col'];同样是分组聚合,groupby 之后的 agg、apply、transform 行为差异微妙,文档翻半天也未必对得上。老用户靠肌肉记忆,新用户靠试错。
第三,类型系统缺失。 Pandas 的对象列可以混装任何东西,运行时才报错。写数据管道时,这种「先跑起来再说」的哲学意味着 bug 往往在生产环境才暴露。
第四,单线程。 默认执行模型是单核的,面对如今动辄几十 GB 的数据集,性能天花板肉眼可见。
替代方案已经成熟
如果只是抱怨,那这篇文章没什么价值。真正让它值得讨论的,是替代品已经能打了。
Polars 是目前声量最大的挑战者。它用 Rust 写的,底层基于 Arrow 列式内存格式,天然支持多核并行和惰性求值。同样的分组聚合,Polars 常常比 Pandas 快几倍到几十倍,内存占用也低得多。API 更一致,表达式系统学习曲线虽然陡一点,但写出来的代码可读性更强。
登录解锁全文
以下内容需登录后阅读。注册/登录完全免费,无需付费。
评论(0)
还没有评论
延伸阅读
公众号
百宝软件工作室
