跳转至

大 CSV 处理方案

1. 当前数据特点

数据/data 下有 9 个 UserBehavior_part_*.csv 文件,每个约 389MB,总量约 3.5GB。文件无表头,字段为:

user_id,item_id,category_id,behavior_type,timestamp

Excel 直接打开会遇到两个问题:

  • 单个文件接近 400MB,打开和保存很慢。
  • Excel 单表最大行数有限,不适合承载千万级记录。

2. 推荐路线

路线 A:Python 分块读取

使用 pandas read_csv(chunksize=...) 或 Python csv 流式读取。

适合:

  • 数据清洗。
  • 质量检查。
  • 分组聚合。
  • 输出指标表。

推荐原因:门槛低,容易写进操作手册,适合实训项目。

路线 B:DuckDB 直接查询 CSV

DuckDB 可以直接对 CSV 和 Parquet 做 SQL 分析,适合本地 OLAP。

适合:

  • 快速聚合。
  • 多文件查询。
  • 生成中间表。

推荐原因:SQL 表达清晰,处理大 CSV 比 Excel 更稳。

路线 C:先转 Parquet

把清洗后的 CSV 转成 Parquet,再做后续分析。

适合:

  • 后续多次反复分析。
  • 看板和推荐脚本复用。

推荐原因:Parquet 体积更小,读取更快,字段类型更稳定。

3. 推荐实施顺序

  1. Python 流式读取原始 CSV。
  2. 完成字段命名、时间转换和异常过滤。
  3. 输出清洗后的聚合表。
  4. 如时间允许,再把清洗明细转为 Parquet。
  5. Excel 只承载汇总结果,不承载原始大数据。

4. 输出产物

  • 代码/清洗/clean.py
  • 代码/指标计算/metrics.py
  • 其他/数据质量检查/LZ-组6_数据质量检查表_v1.xlsx
  • 清洗明细大文件外链。
  • 聚合指标表,可提交到仓库。

5. 风险控制

  • 不把 3.5GB 原始 CSV 提交 Git。
  • 脚本内写清数据路径配置。
  • 大结果文件走外链登记。
  • 所有指标结果保留生成时间和数据来源说明。