All Projects → modin-project → Modin

modin-project / Modin

Licence: other
Modin: Speed up your Pandas workflows by changing a single line of code

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Modin

Dataframe Js
A javascript library providing a new data structure for datascientists and developpers
Stars: ✭ 376 (-94.34%)
Mutual labels:  dataframe, sql, datascience
Mars
Mars is a tensor-based unified framework for large-scale data computation which scales numpy, pandas, scikit-learn and Python functions.
Stars: ✭ 2,308 (-65.24%)
Mutual labels:  dataframe, pandas, ray
Lbadd
LBADD: An experimental, distributed SQL database
Stars: ✭ 362 (-94.55%)
Mutual labels:  sql, distributed
Krangl
krangl is a {K}otlin DSL for data w{rangl}ing
Stars: ✭ 430 (-93.52%)
Mutual labels:  sql, datascience
Dataframe Go
DataFrames for Go: For statistics, machine-learning, and data manipulation/exploration
Stars: ✭ 487 (-92.66%)
Mutual labels:  dataframe, pandas
Crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of data in real-time.
Stars: ✭ 3,254 (-50.99%)
Mutual labels:  sql, distributed
Pandasvault
Advanced Pandas Vault — Utilities, Functions and Snippets (by @firmai).
Stars: ✭ 316 (-95.24%)
Mutual labels:  dataframe, pandas
Pandastable
Table analysis in Tkinter using pandas DataFrames.
Stars: ✭ 376 (-94.34%)
Mutual labels:  dataframe, pandas
Sequoia
A股自动选股程序,实现了海龟交易法则、缠中说禅牛市买点,以及其他若干种技术形态
Stars: ✭ 564 (-91.5%)
Mutual labels:  dataframe, pandas
Pdpipe
Easy pipelines for pandas DataFrames.
Stars: ✭ 590 (-91.11%)
Mutual labels:  dataframe, pandas
Datasheets
Read data from, write data to, and modify the formatting of Google Sheets
Stars: ✭ 593 (-91.07%)
Mutual labels:  dataframe, pandas
Code
Compilation of R and Python programming codes on the Data Professor YouTube channel.
Stars: ✭ 287 (-95.68%)
Mutual labels:  pandas, datascience
Dominando-Pandas
Este repositório está destinado ao processo de aprendizagem da biblioteca Pandas.
Stars: ✭ 22 (-99.67%)
Mutual labels:  pandas, dataframe
Pystore
Fast data store for Pandas time-series data
Stars: ✭ 325 (-95.1%)
Mutual labels:  dataframe, pandas
raccoon
Python DataFrame with fast insert and appends
Stars: ✭ 64 (-99.04%)
Mutual labels:  pandas, dataframe
Data-Scientist-In-Python
This repository contains notes and projects of Data scientist track from dataquest course work.
Stars: ✭ 23 (-99.65%)
Mutual labels:  pandas, datascience
Datafusion
DataFusion has now been donated to the Apache Arrow project
Stars: ✭ 611 (-90.8%)
Mutual labels:  dataframe, sql
cognipy
In-memory Graph Database and Knowledge Graph with Natural Language Interface, compatible with Pandas
Stars: ✭ 31 (-99.53%)
Mutual labels:  pandas, dataframe
tableau-scraping
Tableau scraper python library. R and Python scripts to scrape data from Tableau viz
Stars: ✭ 91 (-98.63%)
Mutual labels:  pandas, dataframe
Or Pandas
【运筹OR帷幄|数据科学】pandas教程系列电子书
Stars: ✭ 492 (-92.59%)
Mutual labels:  pandas, datascience

Scale your pandas workflows by changing one line of code

Slack PyPI version

To use Modin, replace the pandas import:

# import pandas as pd
import modin.pandas as pd

Installation

From PyPI

Modin can be installed with pip:

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!

From conda-forge

Installing from conda forge using modin-all will install Modin and 3 engines: (Ray, Dask and Omnisci)

conda install -c conda-forge modin-all

Each engine can also be installed individually:

conda install -c conda-forge modin-ray  # install Ray engine with Modin
conda install -c conda-forge modin-dask # install Dask engine with Modin
conda install -c conda-forge modin-omnisci # install Omnisci engine with Modin

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

Check this Modin docs section for Omnisci engine setup.

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!

On Linux you also can choose Omnisci which is an experimental engine based on OmnisciDB and included into Intel® Distribution of Modin which is a part of Intel® oneAPI AI Analytics Toolkit (AI Kit)

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

  • Read the documentation for more information.
  • Check out our paper to learn more about the theory underlying Modin.
  • Ask questions or participate in discussions on our Discourse.
  • Let us know how you're using Modin! Join our community Slack to discuss and ask questions.
  • Submit bug reports to our GitHub Issues Page.
  • Contributions are welcome! Open a pull request.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].