Pandas提供高性能,易于使用的数据结构和数据分析工具。但是,在处理过多的数据时,单个核心上的Pandas变得不足,人们不得不求助于不同的分布式系统来提高性能。然而,提高性能的权衡伴随着陡峭的学习曲线。从本质上讲,用户可能只是希望Pandas运行得更快,并且不希望针对其特定的硬件设置优化其工作流程。这意味着人们希望将10KB数据集用作10TB数据集的相同Pandas脚本。Modin通过优化大熊猫提供解决方案,以便数据科学家花时间从数据中提取价值,而不是从提取数据的工具中提取价值。
Modin 在8核计算机上将Pandas查询加速4倍,只需要用户更改笔记本中的单行代码。安装
Modin是完全开源的,可以在GitHub上找到:https://github.com/modin-project/modin
Modin可以从PyPI安装:
pip install modin
modin所做的基本上是它只是增加了CPU所有内核的利用率,从而提供了更好的性能。
只需要修改import语句,其中一个需要导入modin.pandas 而不是简单pandas.
import numpy as np
import modin.pandas as pd
让我们使用由随机整数组成的Numpy构建一个玩具数据集。请注意,我们不必在此处指定分区。
ata = np.random.randint(0,100,size =(2 **
16,2 ** 4))df = pd.DataFrame(data)
df = df.add_prefix(“Col:”)
速度比较
pd.read_csv
read_csv是迄今为止最常用的pandas操作。当我们在pandas vs modin中使用read_csv时,让我们快速比较一下。
大熊猫
%%time
import pandas
pandas_csv_data = pandas.read_csv("../800MB.csv")
-----------------------------------------------------------------
CPU times: user 26.3 s, sys: 3.14 s, total: 29.4s
Wall time: 29.5 s
Modin
%%time
modin_csv_data = pd.read_csv("../800MB.csv")
-----------------------------------------------------------------
CPU times: user 76.7 ms, sys: 5.08 ms, total: 81.8 ms
Wall time: 7.6 s
使用Modin,read_csv只需更改import语句,即可在4核机器上执行快4倍的速度
df.groupby
pandas groupby编写得非常好,速度非常快。但即便如此,modin仍然胜过大熊猫。
pandas
%%time
import pandas
_ = pandas_csv_data.groupby(by=pandas_csv_data.col_1).sum()
-----------------------------------------------------------------
CPU times: user 5.98 s, sys: 1.77 s, total: 7.75 s
Wall time: 7.74 s
modin
%%time
results = modin_csv_data.groupby(by=modin_csv_data.col_1).sum()
-----------------------------------------------------------------
CPU times: user 3.18 s, sys: 42.2 ms, total: 3.23 s
Wall time: 7.3 s
网友评论