Skip to main content

Modin: Make your pandas code run faster by changing one line of code.

Project description

Scale your pandas workflows by changing one line of code

To use Modin, replace the pandas import:

# import pandas as pd
import modin.pandas as pd

Installation

Modin can be installed from PyPI:

pip install modin

If you don't have Ray or Dask installed, you will need to install Modin with one of the targets:

pip install modin[ray] # Install Modin dependencies and Ray to run on Ray
pip install modin[dask] # Install Modin dependencies and Dask to run on Dask
pip install modin[all] # Install all of the above

Modin will automatically detect which engine you have installed and use that for scheduling computation!

Pandas API Coverage

pandas Object Modin's Ray Engine Coverage Modin's Dask Engine Coverage
pd.DataFrame
pd.Series
pd.read_csv
pd.read_table
pd.read_parquet
pd.read_sql
pd.read_feather
pd.read_excel
pd.read_json ✳️ ✳️
pd.read_<other> ✴️ ✴️

Some pandas APIs are easier to implement than other, so if something is missing feel free to open an issue!
Choosing a Compute Engine

If you want to choose a specific compute engine to run on, you can set the environment variable MODIN_ENGINE and Modin will do computation with that engine:

export MODIN_ENGINE=ray  # Modin will use Ray
export MODIN_ENGINE=dask  # Modin will use Dask

This can also be done within a notebook/interpreter before you import Modin:

import os

os.environ["MODIN_ENGINE"] = "ray"  # Modin will use Ray
os.environ["MODIN_ENGINE"] = "dask"  # Modin will use Dask

import modin.pandas as pd

Note: You should not change the engine after you have imported Modin as it will result in undefined behavior

Which engine should I use?

If you are on Windows, you must use Dask. Ray does not support Windows. If you are on Linux or Mac OS, you can install and use either engine. There is no knowledge required to use either of these engines as Modin abstracts away all of the complexity, so feel free to pick either!

Advanced usage

In Modin, you can start a custom environment in Dask or Ray and Modin will connect to that environment automatically. For example, if you'd like to limit the amount of resources that Modin uses, you can start a Dask Client or Initialize Ray and Modin will use those instances. Make sure you've set the correct environment variable so Modin knows which engine to connect to!

For Ray:

import ray
ray.init(plasma_directory="/path/to/custom/dir", object_store_memory=10**10)
# Modin will connect to the existing Ray environment
import modin.pandas as pd

For Dask:

from distributed import Client
client = Client(n_workers=6)
# Modin will connect to the Dask Client
import modin.pandas as pd

This gives you the flexibility to start with custom resource constraints and limit the amount of resources Modin uses.

Full Documentation

Visit the complete documentation on readthedocs: https://modin.readthedocs.io

Scale your pandas workflow by changing a single line of code.

import modin.pandas as pd
import numpy as np

frame_data = np.random.randint(0, 100, size=(2**10, 2**8))
df = pd.DataFrame(frame_data)

In local (without a cluster) modin will create and manage a local (dask or ray) cluster for the execution

To use Modin, you do not need to know how many cores your system has and you do not need to specify how to distribute the data. In fact, you can continue using your previous pandas notebooks while experiencing a considerable speedup from Modin, even on a single machine. Once you've changed your import statement, you're ready to use Modin just like you would pandas.

Faster pandas, even on your laptop

The modin.pandas DataFrame is an extremely light-weight parallel DataFrame. Modin transparently distributes the data and computation so that all you need to do is continue using the pandas API as you were before installing Modin. Unlike other parallel DataFrame systems, Modin is an extremely light-weight, robust DataFrame. Because it is so light-weight, Modin provides speed-ups of up to 4x on a laptop with 4 physical cores.

In pandas, you are only able to use one core at a time when you are doing computation of any kind. With Modin, you are able to use all of the CPU cores on your machine. Even in read_csv, we see large gains by efficiently distributing the work across your entire machine.

import modin.pandas as pd

df = pd.read_csv("my_dataset.csv")

Modin is a DataFrame designed for datasets from 1MB to 1TB+

We have focused heavily on bridging the solutions between DataFrames for small data (e.g. pandas) and large data. Often data scientists require different tools for doing the same thing on different sizes of data. The DataFrame solutions that exist for 1KB do not scale to 1TB+, and the overheads of the solutions for 1TB+ are too costly for datasets in the 1KB range. With Modin, because of its light-weight, robust, and scalable nature, you get a fast DataFrame at small and large data. With preliminary cluster and out of core support, Modin is a DataFrame library with great single-node performance and high scalability in a cluster.

