데이터과학 삼학년

Modin : Use modin to replace pandas in larger data 본문

Python

Modin : Use modin to replace pandas in larger data

Dan-k 2022. 3. 31. 01:38
반응형

데이터 과학에서 단연 제일 잘알려지고, 많은 사람들이 사용하는 것이 pandas라고 해도 과언이 아니다.

이 pandas를  조금 더 빠르고 효율적으로 사용할 수 있는 방법에 대해 소개하려 한다. 바로 Modin 이다. 

 

Pandas 의 한계

pandas는 상대적으로 매우 큰 데이터셋에서 다루는데 비 효율적이며(메모리문제), 구조적으로 paralleizing이 어려운 구조를 가지고 있다. 그 이유는 아래와 같다.

1. single-threaded : multiple cores를 사용하기 어렵다는 것을 의미

2. in memory 기반으로 작동 : out-of-memory erro를 종종 경험할 수 있음

 

왜 pandas는 parallizing이 어려운가?

pandas 의 600여개가 넘는 functions들을 최적화하는것은 매우 어려운 일이다. 특히 각 function들은 chained가 되어질수 있기 때문에 function의 결합되어 지는 수가 많을 수록 개별적으로 최적화해야하는 부분이 기하급수적으로 많아진다.

관계형 데이터 베이스가 지난 40년간 join이나 group by 등 10개의 operators들을 최적화하는데 걸렸는데, 600개가 넘는 operator를 가진 pandas는 얼마나 더 어렵겠는가.

Figure from here, displaying a chain of operations applied to a product dataset from read_html to iloc (point updates), to transpose, to a map (column transformations).
 

Modin 

modin은 parallel dataframe system으로, 실제 pandas api에서 대표될 수 있는 핵심 operators를 살펴보니 20개 미만으로 확인을 했다.

The dataframe algebra operators include low-level operators such as map, explode, and reduce, relational operators such as group-by, join, rename, sort, concat, and filter, metadata manipulation operators such as infer_types, filter_by_types, to/from_labels, linear algebra operators such as transpose, and order-based operators such as window and mask.

뭐 결국에는 decompoistion하고 결합하는 방식으로 구성하여 multiple cores 를 사용하여 성능을 개선했다는 얘기다.

(자세한 것은 Modin 공식 documents 에서 확인을..)

Decomposing a dataframe along rows, columns, or cells for parallelization

 

 

Modin의 impact

Modin의 pandas와 일반 pandas간 성능 비교는 아래와 같다.

Modin의 decompostion 룰을 사용했기 때문에 multi cores를 사용할 수 있고, 그 덕에 기존 pandas에 비해 불필요한 memory copy 등을 줄여 효과적으로 성능을 개선했다.

Modin 사용법

pandas를 불러올때, modin안에 pandas를 불러 일반 pandas를 사용하듯이 하면 된다.

사용하기는 너무 쉽다!!! 한번 사용해봐야겠다.

import modin.pandas as pd

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

 

Modin 구조

 

 

참조

https://github.com/modin-project/modin

 

GitHub - modin-project/modin: Modin: Speed up your Pandas workflows by changing a single line of code

Modin: Speed up your Pandas workflows by changing a single line of code - GitHub - modin-project/modin: Modin: Speed up your Pandas workflows by changing a single line of code

github.com

https://ponder.io/how-do-we-parallelized-600-pandas-functions-with-modin/

 

How we parallelized 600+ pandas functions with Modin

Scaling up pandas is hard. Learn about how we parallelize 600+ pandas functions with Modin, making it faster and easier to get insights!

ponder.io

https://modin.readthedocs.io/en/latest/

 

Scale your pandas workflow by changing a single line of code — Modin 0.14.0+1.g6d05c31.dirty documentation

To use Modin, replace the pandas import: Scale your pandas workflow by changing a single line of code Modin uses Ray or Dask to provide an effortless way to speed up your pandas notebooks, scripts, and libraries. Unlike other distributed DataFrame librarie

modin.readthedocs.io

 

728x90
반응형
LIST
Comments