Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

        

联系锋哥QQ:3320160706

AI编程,程序员挑战年入30~100万高级指南 - 职业规划

Java、Python项目定制找Java1234_小锋老师,专业又靠谱 QQ:3320160706

Java、Python毕设辅导找Java1234_小锋老师,专业又靠谱 QQ:3320160706
当前位置: 主页 > Java文档 > Python技术 >

Polars 2来了,能够处理千万级以上数据,速度是pandas的5-10倍


时间:2026-09-09 15:33来源:http://www.java1234.com 作者:小锋  侵权举报
Polars 2来了,能够处理千万级以上数据,速度是pandas的5-10倍
失效链接处理
Polars 2来了,能够处理千万级以上数据,速度是pandas的5-10倍

 
 
相关截图:
 


主要内容:

先认识一下 Polars
 
Polars 是一个用 Rust 写的 DataFrame 库,Python / Rust / Node.js 都能用。它和 pandas 干的是同一类活:读表、筛选、分组、关联、写出结果。差别在于底层。
 
pandas 主要在 Python 里一块一块处理,单核吃得比较多。Polars 从一开始就按列式存储来设计,计算走 SIMD 向量化,查询还能多核并行。写法上它更像 SQL:你先把整条查询描述清楚,真正执行时再一起优化,而不是每写一行就立刻算一行。
日常开发里,你会经常碰到这两种对象:
 
DataFrame:数据已经在内存里,立刻能看、能改,适合小表和探索。
 
LazyFrame:只记录查询计划,不立刻算。等你调用 collect() 或 sink_parquet() 时,引擎才会真正跑。
 
Polars 1.x 里,collect() 默认走内存引擎,数据得一次性装进 RAM。2.0 把这件事改了,这也是这次版本号直接跳大的原因。
 

Polars 2 到底改了什么
 
官方作者 Ritchie Vink 自己说,希望这次升级对用户是「boring」的——别指望一堆花哨 API,重点是默认值更合理、API 更干净。真正有体感的变化,大概就这几条。
 
1. LazyFrame 默认走流式引擎
这是 2.0 影响最大的一处。以前要自己写 collect(engine="streaming"),现在 engine="auto" 会落到流式引擎上。数据按批次往下推,而不是整张表一口吞掉。官方给出的预期是:大多数查询内存更省,整体大约快 5 倍。
 
副作用也要心里有数:join、group_by、unpivot 这类操作,默认不再保证行顺序。需要稳定顺序时,显式写 maintain_order,或者给结果加一次 sort()。
 
2. 更严格,错误更早暴露
以前一些「好心」的隐式转换,现在会直接报错。比如 is_in 遇到不能无损对齐的类型,不再偷偷把整型压成浮点;横向 concat 行数对不上,也不再默默补 null。字符串转日期,不能再 cast(pl.Date),得用 .str.to_date()。
 
听起来更麻烦,实际是好事。数据对不上时,与其跑了 20 分钟给你一份看起来还行的结果,不如一开始就把问题甩出来。
 
3. 旧 API 删干净了,报错会告诉你该换什么
melt 换成 unpivot,with_row_count 换成 with_row_index。你如果还写旧方法,会收到专门的 AttributeRemovedError / ArgumentRemovedError,错误信息里直接写了替代写法。
 
2.x 后面还会陆续补上更完整的磁盘外计算、新的 IO 插件、更快的 S3 读取、代价模型优化器和 join 重排。2.0 本身更像一次「把地基打正」的版本。





 
 
------分隔线----------------------------


锋哥推荐