Modin Architecture

We designed Modin to be modular so we can plug in different components as they develop and improve:

Architecture

Visit the Documentation for more information, and checkout the difference between Modin and Dask!

modin.pandas is currently under active development. Requests and contributions are welcome!

More information and Getting Involved

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modin-0.8.3.post4.tar.gz (396.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

modin-0.8.3.post4-py3-none-win_amd64.whl (533.1 kB view details)

Uploaded Python 3Windows x86-64

modin-0.8.3.post4-py3-none-win32.whl (533.1 kB view details)

Uploaded Python 3Windows x86

modin-0.8.3.post4-py3-none-manylinux1_x86_64.whl (533.1 kB view details)

Uploaded Python 3

modin-0.8.3.post4-py3-none-manylinux1_i686.whl (533.1 kB view details)

Uploaded Python 3

modin-0.8.3.post4-py3-none-macosx_10_9_x86_64.whl (533.1 kB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file modin-0.8.3.post4.tar.gz.

File metadata

  • Download URL: modin-0.8.3.post4.tar.gz
  • Upload date:
  • Size: 396.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.13

File hashes

Hashes for modin-0.8.3.post4.tar.gz
Algorithm Hash digest
SHA256 4819afca38ed6daad96dfb5759ea8f4cf7d9e613c26f18a7c4778d52058cfa5d
MD5 638664fe298c9131e902264ddc3a5d15
BLAKE2b-256 847cec373a8de6723ca44b2d04a9734753fb65208e19f2d8dd1b1822b46287b4

See more details on using hashes here.

File details

Details for the file modin-0.8.3.post4-py3-none-win_amd64.whl.

File metadata

  • Download URL: modin-0.8.3.post4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 533.1 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.13

File hashes

Hashes for modin-0.8.3.post4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 074df5bf40a8cd78bbf046d181965e11d2d5f61c5670900f3a8741f688dc3891
MD5 302ecdb760360128a77cecfca1d36225
BLAKE2b-256 d84fe492b5c724ac002cb812939026d2edf7cb8658e3975631af06bd4fbfb26d

See more details on using hashes here.

File details

Details for the file modin-0.8.3.post4-py3-none-win32.whl.

File metadata

  • Download URL: modin-0.8.3.post4-py3-none-win32.whl
  • Upload date:
  • Size: 533.1 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.13

File hashes

Hashes for modin-0.8.3.post4-py3-none-win32.whl
Algorithm Hash digest
SHA256 6a3d61c1923fb37cf1bb234079d25df9be261ce9b4d07a627de4b1d295e3dbf3
MD5 a7b18bb76aabdc3fad00cf26c4b04834
BLAKE2b-256 464b5b7848d7ec352049d24a67a0f7d2a8458c81a5f481bd816c7b68a91860d1

See more details on using hashes here.

File details

Details for the file modin-0.8.3.post4-py3-none-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for modin-0.8.3.post4-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 611d21be7c9dcd01b3cd1d400e6106738a60d45f7a26cc91ebad6923307f11f6
MD5 351524ac86acfb7c61daca751774d3ee
BLAKE2b-256 9b33a03784c39cbda5c7059c108ff35f67d8e7f97adc03e5c7b6474305c2ebd6

See more details on using hashes here.

File details

Details for the file modin-0.8.3.post4-py3-none-manylinux1_i686.whl.

File metadata

File hashes

Hashes for modin-0.8.3.post4-py3-none-manylinux1_i686.whl
Algorithm Hash digest
SHA256 bb35471cf9540a09a567bd3bea254945faddac5f7417bb8263d6a46a076acd1b
MD5 5af9b76b42fa195a7c6d0053705035a4
BLAKE2b-256 286d4ef0ed651361a1803aa228fb49eaa3fbc54e6eace85b2cbc1571b1f8fb0e

See more details on using hashes here.

File details

Details for the file modin-0.8.3.post4-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for modin-0.8.3.post4-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cc128c0db0bcb3a04c5443d829dedf565a08634d354180fa2124c44f43ca8246
MD5 3d67f3a80295a12f5e697ada414d9b75
BLAKE2b-256 353860c7bcac04f533281e5c8838a379dc46ff439d8b9cb866d21c98e5e960d6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page