본문 바로가기

문돌이 존버/각종 꿀팁 및 해결법

판다스(pandas), 용량 큰 csv 파일 끊어 읽기

반응형

판다스로 용량이 큰 파일을 읽을 때 속도가 느려지고, 심지어는 커널이 죽을 때도 있습니다. 특히 금융권, 제조업 데이터는 크키가 엄청나기 때문에 전체 파일을 읽어오기 힘든데요. 이때 파일을 쪼개서(=끊어서) 읽는 방법이 있습니다.

사이킷런 데이터셋에서 제공하는 "아이리스" 데이터를 사용하겠습니다.

import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df.to_csv('./iris.csv')

파일을 쪼개 읽는 방법은 read_csv() 파라미터로 chuncksize 를 추가하면 됩니다.

ck = pd.read_csv('./iris.csv', chunksize=10) # 10개로 쪼갠다는 의미
ck = list(ck)
len(ck) # 15
for df in ck:
    display(df.head())

위에서 10개로 쪼갠 데이터셋을 다시 하나로 합치려면 아래 concat 을 사용하면 됩니다. 2개 혹은 3개 단위로 합치고 싶다면 리스트 인덱스(ck는 리스트 타입이기 때문)를 활용하면 되겠습니다.

original = pd.concat(ck)
print(original.shape)
original.head()

 

728x90
반응형