看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Modin 是 pandas 大体量数据上的替代品。众所周知,pandas 是单线程的,处理大数据时非常缓慢或内存不足。但 Modin 可让您通过扩展 pandas 为使用您设备的所有内核,从而加速数据操作。
Modin 使用 Ray 或 Dask 提供了一种轻松的方式来加速您的 pandas 在 notebooks、脚本和库中的执行效率。与其他分布式 DataFrame 库不同,Modin 提供与现有 pandas 代码的无缝集成和兼容性。 即使使用 DataFrame 构造函数也是相同的。
例如:
import modin.pandas as pd # 注意
import numpy as np
data = np.random.randint(0, 100, size=(2**10, 2**8))
df = pd.DataFrame(data)
无需提前了解可用的硬件资源即可使用 Modin。 此外,没有必要指定如何分发或放置数据。 Modin 充当 pandas 的替代品,这意味着您可以继续使用以前的 pandas 的各种接口并保持不变,同时通过 Modin 体验相当大的加速,即使在单台机器上也是如此。一旦你改变了你的 import 语句,你就可以像使用 pandas 一样使用 Modin。
modin.pandas 的 DataFrame 是一个极其轻量级的并行 DataFrame。 Modin 透明地分发数据和计算,因此您只需像安装 Modin 之前一样继续使用 pandas API。 与其他并行 DataFrame 系统不同,Modin 是一个非常轻量级、健壮的 DataFrame。 由于它非常轻巧,Modin 在具有 4 个物理内核的笔记本电脑上提供高达 4 倍的加速。
在 pandas 中,当您进行任何类型的计算时,您一次只能使用一个核心。 使用 Modin,您可以使用机器上的所有 CPU 内核。 即使在 read_csv 中,我们也可以通过在整个机器上有效地分配工作来获得巨大的收益。
# import pandas as pd
import modin.pandas as pd
df = pd.read_csv("my_dataset.csv")
Modin 专注于在小数据(例如 pandas)和大数据的 DataFrames 之间架起桥梁。 通常,数据科学家需要不同的工具来对不同大小的数据做同样的事情。现有 1MB 的 DataFrame 解决方案无法扩展到 1TB+,而且 1TB+ 解决方案的开销对于 1KB 范围内的数据集来说过于昂贵。 使用 Modin,由于其轻量级、稳健和可扩展的特性,您可以获得 1MB 和 1TB+ 的快速 DataFrame。
以下是一些常见的使用示例。
一般使用 pip 安装:
pip install modin
如果您没有安装 Ray 或 Dask,则需要使用以下方法之一安装 Modin:
pip install "modin[ray]" # 由 Ray 提供调度计算
pip install "modin[dask]" # 由 Dask 提供调度计算
pip install "modin[all]" # 同时安装以上两种
Modin 将自动检测您安装的引擎,并将其用于调度计算!
如果要选择要运行的特定计算引擎,可以设置环境变量 MODIN_ENGINE,Modin 将使用该引擎进行计算:
export MODIN_ENGINE=ray # Modin will use Ray
export MODIN_ENGINE=dask # Modin will use Dask
在导入 Modin 之前,也可以在 notebook/解释器中执行此操作:
import os
os.environ["MODIN_ENGINE"] = "ray"
os.environ["MODIN_ENGINE"] = "dask"
import modin.pandas as pd
设置本地的计算资源情况:
import modin
modin.config.Engine.put("Dask")
# 获取计算机的cpu核心数
print(modin.config.NPartitions.get()) # 16
# 修改 NPartitions 值
modin.config.NPartitions.put(16)
# 设置使用核心
import os
os.environ["MODIN_CPUS"] = "4"
import modin.pandas as pd
import ray
ray.init(num_cpus=4)
import modin.pandas as pd
进度条使用 tqdm 库可视化显示:
import modin.pandas as pd
from tqdm import tqdm
from modin.config import ProgressBar
ProgressBar.enable()
与 pandas 接口的兼容性可查看:
更新时间:2022-06-27 10:23:27 标签:python modin pandas 大数据