SuperAPI AI 工具集

data_analysis

数据与分析

查看项目

更新于 10-15 09:00

技能介绍

用途

该技能是一套使用 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() 理解并优化查询计划

限制

资料未提供该技能的具体收费、价格、平台支持范围或性能指标等信息。