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

CSV 파일 크기 문제 해결 방법: 초급, 중급, 고급 단계별 가이드

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

CSV 파일 크기 문제 해결 방법: 초급, 중급, 고급 단계별 가이드

CSV 파일은 데이터를 저장하고 교환하는 데 널리 사용되지만, 파일 크기가 커지면 성능 문제가 발생할 수 있습니다. 초급, 중급, 고급자의 접근 방식을 단계별로 살펴보고, 각 기술 스택의 기본 개념과 장단점을 정리해 보겠습니다.


🔹 초급자: 기본적인 CSV 압축 및 최적화

✅ 해결 방법 1: CSV 압축하여 저장하기 (ZIP, GZIP)

🔹 기술 스택: zip, gzip, tar

📌 기본 개념

CSV 파일은 텍스트 기반이므로 압축하면 저장 공간을 절약할 수 있습니다. zip과 gzip을 사용하면 손쉽게 압축할 수 있으며, gzip은 CSV를 읽을 때도 압축된 상태로 처리할 수 있어 유용합니다.

💡 예제 코드 (Python)

import gzip
import shutil

# CSV 파일을 GZIP으로 압축하기
with open("large_file.csv", "rb") as f_in:
    with gzip.open("large_file.csv.gz", "wb") as f_out:
        shutil.copyfileobj(f_in, f_out)

✅ 장점

  • 쉽고 빠르게 파일 크기를 줄일 수 있음
  • 대부분의 프로그램에서 지원됨

❌ 단점

  • 파일을 읽으려면 매번 압축을 풀어야 할 수도 있음
  • 압축 후에도 데이터 구조 최적화가 되지는 않음

🔹 중급자: 데이터 포맷 변경 및 저장 방식 개선

✅ 해결 방법 2: CSV를 효율적인 포맷으로 변환 (Parquet, Feather)

🔹 기술 스택: Pandas, PyArrow, Fastparquet

📌 기본 개념

CSV 파일 대신 Parquet이나 Feather 같은 컬럼 기반 저장 포맷을 사용하면 데이터를 더 빠르게 처리하고 저장 공간을 절약할 수 있습니다.

💡 예제 코드 (Python - Pandas)

import pandas as pd

# CSV 로드
df = pd.read_csv("large_file.csv")

# Parquet 포맷으로 저장
df.to_parquet("large_file.parquet", engine="pyarrow", compression="snappy")

✅ 장점

  • 데이터 저장 공간 절약 (Parquet: 컬럼 기반 압축)
  • 데이터를 빠르게 로드할 수 있음
  • Spark, Dask 등에서 사용 가능

❌ 단점

  • CSV에 비해 초기 학습 필요
  • 일부 환경에서는 CSV보다 다루기 어려울 수 있음
반응형

🔹 고급자: 데이터 처리 방식 최적화

✅ 해결 방법 3: 대용량 데이터 처리를 위한 병렬 분할 및 스트리밍

🔹 기술 스택: Dask, Vaex, DuckDB

📌 기본 개념

데이터가 너무 크다면 한 번에 전체 데이터를 불러오지 않고, 스트리밍 방식으로 데이터를 처리하거나, 병렬 연산을 이용하여 여러 개의 작은 파일로 나누어 작업하는 것이 효율적입니다.

💡 예제 코드 (Python - Dask)

import dask.dataframe as dd

# CSV를 Dask DataFrame으로 로드
df = dd.read_csv("large_file.csv")

# 특정 연산 수행 (예: 그룹핑)
result = df.groupby("category").sum().compute()

# 결과를 저장
result.to_csv("processed_data.csv", single_file=True)

✅ 장점

  • 병렬 연산을 통해 대용량 데이터도 빠르게 처리 가능
  • CPU 및 RAM 사용을 최적화할 수 있음

❌ 단점

  • Dask, Vaex, DuckDB 등의 추가 학습 필요
  • 간단한 분석에는 오히려 과한 솔루션이 될 수 있음

🔹 정리: 기술 스택 비교

기술 스택 주요 특징 장점 단점
zip/gzip 텍스트 기반 압축 간단하고 범용적으로 사용 가능 압축 해제가 필요할 수 있음
Parquet/Feather 컬럼 기반 저장 포맷 저장 공간 절약 및 빠른 조회 CSV보다 복잡
Dask/Vaex/DuckDB 병렬 데이터 처리 대용량 데이터 처리 최적화 초기 학습 필요

🔹 마무리

CSV 파일 크기 문제를 해결하는 방법은 여러 가지가 있으며, 사용자의 수준과 요구에 맞게 적절한 방법을 선택하는 것이 중요합니다.

  • 초급자: zip/gzip으로 파일 크기를 줄이기
  • 중급자: Parquet, Feather 같은 효율적인 포맷으로 변환
  • 고급자: Dask, DuckDB 등을 활용한 병렬 및 스트리밍 처리
반응형