AI量化知识树

10分钟学会pyarrow

由think创建,最终由small_q 被浏览 638 用户

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 对象提供了几个抽象接口:

  • 只读流
  • 支持随机访问的只读文件
  • 只写流
  • 支持随机访问的只写文件
  • 支持读取、写入和随机访问的文件


\

评论
  • 666