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 Ray Engine Coverage Dask Engine Coverage
pd.DataFrame
pd.Series
pd.read_*

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)

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!

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.7.3.tar.gz (737.1 kB view details)

Uploaded Source

Built Distributions

modin-0.7.3-py3-none-win_amd64.whl (301.2 kB view details)

Uploaded Python 3 Windows x86-64

modin-0.7.3-py3-none-win32.whl (301.2 kB view details)

Uploaded Python 3 Windows x86

modin-0.7.3-py3-none-manylinux1_x86_64.whl (301.2 kB view details)

Uploaded Python 3

modin-0.7.3-py3-none-manylinux1_i686.whl (301.2 kB view details)

Uploaded Python 3

modin-0.7.3-py3-none-macosx_10_9_x86_64.whl (301.2 kB view details)

Uploaded Python 3 macOS 10.9+ x86-64

File details

Details for the file modin-0.7.3.tar.gz.

File metadata

  • Download URL: modin-0.7.3.tar.gz
  • Upload date:
  • Size: 737.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for modin-0.7.3.tar.gz
Algorithm Hash digest
SHA256 cb11d4f62453d47f0d014e2fd9b90fd001c6738ae377e929ae1996d860767c30
MD5 800d9a9a545253fdc42124c24015016d
BLAKE2b-256 922f9cface92a21eb63d16e4495e61b1a61f7bbb4d5a133c01bc2e3a38c0d28e

See more details on using hashes here.

File details

Details for the file modin-0.7.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: modin-0.7.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 301.2 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for modin-0.7.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1df4f27aaa1a1e47babc8e8523199b358b8aa19f7c74d2fd4624ece7f7b41c00
MD5 f1b94a4d5c1753bbdd71475c1337d2f4
BLAKE2b-256 d5798b2809b82658a1acfd938026ad4ba664ae3ed281d3343d49113374cae911

See more details on using hashes here.

File details

Details for the file modin-0.7.3-py3-none-win32.whl.

File metadata

  • Download URL: modin-0.7.3-py3-none-win32.whl
  • Upload date:
  • Size: 301.2 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for modin-0.7.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 66514930bc4521620e4ea32b376c4a6e46654911e6dfb19b3490b849b75d263e
MD5 f180050434bb1518e8f09bdcfeb7728f
BLAKE2b-256 dee39e8b02fb1a6978a0c767e8ea83ccbfa1aab1a1e3ab99bc802eeb305198f6

See more details on using hashes here.

File details

Details for the file modin-0.7.3-py3-none-manylinux1_x86_64.whl.

File metadata

  • Download URL: modin-0.7.3-py3-none-manylinux1_x86_64.whl
  • Upload date:
  • Size: 301.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for modin-0.7.3-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1b083ad1f9dbe5ae0344ceefbbb7909290cd8f298e24d577cb02ca13a073ded1
MD5 8b80e732525edf8e8e1bc6c68a7b83a4
BLAKE2b-256 c5dc0fcfb538080a7ce7b700796b94a38e6d0ecc85e0351f7bc508f474fbc097

See more details on using hashes here.

File details

Details for the file modin-0.7.3-py3-none-manylinux1_i686.whl.

File metadata

  • Download URL: modin-0.7.3-py3-none-manylinux1_i686.whl
  • Upload date:
  • Size: 301.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for modin-0.7.3-py3-none-manylinux1_i686.whl
Algorithm Hash digest
SHA256 59528b3de4c78c55095d52e23214b410510be974c2f35dff63ad52fa959010b5
MD5 affbc07f19ae2c6bcb09c22821668c6b
BLAKE2b-256 19b557f0fb7366f2b54701820eb10673c1c6ceea6db7d28019d9d002ba48a8d9

See more details on using hashes here.

File details

Details for the file modin-0.7.3-py3-none-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: modin-0.7.3-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 301.2 kB
  • Tags: Python 3, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for modin-0.7.3-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5135bac5ced89b7a2e76a7ba67dd33d645aeddf23fca04aa5240c1b6703a9bf1
MD5 70de91f58a49c75e8ecf647a43d22fd8
BLAKE2b-256 f6192ea5df4d128d7ffb07f99969a8fb13e0d3972464a0cc2b687d903085072f

See more details on using hashes here.

Supported by

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