10分钟学会pyarrow
由think创建,最终由small_q 被浏览 670 用户
Apache Arrow介绍
Apache arrow是高性能的,用于内存计算的,列式数据存储格式。PyArrow是apache arrow的python库,PyArrow与NumPy、pandas和内置的Python对象有很好的集成。它们是基于Arrow的C++实现。
Hello World
进入编写策略,新建 > 通用策略 > 空白notebook,拷贝并运行如下代码
import pyarrow as pa
print(pa.scalar("Hello World"))
Pandas DataFrame 转 PyArrow Table
df = pd.DataFrame({'col1': [10, np.nan, 2.5], 'col2': ['hello', 'world', 'ya'], 'col3': [True, False, True]})
table = pa.Table.from_pandas(df)
table
PyArrow Table 转 Pandas DataFrame
df = table.to_pandas()
内存与IO接口
pyarrow.Buffer
data = b'Hello World'
# 从bytes构建buffer
buf = pa.py_buffer(data)
print(buf)
print(buf.size)
print(memoryview(buf))
# 转换为 python bytes
print(buf.to_pybytes())
Memory Pools
所有内存分配和释放(如C 中的malloc和free)都在MemoryPool中。我们可以精确跟踪已分配的内存量
print(pa.total_allocated_bytes())
从默认内存池分配空间
buf = pa.allocate_buffer(1024, resizable=True)
print(pa.total_allocated_bytes())
# 调整大小
buf.resize(2048)
print(pa.total_allocated_bytes())
输入和输出
Arrow C++ 库为不同类型的 IO 对象提供了几个抽象接口:
- 只读流
- 支持随机访问的只读文件
- 只写流
- 支持随机访问的只写文件
- 支持读取、写入和随机访问的文件
\