一个简单的替换平行化熊猫的dropin'apply`
parappl的Python项目详细描述
副产
使用joblib
对大型系列/数据帧上的并行化pandasapply()
进行简单的插入式替换。通过将序列/数据帧分成多个块并同时运行apply
来工作。作为经验法则,只有当您有1000万行及以上的行时才使用parapply
(请参阅下面的基准测试)。在
通过运行pip install parapply
进行安装。需要joblib
、numpy
、和{
简单用法
系列:parapply(srs, fun)
而不是srs.apply(fun)
数据帧:parapply(df, fun, axis)
而不是df.apply(fun, axis)
对于更精细的控制:
+n_jobs
要确定并发作业的数量,
+n_chunks
用于分割序列/数据帧的块数
示例:
import pandas as pd
import numpy as np
from parapply import parapply
# Series example
np.random.seed(0)
srs = pd.Series(np.random.random(size=(5, )))
pd_apply_result = srs.apply(lambda x: x ** 2)
parapply_result = parapply(srs, lambda x: x ** 2)
print(pd_apply_result)
# 0 0.301196
# 1 0.511496
# 2 0.363324
# 3 0.296898
# 4 0.179483
# dtype: float64
print(parapply_result)
# 0 0.301196
# 1 0.511496
# 2 0.363324
# 3 0.296898
# 4 0.179483
# dtype: float64
# DataFrame example with axis = 1
np.random.seed(1)
df = pd.DataFrame(data={
'a': np.random.random(size=(5, )),
'b': np.random.random(size=(5, )),
'c': np.random.random(size=(5, )),
})
pd_apply_result = df.apply(sum, axis=1)
parapply_result = parapply(df, sum, axis=1)
print(pd_apply_result)
# 0 0.928555
# 1 1.591804
# 2 0.550127
# 3 1.577217
# 4 0.712960
# dtype: float64
print(parapply_result)
# 0 0.928555
# 1 1.591804
# 2 0.550127
# 3 1.577217
# 4 0.712960
# dtype: float64
有关更多信息,请参阅doc字符串。在
快速和肮脏的基准
运行一个快速而肮脏的基准测试,比较在多个n_jobs
设置下使用pandasapply
和{
上面的半对数图显示,pandas apply
和{
致谢
感谢@aaronlhe向我介绍了单元测试的世界!在
- 项目
标签: