[ PROMPT_NODE_27558 ]
core_dataframes
[ SKILL_DOCUMENTATION ]
# 核心 DataFrames 与数据加载
本参考涵盖 Vaex DataFrame 基础知识、从各种来源加载数据以及理解 DataFrame 结构。
## DataFrame 基础
Vaex DataFrame 是处理大型表格数据集的核心数据结构。与 pandas 不同,Vaex DataFrames:
- 使用 **惰性求值** - 操作仅在需要时执行
- 支持 **核外 (out-of-core)** 处理 - 数据无需全部放入内存
- 支持 **虚拟列** - 无内存开销的计算列
- 通过优化的 C++ 后端实现 **每秒十亿行** 的处理速度
## 打开现有文件
### 主要方法: `vaex.open()`
加载数据的最常用方式:
python
import vaex
# 支持多种格式
df = vaex.open('data.hdf5') # HDF5 (推荐)
df = vaex.open('data.arrow') # Apache Arrow (推荐)
df = vaex.open('data.parquet') # Parquet
df = vaex.open('data.csv') # CSV (大文件较慢)
df = vaex.open('data.fits') # FITS (天文)
# 可将多个文件作为一个 DataFrame 打开
df = vaex.open('data_*.hdf5') # 支持通配符
**关键特性:**
- **HDF5/Arrow 瞬间加载** - 内存映射文件,无加载时间
- **处理大型 CSV** - 自动对大 CSV 文件进行分块
- **立即返回** - 惰性求值意味着在需要前不进行计算
### 特定格式加载器
python
# 带选项的 CSV
df = vaex.from_csv(
'large_file.csv',
chunk_size=5_000_000, # 分块处理
convert=True, # 自动转换为 HDF5
copy_index=False # 若存在则不复制 pandas 索引
)
# Apache Arrow
df = vaex.open('data.arrow') # 原生支持,速度极快
# HDF5 (最优格式)
df = vaex.open('data.hdf5') # 通过内存映射实现瞬间加载
## 从其他来源创建 DataFrames
### 从 Pandas
python
import pandas as pd
import vaex
# 转换 pandas DataFrame
pdf = pd.read_csv('data.csv')
df = vaex.from_pandas(pdf, copy_index=False)
# 警告:这会将整个 pandas DataFrame 加载到内存中
# 对于大数据,建议直接使用 vaex.from_csv()
### 从 NumPy 数组
python
import numpy as np
import vaex
# 单个数组
x = np.random.rand(1_000_000)
df = vaex.from_arrays(x=x)
# 多个数组
x = np.random.rand(1_000_000)
y = np.random.rand(1_000_000)
df = vaex.from_arrays(x=x, y=y)
### 从字典
python
import vaex
# 列表/数组字典
data = {
'name': ['Alice', 'Bob', 'Charlie'],