阶段1数据基础●●●●●

数据存储:从CSV到Parquet的进化

我的掌握程度:
q-069精讲

先掌握这个答案

存储阶梯:①CSV:人类可读、通用,适合小数据与交换——性能差(全文件扫描、类型丢失);②Parquet:列式+压缩+类型保留,pandas读写快10-100倍、体积小3-10倍——研究数据主力;③SQLite/DuckDB:单文件数据库,支持SQL查询(只读需要的行)——中间层;④ClickHouse/云存储:TB级。列式原理:按列物理存储,读收盘价只碰收盘价的磁盘块。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

本阶段实战方法 · 把行情数字变成可比较的收益

看股票、基金或策略业绩时,先对齐本金、起止日期、现金流与费用。

  1. 选一个固定区间,记录期初价值、期末价值、分红、出入金和交易费用。
  2. 没有中途出入金时,用(期末价值+已取出分红-期初价值-费用)÷期初价值计算收益;有出入金时先区分时间加权与资金加权。
  3. 用相同区间的基准作比较,同时记录最大亏损;不要单凭一次盈利评价能力。

使用边界

  • 不同期限的收益不可直接排名;年化只是换算,不是未来收益承诺。
  • 模拟价格不是实时行情。普通股票交易手数、T+1和费用应按具体市场规则核对。
背景 · 从一个困惑说起
s-018:TB级行情压垮CSV。个人研究虽到不了TB,但全市场日线十年(百万行级)也足以让CSV的读写速度成为日常折磨——每次打开等一分钟,改个因子等十分钟。
由此产生的问题
CSV/Parquet/SQLite各适合什么场景?列式存储为什么快?标准的数据目录结构怎么组织?
核心概念
存储阶梯:①CSV:人类可读、通用,适合小数据与交换——性能差(全文件扫描、类型丢失);②Parquet:列式+压缩+类型保留,pandas读写快10-100倍、体积小3-10倍——研究数据主力;③SQLite/DuckDB:单文件数据库,支持SQL查询(只读需要的行)——中间层;④ClickHouse/云存储:TB级。列式原理:按列物理存储,读收盘价只碰收盘价的磁盘块。
为什么需要它
①迭代速度=研究产出:因子研究一天跑几十次数据加载,快10倍=每天多几小时研究时间;②类型安全:CSV的股票代码'000001'读入变整数1(前导零消失,经典事故),Parquet保留类型;③版本管理:parquet二进制不适合git,但配「数据快照日期」目录可以固定版本可复现。
实际应用场景
标准目录:data/raw/(原始下载)、data/clean/(清洗后parquet)、data/meta/(日历、成分、行业);命名带快照日期(clean_20240601.parquet)保证实验可复现。
与之前知识的联系
q-061的缓存函数已用parquet(前瞻性铺垫)。数据车间的仓储问题解决后,最后一题是本组的毕业典礼:完整的数据流水线作业。
⚠ 常见误解
  • 我的数据量小用不着Parquet:百万行的CSV读起来已经痛了;工具切换成本半小时,收益终身
  • 数据库一定比文件好:单机研究场景「parquet+pandas」常常优于数据库(无服务、零运维、够快)
  • 数据放一个文件夹就行:无快照管理的目录三个月后自己都说不清哪份数据可信

🤖 AI导师

导师会先检查你的前置知识(数据源、数据量),再用案例、公式和代码帮助理解。此功能需要先启用服务。