Post

pandas和polars

pandas和polars

本来想记录一些基本用法的,但是发现官方文档已经够详细了,再记录就有点多余了。觉着更关键的还是多使用,熟能生巧。不用就忘,这是必不可免的。所以,总结一句话,那就是多写代码

那这篇文章要做什么呢,我也在思考,不如先做个总结和对比吧。

(以下介绍均来自深度求索

pandas介绍

诞生于2008年,是 Python 数据科学生态的核心工具之一

  • 底层使用 NumPy 数组,支持丰富的数值计算和向量化操作
  • 适合中小规模数据(GB级别以内)
  • 支持数据清洗、聚合、时间序列、合并、可视化等操作

局限:

  • 默认单线程运行,处理大数据时效率较低;
  • 操作时可能产生数据副本,内存利用率不够高效

官方文档:pandas documentation

polars介绍

用 Rust 编写,支持多线程和查询优化,速度比 Pandas 快数倍甚至数十倍

  • 采用 Apache Arrow 内存格式,减少不必要的内存复制
  • 通过 lazy() 模式优化执行计划,提升复杂查询效率
  • 能处理远超内存大小的数据集(通过流式处理)

官方文档:Index - Polars user guide
API文档:Python API reference — Polars documentation

对比

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import polars as pl

df_pd = pd.DataFrame(
    {
        "name": ["alice", "ben", "chole", "daniel"],
        "age": [23, 21, 20, 24],
        "weight": [57.9, 72.5, 53.6, 83.1]
    }
)

df_pl = pd.DataFrame(
    {
        "name": ["alice", "ben", "chole", "daniel"],
        "age": [23, 21, 20, 24],
        "weight": [57.9, 72.5, 53.6, 83.1]
    }
)

列的引用

This post is licensed under CC BY 4.0 by the author.