관리 메뉴

오늘도 배운다

Pandas read_csv가 너무 느리다면? 대용량 csv 파일 빠르게 불러오기 본문

빅데이터(파이썬)

Pandas read_csv가 너무 느리다면? 대용량 csv 파일 빠르게 불러오기

LearnerToRunner 2022. 11. 17. 23:26

문제

csv 형식의 데이터셋 크기가 커서 파일을 읽는데 시간이 너무 오래걸린다.
  • 약 470만 X 23
  • 메모리 사용량 825 MB
  • 소요시간 11.2498초

사용중인 프로세서 Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz 2.90 GHz

 

코드를 실행할 때 마다 11초가 소요되는 것을 원하지 않는다

 

해결방안 및 결과

 

CSV 파일을 Parquet 형태로 만들어 놓은 뒤, Pandas에서 read_parquet으로 읽어오기

적용한 결과 11.24초에서 2.34초로 줄었다.

소요시간이 약80% 줄어들었다

 

parquet 타입으로 생성한 데이터를 읽었을 때 (pd.read_parquet)
BEFORE. pd.read_csv로 읽었을 때

적용방법

1. pyarrow 설치

pip install pyarrow

 

2. CSV 파일 읽어서 Parquet 형식 파일 생성 (이후 해당코드는 주석처리)

# Pandas 불러오기
import pandas as pd

# 파이애로우 불러오기
import pyarrow.csv as pv
import pyarrow.parquet as pq

# 트레인 csv 파일 경로
path_train = "./train.csv"

# Pandas로 csv 불러오기
train = pv.read_csv(path_train)

# 읽은 csv 파일을 parquet 으로 변경
pq.write_table(train, path_train.replace('csv', 'parquet') ) #replace를 이용해서 파일 형식만 바꿔줌

### 그 결과, train.csv 경로가 있는 곳에 train.parquet이 생성된다

 

3. 방금 생성한 parquet 타입 파일을 Pandas로 불러오기

df = pd.read_parquet("./train.parquet")

 

 

 

728x90
Comments