SuperAPI AI 工具集

polars

数据与分析

查看项目

更新于 10-16 04:09

技能介绍

Polars 是一个高性能 DataFrame 库,面向快速数据处理,具备惰性求值、并行执行和内存高效等特性,可在任意规模数据集上使用。该技能帮助掌握 Polars 的数据处理能力。

适用场景 适合在以下情况使用 Polars:处理超出 pandas 能力的大型数据集(10GB+);对数据转换速度有极致要求;内存受限、需要高效利用内存;希望自动利用全部 CPU 核心进行并行处理;执行复杂聚合,如分组、窗口函数、滚动计算;需要在执行前进行查询优化(惰性求值);构建生产级 ETL 管道;处理大于内存的流式数据。

不适合在以下情况使用 Polars:必须依赖 pandas 专属生态库;数据集较小(低于 100MB,pandas 已足够);已有大量 pandas 遗留代码;需要与 Matplotlib/Seaborn 直接集成(这些工具与 pandas 配合更好);时间序列需求特殊、某些 pandas 时间序列特性更成熟。

安装 基础安装:pip install polars;安装全部可选依赖:pip install 'polars[all]';按需安装特定扩展:pip install 'polars[numpy,pandas,pyarrow,fsspec,connectorx,xlsx2csv,deltalake,timezone]';使用 uv(推荐):uv pip install polars pyarrow connectorx。

主要能力

  1. DataFrame 创建与 I/O:可从 Python 字典、NumPy 数组、字典列表创建 DataFrame,并可显式指定 schema;读取 CSV、Parquet(推荐用于大数据)、多个 Parquet(支持 glob)、JSON、JSON Lines、Excel、Delta Lake,以及通过 ConnectorX 从 SQL 数据库读取、从 URL 读取;写出 CSV、Parquet(支持 zstd/lz4/snappy/gzip/brotli 压缩及压缩级别、统计信息、行组大小)、JSON/NDJSON、Delta Lake、IPC/Arrow 格式。
  2. 惰性求值与查询优化:使用 pl.scan_csv 等创建 LazyFrame,链式操作后通过 explain() 查看查询计划、collect() 执行、collect(streaming=True) 流式执行、fetch(n) 仅取前 N 行;优化器会自动进行谓词下推、投影下推、合并/重排操作、消除冗余操作;可用 sink_parquet 将结果直接写入文件,进一步提升内存效率。
  3. 表达式 API:支持列选择(含正则、pl.all()、pl.exclude())、算术运算、条件表达式(pl.when().then().otherwise())、字符串操作、列表操作、结构体操作、日期时间操作(年、月、日、星期、周、季度、格式化等)。
  4. 分组与聚合:group_by().agg() 支持求和、均值、最值、标准差、计数、分位数、方差、偏度等;支持多分组键、保持顺序、动态聚合表达式、条件聚合、first/last、head/tail、唯一值统计,以及通过 map_elements 自定义聚合。
  5. 窗口函数:over() 支持组内排名、累计求和/最大值/最小值/计数、shift 滞后与领先、百分比变化、滚动均值/求和/标准差/最小值/最大值、基于时间的滚动窗口(rolling_mean_by、rolling_sum_by)、指数加权(ewm_mean、ewm_std)。
  6. 连接与拼接:支持 inner、left、right、full、cross、semi、anti 连接;可按多列连接、不同列名连接、指定重复列后缀;支持垂直拼接多个 DataFrame。

使用方式 通过 Python 导入 import polars as pl,创建 DataFrame 或使用 scan_* 函数构建惰性查询,链式调用表达式与聚合方法,最后 collect 或写出结果。示例代码覆盖上述各能力,可直接参考。

限制 文档中未提供关于收费、价格、平台支持或性能基准的具体信息;上述不适用场景为资料中明确列出的排除条件。

(内容基于所提供的技能说明整理,未添加额外事实。)