Pandas Format Benchmark
Pandas格式性能基准测试工具,用于比较不同数据存储格式在Pandas中的读写性能和文件大小。
项目简介
本项目旨在帮助开发者选择最适合其应用场景的数据存储格式。通过生成大量测试数据,并对多种常见格式(CSV、Parquet、Feather、HDF5、ORC、Pickle)进行多次读写测试,计算平均性能指标和文件大小,从而为数据格式的选择提供客观依据。
功能特性
- 支持多种数据格式的性能测试:
- CSV (.csv)
- Parquet (.parquet)
- Feather (.feather)
- HDF5 (.h5)
- ORC (.orc)
- Pickle (.pkl)
- 可自定义测试数据量(行数)
- 可自定义测试轮数
- 可选择测试特定格式子集
- 自动生成性能对比报告
- 显示最快的写入/读取格式和最小的文件格式
安装要求
- Python >= 3.13
- 依赖包:
- numpy >= 2.3.3
- pandas >= 2.3.3
- pyarrow >= 21.0.0
- tables >= 3.10.2
- tqdm >= 4.67.1
安装方法
推荐使用uv进行安装:
# 进入项目
cd PandasFormatBenchmark
# 使用uv安装依赖
pip install uv
uv sync
使用方法
基本使用
运行默认测试(100万行数据,所有格式,3轮测试):
python -m main
或使用脚本命令:
benchmark
自定义参数
# 指定测试数据行数
benchmark --rows 500000
# 指定测试特定格式
benchmark --formats csv parquet feather
# 指定测试轮数
benchmark --rounds 5
# 组合使用多个参数
benchmark --rows 2000000 --formats parquet feather orc --rounds 10
参数说明
--rows: 测试数据行数,默认为1,000,000--formats: 要测试的格式列表,默认包含所有支持的格式--rounds: 每种格式的测试轮数,默认为3轮
测试数据结构
测试数据包含以下列:
id: 整数ID(int32)name: 随机字符串(10个字符)value: 随机浮点数timestamp: 时间戳category: 分类数据(A/B/C/D)flag: 布尔值
输出示例
正在生成 1000000 行随机数据...
测试格式: 100%|█████████████████████████████████████████████████████████████████| 6/6 [00:52<00:00, 8.67s/it]
===== 性能测试结果 =====
format write_sec read_sec size_mb
CSV 6.676 1.906 65.82
PARQUET 0.450 0.513 30.36
FEATHER 0.251 0.454 31.32
HDF5 1.055 0.746 38.67
ORC 0.672 0.538 20.21
PICKLE 0.406 0.185 33.38
结论:
- 最快写入: FEATHER (0.251s)
- 最快读取: PICKLE (0.185s)
- 文件最小: ORC (20.21 MB)
注意事项
- 测试过程中会在项目目录下创建
output文件夹用于存放临时测试文件 - 大量数据测试可能需要较长时间,请耐心等待
- HDF5格式使用table格式以支持category类型
- ORC格式会自动将category类型转换为字符串以避免兼容性问题
许可证
MIT License
Description
Languages
Python
100%