Pyarrow로 csv데이터 빨리 읽기 (with Pandas)
pyarrow
아파치 애로우(Apache Arrow)라는 메모리 내 분석을 위한 개발 플랫폼인데, 빅데이터를 빠르게 처리하고 이동할 수 있도록 하는 일련의 기술을 제공하는 라이브러리를 파이썬 PyArrow를 통해 구현할 수 있다.
기존의 pandas로 용량이 큰 csv파일을 로드하면 시간이 오래 걸리는데, pyarrow를 활용하면 시간 절약에 도움이 된다.
pyarrow 설치
pip을 이용하여 아래 명령어로 쉽게 설치 할 수 있다.
$ pip install pyarrow
csv 파일읽기
아래 코드로 csv 파일을 읽어 pandas 데이터프레임으로 쉽게 변환할 수 있다.
from pyarrow import csv
df = csv.read_csv('data.csv').to_pandas()
pandas와의 비교
그럼 기존의 pandas로 csv 파일을 읽는 것과 얼마나 차이가 있는지 확인해보겠다. 비교적 파일이 큰 csv 파일로 비교를 하기 위해 국내 데이터 분석 경진대회 플랫폼인 Dacon의 시스템 품질 변화로 인한 사용자 불편 예지 경진대회의 시스템 에러 로그 데이터를 사용했다. 파일명은 train_err_data.csv로 약 803Mb 크기의 파일이다.
- pandas를 사용하는 경우
import pandas as pd import time diff = time.time() df = pd.read_csv('train_err_data.csv') print(time.time()-diff) # 6.665356874465942
- Pyarrow를 사용하는 경우
from pyarrow import csv import time diff = time.time() df = csv.read_csv('train_err_data.csv').to_pandas() print(time.time()-diff) # 1.9863276481628418
pandas를 사용하여 읽을 떄의 6.6초 보다 pyarrow로 파일을 읽는 것이 약 1.98초로 3배이상 속도가 빠른 것을 확인 할 수 있다.
참고자료
[Pyarrow] 공식문서