用途:在单机上对超出内存的大型表格数据进行列式分析,尤其适合对本地 Vaex HDF5 或 Arrow 文件做重复归约与直方图统计。表达式和虚拟列会延迟计算,归约通常立即执行。外存存储并不意味着所有操作都受内存限制:排序、连接、大型分组字典、物化以及许多估计器拟合仍需大量内存。
安装:建议使用独立环境,仓库默认 Python 版本高于此发布版支持范围: uv venv --python 3.12 .venv-vaex uv pip install --python .venv-vaex/bin/python "vaex-core==4.19.0" "vaex-hdf5==0.15.0" "vaex-viz==0.6.0" 可选机器学习:uv pip install --python .venv-vaex/bin/python "vaex-ml==0.19.0" Windows 使用 .venv-vaex\Scripts\python.exe 作为解释器路径。vaex 4.19.0 元包会安装更多集成,核心工作流不需要。核心 4.19.0 声明 Python >=3.9,<3.13、pandas <3、Dask <2024.9、NumPy <3,不要单独放宽这些约束。Arrow 支持在核心包中,FITS 需要 vaex-astro。可用性取决于兼容的二进制轮子;编译可选 annoy 依赖需要 C++ 工具链。
工作流:先确定行标识、单位、模式、缺失值编码和预期计数。打开文件用 vaex.open;HDF5 必须使用兼容表布局,任意 HDF5 科学数组不会自动成为 Vaex 表。选择所需列并用表达式派生值;虚拟列避免存储完整数组,但仍需表达式元数据和求值缓冲区。在归约前记录过滤/选择与缺失情况;用 delay=True 批量处理独立统计,再 df.execute() 并取各 promise 的 .get()。与独立计算的小子集校验计数、单位、连接基数和数值结果。绘图使用聚合网格或有界样本,显示覆盖情况,避免静默隐藏稀有/极端观测。直接分块导出,导出会求值虚拟列,无需先 materialize();替换源数据前重新打开核对计数、模式与数值。
限制与注意:df.x.mean() 返回计算结果,不是惰性表达式。近似百分位用 df.percentile_approx('x', percentage=50),Expression.quantile 不是核心 4.19.0 API。分组输出用显式 vaex.agg 对象命名。join 默认左连接,需声明 how、校验键,并在过滤需定义连接成员时提取已过滤输入;每侧只接受一个键表达式。.values、.to_numpy()、不分块的 .to_pandas_df()、.materialize() 和普通 sklearn Predictor.fit() 可能分配完整数组。状态文件携带变换和潜在的可序列化可执行对象,只加载可信产物,且不携带原始数据集或证明其来源。其他平台、收费与性能基准暂未提供。