向Pandas添加并行计算

也许您已经面临着在熊猫数据帧上进行并行计算的任务。这个问题既可以通过本机Python来解决,也可以借助一个出色的库pandarallel来解决。在本文中,我将展示该库如何允许您使用所有可用容量来处理数据。



该库使您不必考虑线程数,创建进程,并提供了用于监视进度的交互式界面。


安装


pip install pandas jupyter pandarallel requests tqdm

如您所见,我还安装了tqdm。借助它,我将清楚地证明顺序和并行方法在代码执行速度上的差异。


客制化


import pandas as pd
import requests

from tqdm import tqdm
tqdm.pandas()

from pandarallel import pandarallel
pandarallel.initialize(progress_bar=True)

您可以在pandarallel文档中找到设置的完整列表。


创建一个数据框


为了进行实验,请创建一个简单的数据框-100行1列。


df = pd.DataFrame(
    [i for i in range(100)],
    columns=["sample_column"]
)


适用于并行化的任务示例


众所周知,并非所有问题的解决方案都可以并行化。合适的任务的一个简单示例是调用某些外部源,例如API或数据库。在下面的函数中,我调用了一个API,该API向我返回了一个随机单词。我的目标是在数据框中添加一列,其中包含从此API派生的单词。


def function_to_apply(i):
    r = requests.get(f'https://random-word-api.herokuapp.com/word').json()

    return r[0]


df["sample-word"] = df.sample_column.progress_apply(function_to_apply)

, tqdm, — progress_apply apply. , , progress bar.



"" 35 .



, parallel_apply:


df["sample-word"] = df.sample_column.parallel_apply(function_to_apply)


5 .



pandas , pandarallel, Github .



! — .


All Articles