Agent Skills
返回列表
📊

Polars 极速 DataFrame

数据分析 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 中的说明,在你的 AI 助手中安装技能 @org-02qudk26/polars。

技能介绍

你在处理什么场景

本地或管道里的表格数据一旦上到 GB 级、或查询链很长,pandas 往往变成「读得进、算得慢」:每一步立刻物化、索引与隐式类型转换还会悄悄拖慢热路径。若你已经在用 Python 做 ETL、特征工程或 ad hoc 分析,又希望保留 DataFrame 心智模型,就需要一个在表达式与执行计划层面做优化的库。

技能如何组织知识

本技能围绕 Polars(Apache Arrow 上的 Python/Rust DataFrame)展开,把日常分析拆成可检索的主题,而不是堆 API 清单:

  • 表达式(Expressions):用 pl.col("column_name") 引用列,通过链式 select / with_columns / filter / group_by 组合转换;表达式在上下文中才执行,便于复用与优化。
  • 即时 vs 惰性:DataFrame 路径适合小表与交互调试;LazyFrame 适合大表、复杂管道与「只要部分列/行」——执行前会做查询优化、谓词/投影下推与并行。
  • 常见操作与 I/O:选择、过滤、分组聚合、over() 窗口(含 group_to_rows / explode / join 等映射策略);读写 CSV、Parquet、JSON、Excel、数据库与云存储等,Parquet 通常作为性能首选格式。
  • 与 pandas 的差异:无索引(整数位置)、严格类型、默认并行;技能内提供操作对照(如 df.assign → with_columns、groupby.transform → over)与语法模式说明。
  • 性能取向的实践:大集优先惰性;热路径尽量留在表达式 API,少在循环里用 Python UDF(必要时才 map_elements());尽早投影列、选对 dtype(如低基数 Categorical、合适的整数宽度)。

需要某一主题的完整示例时,技能会指向 references/ 下的专题文档(核心概念、操作、I/O、连接/透视、pandas 迁移、最佳实践),按需加载而非一次塞满上下文。

适用边界

Polars 不是「替你做业务建模」的框架:复杂逻辑若大量依赖自定义 Python 函数,并行优势会打折。与 pandas 混用时,要接受无索引与严格类型带来的写法差异;从旧 notebook 迁移时,建议先对照迁移表改关键路径,再在大数据场景切到 LazyFrame + Parquet。

使用场景

  • 维护分区 Parquet 的日批 ETL,需先 `filter` 再 `group_by` 聚合写回,pandas 内存顶不住时用 `LazyFrame` 搭整条查询。
  • 从 S3 或多文件 CSV 拉日志,用 `pl.col` 表达式清洗、`join` 维表并输出 Parquet,热路径避免 `map_elements` 式 Python 循环。
  • 手头 pandas notebook 算得慢,要按对照表把 `assign`/`groupby.transform` 改成 `with_columns` 与 `over` 窗口,并在大表上切惰性执行。
  • 大宽表探查时只需少数列与条件行,用惰性 API 做投影与谓词下推,确认计划合理后再 `collect`,减少全表扫描。

适合人员

  • 维护 GB 级明细批处理的数仓/数据工程师,要在表达式链里完成过滤、聚合与落盘,并控制内存峰值。
  • 长期用 pandas 出报表的分析同学,业务逻辑不变但需适应无索引、严格类型,并对照迁移表改 `select`/`filter`/`group_by`。
  • 做用户或订单级窗口特征(累计、排名)的特征工程同学,希望用 `over()` 原生并行替代大量 `transform` UDF。
  • 在 Python 服务里读写 Parquet/JSON、做 join 与透视的应用开发者,想统一 I/O 与 `DataFrame`/`LazyFrame` 转换写法。