Vaex 是一个高性能 Python 库,专为惰性、核外(out-of-core)DataFrame 设计,用于处理和可视化无法放入内存的表格数据集。资料称 Vaex 每秒可处理超过十亿行,能够对数十亿行的数据集进行交互式数据探索与分析。
【用途与适用场景】 当需要处理大于可用内存的表格数据集(从 GB 到 TB 级)时可以使用 Vaex;此外还适用于:对海量数据集执行快速统计聚合;为大型数据集创建可视化与热力图;在大数据上构建机器学习流水线;在 CSV、HDF5、Arrow、Parquet 等数据格式之间转换;需要惰性求值和虚拟列以避免内存开销的场景;以及处理天文数据、金融时间序列或其他大规模科学数据集。
【主要能力】 Vaex 提供六个主要能力领域,每项在 references 目录中有详细文档:
- DataFrame 与数据加载:从文件(HDF5、CSV、Arrow、Parquet)、pandas DataFrame、NumPy 数组和字典加载与创建 Vaex DataFrame,包括高效打开大文件、从 pandas/NumPy/Arrow 转换、使用示例数据集、理解 DataFrame 结构。
- 数据处理与操作:在不把全部数据加载进内存的情况下进行筛选、创建虚拟列、使用表达式和聚合数据,包括筛选与选择、虚拟列与表达式、groupby 操作与聚合、字符串操作与日期时间处理、缺失数据处理。
- 性能与优化:利用惰性求值、缓存策略和内存高效操作,包括理解惰性求值、使用 delay=True 进行批处理、按需物化列、缓存策略、异步操作。
- 数据可视化:为大型数据集创建交互式可视化,包括一维和二维图、热力图、与选择配合使用、自定义图与子图。
- 机器学习集成:使用变换器、编码器以及与 scikit-learn、XGBoost 等框架集成来构建 ML 流水线,包括特征缩放与编码、PCA 与降维、K-means 聚类、与 scikit-learn/XGBoost/CatBoost 集成、模型序列化与部署。
- I/O 操作:以最优性能高效读写各种格式的数据,包括文件格式建议、导出策略、使用 Apache Arrow、大文件 CSV 处理、服务器与远程数据访问。
【使用方式】 大多数 Vaex 任务可遵循如下快速开始模式:
import vaex
1. 打开或创建 DataFrame
df = vaex.open('large_file.hdf5') # 或 .csv, .arrow, .parquet
或者
df = vaex.from_pandas(pandas_df)
2. 探索数据
print(df) # 显示首尾行与列信息 df.describe() # 统计摘要
3. 创建虚拟列(无内存开销)
df['new_column'] = df.x ** 2 + df.y
4. 使用选择进行筛选
df_filtered = df[df.age > 25]
5. 计算统计量(快速、惰性求值)
mean_val = df.x.mean() stats = df.groupby('category').agg({'value': 'sum'})
6. 可视化
df.plot1d(df.x, limits=[0, 100]) df.plot(df.x, df.y, limits='99.7%')
7. 按需导出
df.export_hdf5('output.hdf5')
最佳实践包括:对大型数据集使用 HDF5 或 Apache Arrow 格式以获得最佳性能;使用虚拟列而非物化数据以节省内存;执行多项计算时用 delay=True 批量操作;导出为高效格式而不是将数据保留为 CSV;使用表达式进行复杂计算而无需中间存储;用 df.stat() 分析内存使用并优化操作。
常用模式一:将大型 CSV 转换为 HDF5: import vaex
打开大型 CSV(自动分块处理)
df = vaex.from_csv('large_file.csv')
导出为 HDF5 以便将来更快访问
df.export_hdf5('large_file.hdf5')
以后加载是瞬时的
df = vaex.open('large_file.hdf5')
常用模式二:高效聚合:
使用 delay=True 批量执行多个操作
mean_x = df.x.mean(delay=True) std_y = df.y.std(delay=True) sum_z = df.z.sum(delay=True)
一次性执行全部
results = vaex.execute([mean_x, std_y, sum_z])
常用模式三:用于特征工程的虚拟列:
无内存开销——即时计算
df['age_squared'] = df.age ** 2 df['full_name'] = df.first_name + ' ' + df.last_name df['is_adult'] = df.age >= 18
参考文件使用建议:基础操作从 references/core_dataframes.md 和 references/data_processing.md 入手;性能问题查看 references/performance.md;可视化任务使用 references/visualization.md;ML 流水线参考 references/machine_learning.md;文件 I/O 查阅 references/io_operations.md。
【限制】 资料未提供关于平台支持、收费与价格、具体性能基准细节及运行环境限制的更多信息。