대용량 csv 파일 부분 조회 - pandas, read_csv, nrows, chunksize
들어가며
용량이 큰 csv 파일을 읽을 때, 전체가 아닌 일부만 조회하여 불필요하게 소요되는 시간을 줄일 수 있습니다.
이 글에서 활용할 데이터는 캐글 데이터셋 중 Netflix Movies and TV Shows로 넷플릭스의 영화와 TV쇼에 관한 자료입니다. 데이터는 캐글 사이트에서 다운로드할 수 있습니다. 데이터는 출연진, 감독, 등급, 연도, 기간 등과 같은 세부 정보와 넷플릭스에서 제공되는 모든 영화 및 TV 프로그램 목록으로 구성됩니다.
먼저 필요한 패키지인 pandas를 설치하고 import 합니다.
# pip install pandas
import pandas as pd
예를 들어, netflix_titles.csv를 300줄만 읽어 df 변수에 저장한다면 다음과 같습니다. nrows 옵션에 원하는 행의 크기를 입력하면, 해당 크기만큼의 데이터를 읽을 수 있습니다. 만약 데이터가 100만 행이 넘는 데이터라면, 데이터를 다 읽는 데 시간이 많이 걸리기 때문에, nrows로 필요한 부분만큼 읽어서 확인할 수 있습니다.
df = pd.read_csv('netflix_titles.csv',nrows= 300)
print('len(df): ', len(df))
df
덧붙여서, pandas의 read_csv 외에도 chunksize를 활용해도 됩니다. chunksize에 원하는 행의 크기를 다음과 같이 입력하고, 데이터를 확인할 수 있습니다. 아래와 같이 shape을 통해 데이터의 개략적인 크기도 알 수 있고, 데이터만 출력하는 것도 가능합니다.
chunksize = 50
for sample in pd.read_csv('netflix_titles.csv', chunksize=chunksize):
print(sample.shape)
# print(sample)
용량이 큰 파일의 경우에는 위와 같이 read_csv의 nrow 옵션 혹은 chunksize를 통해 일부만 읽은 뒤, 데이터를 확인하고 데이터를 사용할지 말지 혹은 어떤 변수들을 어떻게 활용할 것인지에 대한 계획을 세우고 접근하는 것을 추천합니다.
'Python' 카테고리의 다른 글
[파이썬] 특정 키워드 네이버 뉴스 크롤링 - BeautifulSoup (12) | 2025.03.27 |
---|---|
[파이썬] 데이터 건수, 평균, 최대/최소값 집계 - pandas groupby (2) | 2025.03.27 |
[파이썬] 엑셀 통합파일 시트명 리스트 생성 - pandas, ExcelFile (2) | 2025.03.23 |
[파이썬] 디스플레이 옵션 설정 - pandas set_option, reset_option (2) | 2025.03.22 |
[파이썬] 내장함수 str - 슬라이싱, find, contains, strip (10) | 2025.03.21 |