Polars:快过pandas的Python数据处理库

Polars是一个用Rust编写的DataFrame库,作为专注性能的pandas替代品在Python数据处理领域崭露头角。对于大型数据集,它不是比pandas略快——而是常常快10到100倍,同时使用的内存显著更少。

Polars为什么更快

Polars使用延迟求值引擎(Lazy API),在执行前构建查询计划并对其优化——类似于SQL查询优化。它逐列而非逐行处理数据(列式执行),默认多线程(pandas主要是单线程的),并在内部使用Apache Arrow的内存格式。对于一个1000万行的CSV文件,pandas中需要30秒的操作在Polars中通常2到3秒完成。

语法

Polars语法与pandas不同,初始学习曲线更陡。表达式系统(pl.col(“列名”).filter(…).sort(…))比pandas方法链更明确,但更可组合。一旦熟悉,相同的操作变得可读且可预期。Polars没有索引(与pandas不同)——这消除了一种常见的bug来源。

大数据的Lazy API

LazyFrame API是Polars最强大的功能:操作在你调用.collect()之前不会执行。这让Polars优化整个查询(跳过不必要的读取、提前推入过滤器、选择最有效的连接策略)。对于大于可用内存的文件,Polars可以通过LazyFrame分块流式处理数据。

什么时候用Polars vs pandas

以下情况使用Polars:数据量大(10万行以上)、性能重要、你在开始新项目。以下情况坚持使用pandas:团队已经熟悉pandas、需要pandas特定的生态系统兼容性(GeoPandas、某些机器学习库),或数据量小到速度无关紧要。Polars可以通过to_pandas()和from_pandas()方法与pandas轻松互转。

上一篇 Polars: The Fast Python DataFrame Library That Beats Pandas
下一篇 Leipzig's Food Scene: A Hidden Gem in Eastern Germany