1 pyarrow简介

pyarrow是用于Apache Arrow的Python库。这个库为Arrow c++库提供的功能提供了Python API,以及用于与panda、NumPy和Python生态系统中的其他软件进行箭头集成和互操作性的工具。Apache Arrow是一个用于内存分析的开发平台。它包含一组技术,使大数据系统能够快速处理和移动数据。

Arrow特点
Format: Apache Arrow为平面和层次数据定义了一种与语言无关的柱状内存格式,这种格式的组织用于在现代硬件(如cpu和gpu)上进行高效的分析操作。Arrow内存格式还支持零拷贝读取,用于不需要序列化开销的闪电般的数据访问。

Libraries: Arrow的库实现了这种格式,并为一系列用例提供了构建块,包括高性能分析。许多流行的项目使用箭头有效地发送柱状数据,或者作为分析引擎的基础。库可用于C、c++、c#、Go、Java、JavaScript、MATLAB、Python、R、Ruby和Rust。请参阅如何安装和启动。

Ecosystem:Apache Arrow是由开发人员社区创建并为其服务的软件。我们致力于开放、友好的沟通和协商一致的决策。我们的提交者来自不同的组织和背景,我们欢迎所有人与我们一起参与。

2 pyarrow安装

Pyarrow安装很简单,如果有网络的话,使用以下命令就行:

#pip install pyarrow

Pyarrow比较大,可能使用官方的源导致安装失败,我有两种解决办法:

方法一:更换数据源
可以使用国内的源,比如清华的源,安装命令如下:

#pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple pyarrow

方法二:离线安装
先到官网或者镜像源下载安装包

pyarrow下载地址

在这里插入图片描述

下载后使用以下命令安装:

#pip install pyarrow-2.0.0-cp38-cp38-win_amd64.whl

3 pyarrow使用

前面讲了pyarrow的简介和安装,接下来我们试试pyarrow到底有没有优势,我们知道,在做数据处理的时候,IO操作将占用大量的时间,提高IO操作效率,也就提升了整体效率,我们就拿大家熟悉的pandas来比较。

代码如下:

import time

from pyarrow import csv

def load_by_arrow(filePath):
    # API :https://arrow.apache.org/docs/python/generated/pyarrow.csv.read_csv.html
    table = csv.read_csv(filePath)
    
    return table.to_pandas()

import pandas as pd
def load_by_pandas(filePath):
    df = pd.read_csv(filePath)
    
    return df
    

if __name__ == "__main__":  
    filePath = 'workdf.csv'
        
    start = time.time()
    pa_df = load_by_arrow(filePath)
    end = time.time()
    print(end-start)
    
    start = time.time()
    pd_df = load_by_pandas(filePath)
    end = time.time()
    print(end-start)

运行结果如下:
在这里插入图片描述

我们可以看到,pyarrow的读取时间是pandas的两倍还多,可想而知,如果处理大批量的数据,效果将更加明显。




欢迎访问我的网站:

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书

接收更多精彩文章及资源推送,请订阅我的微信公众号:

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