[파이썬] 엑셀 파일 빠르게 읽는 방법(dask, csv, xlsx)
- Python/Pandas
- 2023. 8. 3.
엑셀 파일 빠르게 읽어보자
빅데이터를 다루다보면 엑셀 파일 불러올 수 밖에 없는데 데이터 자체가 크다보니 불러오는 시간이 많이 소요됩니다. 이걸 여러번 불러온다면 곤욕이 따로 없겠죠?
이전 포스팅에서 xlsx에서 csv로 변환하는 방법을 다뤘었는데 csv로 변환하고 읽는 속도가 약 70배 빨라지는 것을 알 수 있었습니다. 이번 포스팅에서는 본격적으로 불러오는 속도를 극대화하는 방법에 대해 소개할까 합니다.
DASK 모듈 이용하기
방법은 생각보다 간단합니다.
데이터를 불러올 때 병렬처리를 한다면 보다 빠르게 불러올 수 있게 됩니다.
그런데 이걸 코드로 만들어내면 귀찮아지니 다 만들어진 모듈을 사용해서 간편하게 불러올 수 있을 거라 생각합니다.
DASK라는 모듈을 쓸 건데요. 이 모듈은 파이썬에서 분산 병렬 컴퓨팅을 하기 위한 라이브러리입니다. pandas와 가장 유사한 API여서 pandas를 다루시는 분들이라면 금방 하실 수 있을겁니다. 파일을 불러올 때 병렬 처리를 시켜주는 DASK라는 모듈을 사용하겠습니다.
설치되있지 않다면 pip을 이용해 설치를 해줍니다.
## 전체 설치
pip install dask[complete]
## 부분 설치
pip install "dask[array]"
pip install "dask[dataframe]"
pip install "dask[diagnostics]"
pip install "dask[distributed]"
xlsx 파일 dask로 불러오기
xlsx를 read_excel로 불러오면 4분 45초정도 걸렸었습니다. 이번에는 dask를 통해 불러보겠습니다.
import dask.dataframe as dd
from dask.delayed import delayed
for sheet_name in sheet_name_list:
df = delayed(pd.read_excel)(path,sheet_name=sheet_name)
output_dataframe= dd.from_delayed(df)
약 20초 정도 줄였습니다. 미미한 수준이네요.
csv dask로 불러오기
이번엔 csv를 dask로 불러보겠습니다.
너무 빨라서 %time을 장착했습니다.
%time df = dd.read_csv(r'C:\Users\seong\github\autopython\seller\df_results.csv')
그냥 csv를 불렀을 때 약 3.8초가 걸렸는데 dask로 부르니 6 밀리초가 걸렸습니다. 약 600배 빨라졌네요. 1449988 rows 인데 이정도는 양이 적나봅니다.
마치며
결론적으로 얘기하면 시트 1개에 csv에 다 넣고 dask로 불러오는게 가장 빠른 것 같습니다.
역시 대용량은 xlsx보다는 csv가 훨씬 낫다는 결론이 나오네요. 그동안 어떻게 하면 엑셀파일을 불러오는 속도를 높일까에 대한 연구(?)를 했었는데 이제야 마무리가 되는 것 같습니다.
그동안 한 시도들의 대한 내용입니다. 참고하실 분들은 참고하시기 바랍니다.
엑셀 불러오기속도 개선편
1편 : [Pandas] 엑셀 시트 여러개 불러오기(보다 쉬운 관리)
3편 : 파이썬 엑셀 파일 빠르게 읽는 방법(dask, csv, xlsx) - 현재 포스팅
'Python > Pandas' 카테고리의 다른 글
[Pandas] 데이터프레임 HTML로 변환하기 (0) | 2023.11.02 |
---|---|
[Pandas] Json 파일 불러오기 (0) | 2023.08.17 |
[파이썬] xlsx 파일 csv로 변환하기 (0) | 2023.07.27 |
[Pandas] 엑셀 시트 여러개 불러오기(보다 쉬운 관리) (0) | 2023.07.24 |
[Pandas] 내 맘대로 증가율 계산 (0) | 2023.02.06 |