머신러닝을 활용하거나 빅데이터를 다루거나 작은 크롤링 작업을 하다 보면 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 로 막힌다면 다른 방법들을 찾아 스터디해 보는 것도 좋을 것 같다.
Naver Expert - 개발 외주 진행할 뻔한 후기 (2) | 2023.11.23 |
---|---|
Exception & Error Handling in Python For Professional (0) | 2023.09.26 |
Flutter vs React Native 2023 🧑🏻💻 (0) | 2023.06.23 |
How to Solve HTTPConnectionPool Error In Python (0) | 2023.06.22 |
윈도우, 리눅스 서버 접속(ssh, rdp) 보안 (0) | 2023.06.08 |
댓글 영역