CSV Data Pipeline 是一个面向表格数据的处理技能,使用标准命令行工具和 Python 3 完成对 CSV、TSV、JSON、JSON Lines 等格式的处理。除 Python 3 标准库外,无需外部依赖。
用途
当用户提供 CSV、TSV 或 JSON 文件并要求分析、转换或生成报告时,可使用本技能。典型用途包括:连接、过滤、分组或聚合表格数据;在格式之间转换(如 CSV 转 JSON、JSON 转 CSV 等);对杂乱数据进行去重、排序或清洗;生成汇总统计或报告;以及 ETL 工作流(从一种格式提取、转换、加载到另一种格式)。
主要能力
本技能的核心脚本是 csv_tool.py,一个集成的 CSV/JSON 处理工具,仅依赖 Python 3 标准库。它提供以下子命令:
- inspect:查看数据文件的行数、列名以及每列非空值的数量。
- filter:按列过滤行,支持的操作符包括 eq、neq、gt、gte、lt、lte、contains、startswith、endswith。
- sort:按列排序,支持升序或降序,并可通过 --numeric 进行数值排序。
- dedup:按指定列(或省略时按所有列)去重。
- aggregate:分组聚合,支持 sum、avg、count、min、max 函数。
- join:连接两个数据集,支持 inner 和 left 连接类型。
- convert:在 csv、json、jsonl(JSON Lines)、tsv 之间转换格式。
- report:生成 Markdown 摘要表,按分组输出 count、sum、avg、min、max。
- clean:清洗数据,去除空白、将空值(N/A、null、None)规范化为空、规范化布尔值。
使用方式
使用前需确保 Python 3 可用,可运行 python --version 检查。若脚本执行出错,应确认 Python 3 可用后重新运行完全相同的命令。
各子命令的基本调用形式如下:
- 探查:python scripts/csv_tool.py inspect "DATA_FILE"
- 过滤:python scripts/csv_tool.py filter "DATA_FILE" --column COLUMN_NAME --op OPERATOR --value VALUE --output "OUTPUT_FILE"
- 排序:python scripts/csv_tool.py sort "DATA_FILE" --column COLUMN_NAME --order asc --output "OUTPUT_FILE"
- 去重:python scripts/csv_tool.py dedup "DATA_FILE" --columns "col1,col2" --output "OUTPUT_FILE"
- 聚合:python scripts/csv_tool.py aggregate "DATA_FILE" --group-by COLUMN --agg-column VALUE_COL --func sum --output "OUTPUT_FILE"
- 连接:python scripts/csv_tool.py join "LEFT_FILE" "RIGHT_FILE" --on KEY_COLUMN --how inner --output "OUTPUT_FILE"
- 转换:python scripts/csv_tool.py convert "DATA_FILE" --to json --output "OUTPUT_FILE"
- 报告:python scripts/csv_tool.py report "DATA_FILE" --group-by CATEGORY_COL --value-column VALUE_COL --output "report.md"
- 清洗:python scripts/csv_tool.py clean "DATA_FILE" --output "CLEAN_FILE"
决策指引:快速了解数据用 inspect;过滤、排序、去重用对应子命令;汇总原始数据用 aggregate,需要 Markdown 输出用 report;合并文件用 join 按共享键连接;改变格式用 convert。
适用场景
适用于需要对表格数据进行探查、清洗、转换、聚合、连接和报告的任务,尤其适合以命令行方式完成轻量级 ETL 和数据分析工作流。
限制与边界情况
- 大文件(100MB 以上):工具在可能的情况下以流式方式处理数据。
- 编码问题:文件默认按 UTF-8 读取;对于带 BOM 的文件,使用 UTF-8-SIG。
- 带引号字段:Python 的 csv 模块会自动处理 RFC 4180 引号规则。
- 混合类型:数值运算会尝试转换为 float,失败时回退为 0。
关于收费、价格、平台支持范围等信息,资料中暂未提供。