본문 바로가기
코딩취미/프로그램 지식

대용량 CSV 데이터를 다루는 방법 총정리

by 브링블링 2025. 3. 12.
반응형

대용량 CSV 데이터를 다루는 방법 총정리

CSV 파일은 데이터 분석과 머신러닝에서 가장 널리 사용되는 데이터 형식 중 하나입니다. 하지만 수백만~수억 줄의 대용량 CSV 데이터를 처리할 때는 메모리 부족, 속도 저하, 분석 불가능한 환경 등의 문제가 발생할 수 있습니다. 이 글에서는 대용량 CSV를 효율적으로 다루는 방법소프트웨어별 비교, 초급자/중급자/숙련자 단계별 접근법과 함께 정리합니다. 🚀


📌 대용량 CSV 처리를 위한 소프트웨어 비교

소프트웨어/라이브러리 특징 장점 단점 처리 가능 데이터 크기
Microsoft Excel GUI 기반 데이터 처리 사용법이 쉬움, 시각적 분석 가능 1,048,576줄 제한, 속도가 느림 최대 1M 줄
Google Sheets 클라우드 기반 웹에서 공유 및 협업 가능 10M 셀 제한 (약 1M 줄) 최대 1M 줄
Python Pandas 데이터 분석 라이브러리 강력한 데이터 처리, 다양한 기능 지원 메모리 한계 있음 수백만 줄 (RAM 의존)
Dask (Python) 분산 데이터 처리 Pandas보다 큰 데이터 처리 가능 설정이 필요함 수억 줄
Vaex (Python) 빠른 데이터 프레임 메모리 효율적, 빠른 속도 Pandas보다 기능 적음 수억 줄
SQL (MySQL, PostgreSQL) 데이터베이스 활용 대용량 데이터 처리 가능 초기 설정이 필요 수억~수십억 줄
BigQuery (Google Cloud) 클라우드 데이터 처리 초대용량 데이터 처리 가능 비용 발생 가능 테라바이트 (TB) 이상

📌 초급자 / 중급자 / 숙련자 단계별 접근 방법

🟢 초급자: 엑셀 & Pandas 사용

적용 방법

  • Excel, Google Sheets를 이용하여 100만 줄 이하의 데이터 처리
  • Pandas를 활용하여 간단한 분석 수행
  • 필터링, 데이터 요약, 그래프 그리기 등의 기본 기능 학습

🛠 코드 예제 (Pandas 사용)

import pandas as pd

# CSV 파일 로드 (엑셀 대신 Pandas 사용)
df = pd.read_csv("data.csv")

# 데이터 크기 확인
print(df.shape)

# 일부 데이터 확인
print(df.head())

🚀 추천 툴

  • Excel (1M 줄 제한)
  • Google Sheets (10M 셀 제한)
  • Pandas (Python) → 수백만 줄 가능 (RAM 의존)

🟡 중급자: Pandas 최적화 & Dask 사용

적용 방법

  • Pandas에서 데이터 로드 최적화 (dtype 설정, chunksize 활용)
  • Dask를 사용하여 병렬 처리
  • SQLite를 활용하여 데이터 저장 및 분석

🛠 코드 예제 1 (Pandas 최적화)

# dtype 설정으로 메모리 사용 줄이기
df = pd.read_csv("large_data.csv", dtype={'column1': 'category', 'column2': 'int32'})

🛠 코드 예제 2 (Pandas chunksize 활용)

chunk_size = 100000  # 10만 줄씩 처리
for chunk in pd.read_csv("large_data.csv", chunksize=chunk_size):
    print(chunk.head())

🛠 코드 예제 3 (Dask 사용)

import dask.dataframe as dd

# Dask를 사용하여 대용량 CSV 로드
df = dd.read_csv("large_data.csv")
print(df.head())  # 일부 데이터 미리보기

🚀 추천 툴

  • Pandas 최적화 (dtype, chunksize) → 5~10M 줄 가능
  • Dask → 수억 줄 가능 (병렬 처리 지원)
  • SQLite → 수백만 줄 이상 저장 가능
반응형

🔴 숙련자: 데이터베이스 & 클라우드 활용

적용 방법

  • MySQL/PostgreSQL을 활용하여 데이터베이스에 저장 후 SQL로 분석
  • Google BigQuery, AWS Athena 같은 클라우드 데이터 분석 도구 활용
  • 분산 컴퓨팅 (Spark, Hadoop) 사용하여 초대용량 데이터 처리

🛠 코드 예제 1 (MySQL에서 CSV 불러오기)

LOAD DATA INFILE '/path/to/large_data.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','  
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

🛠 코드 예제 2 (PostgreSQL에서 CSV 불러오기)

COPY my_table FROM '/path/to/large_data.csv' WITH (FORMAT csv, HEADER true);

🛠 코드 예제 3 (Google BigQuery 사용)

from google.cloud import bigquery

client = bigquery.Client()
query = "SELECT COUNT(*) FROM `my_dataset.my_table`"
query_job = client.query(query)

for row in query_job:
    print(row)

🚀 추천 툴

  • MySQL/PostgreSQL → 수억 줄 가능
  • Google BigQuery → 테라바이트 (TB) 이상 처리 가능
  • Apache Spark → 분산 데이터 처리 가능

📌 요약 및 추천 방법

데이터 크기 추천 방법 사용 도구
100만 줄 이하 Excel, Google Sheets, Pandas Excel, Google Sheets, Pandas
100만 ~ 1천만 줄 Pandas 최적화, Dask 사용 Pandas, Dask, SQLite
1천만 ~ 1억 줄 데이터베이스(SQL), Dask MySQL, PostgreSQL, Dask, Vaex
1억 줄 이상 클라우드 BigQuery, Spark Google BigQuery, AWS Athena, Spark

📌 결론

초보자 → Excel, Pandas를 활용하여 데이터 분석 시작
중급자 → Pandas 최적화 및 Dask를 활용하여 더 큰 데이터 처리
숙련자 → 데이터베이스 및 클라우드(BigQuery, Spark)로 초대용량 데이터 분석

💡 핵심 팁:

  • CSV가 너무 크다면?데이터를 나누어서(chunksize) 로드
  • Excel이 한계라면?Pandas, Dask, 또는 SQL 사용
  • 수억 줄 이상이라면?클라우드(BigQuery, AWS Athena) 또는 Spark 사용
반응형