用途
该技能是一套使用 Polars(一个高性能 DataFrame 库)进行数据分析的综合工具包,面向表格数据的加载、转换、聚合、可视化与导出等常见任务。它提供操作说明、参考文档以及可直接使用的脚本,帮助完成从数据读取到结果输出的完整分析流程。
主要能力
- 加载数据集:支持 CSV、JSON、Parquet、Excel 以及数据库等格式。
- 数据清洗、过滤与转换:包括列操作、筛选、排序、类型转换等。
- 聚合、分组与透视表。
- 统计分析与摘要统计。
- 时间序列分析与重采样。
- 多数据集的连接与合并。
- 创建可视化图表。
- 将结果导出为多种格式。
使用方式
技能包含参考文档与可执行脚本两部分。
参考文档(reference/)提供特定操作的详细 API 参考与模式:
reference/loading.md:从所有支持格式加载数据reference/transformations.md:列操作、过滤、排序、类型转换reference/aggregations.md:分组、窗口函数、累计合计reference/time_series.md:日期解析、重采样、滞后特征reference/statistics.md:相关性、分布、假设检验设置reference/visualization.md:使用 matplotlib/plotly 创建图表
可直接使用的脚本(scripts/):
scripts/explore_data.py:快速数据集探索与画像scripts/summary_stats.py:生成综合统计报告
快速开始示例:
import polars as pl
from polars import col
# 加载数据
df = pl.read_csv("data.csv")
# 探索
print(df.shape, df.schema)
df.describe()
# 转换与分析
result = (
df.filter(col("value") > 0)
.group_by("category")
.agg(col("value").sum().alias("total"))
.sort("total", descending=True)
)
# 导出
result.write_csv("output.csv")
核心模式包括:
加载数据:
# CSV(最常见)
df = pl.read_csv("data.csv")
# 大文件惰性加载
df = pl.scan_csv("large.csv").filter(col("x") > 0).collect()
# Parquet(推荐用于大数据集)
df = pl.read_parquet("data.parquet")
# JSON
df = pl.read_json("data.json")
df = pl.read_ndjson("data.ndjson") # 换行分隔
过滤与选择:
# 选择列
df.select("col1", "col2")
df.select(col("name"), col("value") * 2)
# 过滤行
df.filter(col("age") > 25)
df.filter((col("status") == "active") & (col("value") > 100))
df.filter(col("name").str.contains("Smith"))
转换:
# 添加/修改列
df = df.with_columns(
(col("price") * col("qty")).alias("total"),
col("date_str").str.to_date("%Y-%m-%d").alias("date"),
)
# 条件值
df = df.with_columns(
pl.when(col("score") >= 90).then(pl.lit("A"))
.when(col("score") >= 80).then(pl.lit("B"))
.otherwise(pl.lit("C"))
.alias("grade")
)
聚合:
# 分组
df.group_by("category").agg(
col("value").sum().alias("total"),
col("value").mean().alias("avg"),
pl.len().alias("count"),
)
# 窗口函数
df.with_columns(
col("value").sum().over("group").alias("group_total"),
col("value").rank().over("group").alias("rank_in_group"),
)
导出:
df.write_csv("output.csv")
df.write_parquet("output.parquet")
df.write_json("output.json", row_oriented=True)
迭代检查点
技能在分析流程中设置了检查点,在各阶段向用户展示中间结果并请求确认:
| 步骤 | 展示内容 | 用户输入类型 |
|---|---|---|
| 数据加载 | 形状、列、样本行 | “这是正确的数据吗?” |
| 数据探索 | 摘要统计、数据质量问题 | “有关注的列吗?” |
| 转换 | 前后对比 | “这个转换看起来正确吗?” |
| 分析 | 关键发现、图表 | “需要深入分析什么吗?” |
| 导出 | 输出预览 | “可以保存了吗,还是有修改?” |
适用场景
- 加载数据集(CSV、JSON、Parquet、Excel、数据库)
- 数据清洗、过滤与转换
- 聚合、分组与透视表
- 统计分析与摘要统计
- 时间序列分析与重采样
- 连接与合并多个数据集
- 创建可视化图表
- 将结果导出为多种格式
最佳实践
- 对大数据集使用惰性求值:
pl.scan_csv()+.collect() - 尽早过滤以减少数据量,再进行高开销操作
- 只选择需要的列以降低内存占用
- 存储优先使用 Parquet——I/O 更快、压缩更好
- 使用
.explain()理解并优化查询计划
限制
资料未提供该技能的具体收费、价格、平台支持范围或性能指标等信息。