brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Feb 04. 2023

Python: DuckDB

#duckdb #빠른데?

파이썬 판다스를 쓰다가 속이 터져버렸다.

groupby, join 만 들어가면 나도 컴퓨터도 속이 터진다.


왜 느릴까?

그 이유를 알고, 고치고, 연산을 재정의하고...

하면 좋겠지만,

우선 판다스는 문자열 처리가 병렬적으로 안된다.


작은 예시로,

groupby 함수에서 max 집계에 str or object 타입이 들어오면

급격히 속이 터지는 현상이 나타난다.


가끔 우리는 OLAP 전문가가 아닌 분들과 협업을 해야할 때가 있다.

이런 데이터 전-후처리에 진심으로 튜닝하는 수고는 전문 엔지니어의 몫으로 남을 때가 많다.


그래서!


DuckDB 를 추천한다.

SQL이 좀 더 쉽게(?) 느껴질 수 있고, 널리 사용된다고 생각한다.



https://duckdb.org/docs/guides/python/install


파이썬에서 간단하게 설치하고

>> !pip install duckdb

>> import duckdb

>> import pandas as pd


대충 500MiB 정도 되는 parquet 파일 하나 준비하고 (약 1000000 row * 522 cols = 512MiB),


읽자!

>> df = pd.read_parquet('./tmp/pq/test.parquet')


자유롭게 쿼리를 날리자!

>> duckdb.query("select * from df").df()


실제로 gourp by, join 관련 쿼리를 만들어서 실행해보면

duckdb가 보통 3X ~ 30X 더 빠르다.


로컬에서 샘플 데이터를 간단하게 마사지하고 실험해 볼 때,

좋은 라이브러리라고 생각된다.


끝!


작가의 이전글 Python : Jupyter Black Fmt
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari