상세 컨텐츠

본문 제목

pd.read_csv(), pd.to_csv() -> Modin 👍

Dev Type

by ai developer 2023. 7. 20. 09:48

본문

머신러닝을 활용하거나 빅데이터를 다루거나 작은 크롤링 작업을 하다 보면 csv 파일을 많이 이용하게 되는데 이 때 pandas 를 사용하게 되면 pd.read_csv() / pd.to_csv() 명령을 자주 사용하게 된다.

 

하지만 데이터 사이즈가 커질수록 그 성능 문제가 생기고 많은 시간이 소요되는 등 불편한 점들이 점점 발생한다.

그 한계를 극복하기 위해 분산컴퓨팅 기능을 제공하는 보다 효율적인 새로운 대안을 찾아보게 됐다.

 

read_csv() 의 경우

import pandas as pd
import dask.dataframe as dd

# Reading a large CSV file with pandas
df_pandas = pd.read_csv('large_dataset.csv')
# Reading the same file with dask
df_dask = dd.read_csv('large_dataset.csv')
# Timing the execution
%timeit df_pandas.head()
%timeit df_dask.head()

위에는 dask를 활용한 예시인데 데이터 사이즈가 클수록 더 많은 시간을 줄일 수 있다. 

 

to_csv() 의 경우

import pandas as pd
import fastparquet

# Saving a DataFrame to a Parquet file
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': ['a', 'b', 'c']})
fastparquet.write('output.parquet', df)

위와 같이 fastparquet을 활용해 공간 및 성능 효율적으로 실행할 수 있다.

 

설명한 것처럼 여러가지 방법들이 많지만 Modin에 대해 알아보게 됐습니다!

 

Modin으로 csv를 읽어오는 법

import modin.pandas as pd

# Reading a CSV file with Modin
df = pd.read_csv('data.csv')

단순히 pandas 를 위와 같이 대체만 해줘도 되는 쉬운 방식으로 성능적이 이득을 얻을 수 있다.

 

Modin으로 csv를 쓰는 법

import modin.pandas as pd

# Create a sample DataFrame
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': ['a', 'b', 'c']})
# Writing the DataFrame to a CSV file with Modin
df.to_csv('output.csv', index=False)

파일을 쓰는 법도 읽어오는 것처럼 대체만 해주면 바로 사용이 가능하고 훨씬 빠르고 효율적으로 저장할 수 있다.

 

이처럼 많은 대체 방법 중 Modin을 소개하는 것은 modin.pandas만 해주면 코드를 수정하지 않아도 이용할 수 있기 때문이다.

만약 pandas 만의 고유 기능이 있어 다시 pandas 를 사용하고 싶다면 아래와 같이 간단히 switching 할 수 있다.

import modin.pandas as pd

# Reading a CSV file with Modin
df = pd.read_csv('data.csv')
# Perform some data analysis with Modin
# Switch to pandas
df = df.__pandas__()
# Continue working with pandas
df.head()

결론

라이브러리들은 계속 발전하고 여러가지 대체 방법들은 계속 나오고 있으니 pandas 로 막힌다면 다른 방법들을 찾아 스터디해 보는 것도 좋을 것 같다.

300x250

관련글 더보기

댓글 영역