Skip to main content
데이터 규모가 커지면 Pandas만으로 처리할지, DuckDB/Polars로 일부 단계를 분리할지 판단해야 합니다. 이 문서는 Pandas를 기준선으로 두고 확장 전략을 정리합니다.

1단계: Pandas 내 최적화

  • 필요한 컬럼만 로딩 (usecols)
  • 적절한 dtype 지정 (dtype, category, nullable dtype)
  • chunk 처리 (chunksize)
  • 벡터화 우선, apply 최소화

2단계: DuckDB/Polars 병행

도구강점추천 단계
DuckDBSQL 집계/조인 속도대용량 집계 전처리
Polars병렬/지연 실행복잡 변환 파이프라인

Pandas ↔ DuckDB 예시

import duckdb

agg = duckdb.query("""
    SELECT region, date_trunc('day', ts) AS d, sum(amount) AS revenue
    FROM read_parquet('events.parquet')
    GROUP BY 1, 2
""").to_df()

의사결정 기준

  • 단일 노드 메모리 한계에 자주 도달하는가
  • 조인/집계 단계가 전체 시간의 대부분을 차지하는가
  • 팀이 SQL 또는 Polars 문법을 운영할 준비가 되었는가
Pandas를 기본 인터페이스로 유지하고, 병목 단계만 외부 엔진으로 치환하는 방식이 전환 비용을 낮춥니다.

이어서 볼 문서