티스토리 뷰

반응형

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 크기의 파일이다.

데이터 경진대회 링크

  1. pandas를 사용하는 경우
    import pandas as pd
    import time
    
    diff = time.time()
    df = pd.read_csv('train_err_data.csv')
    print(time.time()-diff)
    # 6.665356874465942
  1. 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] 공식문서

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday