name: csv-data-wrangler description: 使用Python、DuckDB和命令行工具进行高性能CSV处理、解析和数据清洗的专家。适用于处理CSV文件、清洗数据、转换数据集或处理大型表格数据文件。
CSV数据整理专家
目的
提供高效的CSV文件处理、数据清洗和转换的专业知识。处理大型文件、编码问题、格式错误的数据以及表格数据工作流的性能优化。
何时使用
- 高效处理大型CSV文件
- 清洗和验证CSV数据
- 转换和重塑数据集
- 处理编码和分隔符问题
- 合并或拆分CSV文件
- 在表格格式之间转换
- 使用SQL查询CSV(DuckDB)
快速开始
在以下情况下调用此技能:
- 高效处理大型CSV文件
- 清洗和验证CSV数据
- 转换和重塑数据集
- 处理编码和分隔符问题
- 使用SQL查询CSV
不要在以下情况下调用:
- 构建带格式的Excel文件(使用xlsx-skill)
- 数据的统计分析(使用data-analyst)
- 构建数据管道(使用data-engineer)
- 数据库操作(使用sql-pro)
决策框架
按文件大小选择工具:
├── < 100MB → pandas
├── 100MB - 1GB → pandas分块处理或polars
├── 1GB - 10GB → DuckDB或polars
├── > 10GB → DuckDB、Spark或流处理
└── 快速探索 → csvkit或xsv命令行工具
处理类型:
├── 类SQL查询 → DuckDB
├── 复杂转换 → pandas/polars
├── 简单过滤 → csvkit/xsv
└── 流处理 → Python csv模块
核心工作流
1. 大型CSV处理
- 分析文件(大小、编码、分隔符)
- 根据规模选择合适的工具
- 内存受限时进行分块处理
- 处理编码问题(UTF-8、Latin-1)
- 验证每列的数据类型
- 使用适当的引号格式写入输出
2. 数据清洗管道
- 加载样本以了解结构
- 识别缺失和格式错误的值
- 定义每列的清洗规则
- 应用转换
- 验证输出质量
- 记录清洗统计信息
3. 使用DuckDB查询CSV
- 将DuckDB指向CSV文件
- 让DuckDB推断模式
- 直接编写SQL查询
- 将结果导出到新的CSV
- 可选地持久化为Parquet格式
最佳实践
- 始终明确指定编码
- 对大型文件使用分块读取
- 在选择工具前进行分析
- 保留原始文件,写入新文件
- 验证处理前后的行数
- 正确处理带引号的字段和转义符
反模式
| 反模式 | 问题 | 正确方法 |
|---|---|---|
| 全部加载到内存 | 大型文件导致内存不足 | 使用分块或流处理 |
| 猜测编码 | 字符损坏 | 先用chardet检测 |
| 忽略引号 | 字段解析错误 | 使用正确的CSV解析器 |
| 无验证 | 数据静默损坏 | 验证行/列计数 |
| 手动字符串分割 | 在边缘情况下失败 | 使用csv模块或pandas |