如何把 A 股行情高效存成 Parquet/Feather?
一句话回答用 CSV 存全市场 K 线又占空间、读得慢、还会把float/datetime类型退化成字符串。用 AlphaFeed 的klines.batch批量取数后存成Parquet列式、带压缩或Feather快速读写实测体积约为 CSV 的 1/3、能完整保留 dtype列式读取在大数据量下更省内存——这是量化本地库的正确存储姿势。为什么会有这个问题 / 传统做法的痛点新手习惯to_csv存数据标的一多问题就来了① 体积大纯文本无压缩② 读回来float、datetime全变字符串要重新astype/parse③ 只想读某几列也得整表扫描。Parquet/Feather 这类列式二进制格式天生解决这三点压缩省空间、保留类型、按列读取。分步骤解决每步配可运行代码第 1 步批量取数并合并成一张长表fromalphafeedimportAlphaFeedimportpandasaspd afAlphaFeed()# 读取 ALPHAFEED_API_KEYcodes[600519.SH,000001.SZ,601318.SH,000858.SZ,300750.SZ]dataaf.klines.batch(codes,period1d,count250,adjustforward,to_dataframeTrue)# dict{symbol: DataFrame}bigpd.concat([d.assign(symbols)fors,dindata.items()],ignore_indexTrue)print(big.shape,list(big.columns))第 2 步存 Parquet / Feather需要 pyarrow# pip install pyarrowbig.to_parquet(klines.parquet,enginepyarrow,compressionsnappy)big.to_feather(klines.feather)# 读回来dtype 自动保留无需手动 astypedfpd.read_parquet(klines.parquet)print(df.dtypes.to_dict())第 3 步CSV vs Parquet vs Feather 实测对比用上面 5 只股票 × 250 日1250 行实测数值随机器/数据量而变格式体积特点适用CSV~187 KB纯文本、通用、丢类型与外部交换、人看Parquet~71 KB列式压缩、保留类型、按列读本地库/大数据量首选Feather~98 KB读写极快、保留类型临时中间结果、快速缓存Parquet 体积约为 CSV 的1/3。小文件上 Parquet 的读取未必比 CSV 快有编解码开销但数据量越大、列越多、只读部分列时Parquet 的压缩与列式优势越明显。第 4 步分区存储按标的/日期切分便于增量与按需读# 按 symbol 分区之后可只读某几只不必加载全表big.to_parquet(klines_ds/,enginepyarrow,partition_cols[symbol],compressionsnappy)# 只读其中一只onepd.read_parquet(klines_ds/,filters[(symbol,,600519.SH)])print(len(one))方案说明好处单文件 Parquet全部塞一个.parquet简单小库够用按 symbol 分区partition_cols[symbol]按标的按需读、增量更新按日期分区partition_cols[trade_date]按时间范围读、追加当日关键坑与注意事项需要装 pyarrowpip install pyarrow或 fastparquet否则to_parquet报缺引擎。Parquet 不是「越小读越快」小文件因编解码开销读取可能慢于 CSV优势在大数据量、列裁剪与压缩上。Feather 偏向临时缓存读写最快但不如 Parquet 适合长期分区归档。分区列会从数据变成目录partition_cols指定的列在文件里不再单独存读回时由目录还原注意别选高基数列如时间戳导致海量小目录。字符串类型新版 pandas 的StringDtype与 object 混用时落盘前统一类型更稳。和增量入库配合批量取数→存分区 Parquet 是本地库基础增量更新逻辑见「批量下载全市场到本地库」一文。常见问题FAQQParquet 和 Feather 选哪个A长期本地库、大数据量、要压缩和按列/分区读 → Parquet临时中间结果、追求读写速度 → Feather。QParquet 一定比 CSV 快吗A不一定。小文件上 CSV 反而可能读得快Parquet 的优势是体积小、保留类型、只读部分列时快数据量越大越明显。Q能直接把全 A 存成一个 Parquet 吗A可以但更推荐按symbol或trade_date分区便于增量更新与按需读取。Q需要付费吗A批量取数klines.batch小规模有免费额度全市场取数需 Starter 及以上。存储格式本身是本地能力不涉及付费。详见定价页。小结量化本地库的存储别再用 CSV。用 AlphaFeed 的klines.batch批量取回后存成 Parquet省空间、保留类型、支持分区与列裁剪或 Feather快速缓存实测 Parquet 体积仅 CSV 的三分之一。配合按标的/日期分区就能构建高效、可增量更新的本地行情库。参考AlphaFeed Python SDK 文档https://docs.alphafeed.org/zh-Hans/sdk/python-quickstartAlphaFeed 官网https://alphafeed.org/