최근 Python Bytes 팟캐스트에 따르면, 10억 행 처리 벤치마크에서 Pandas는 4분 28초, Polars는 5.04초, DuckDB는 5.19초가 걸렸으며, DuckDB는 메모리 사용량이 19배 적다고 합니다. 속도 면에서는 Python과 Rust를 비교하기 어려울 정도입니다.
해당 에피소드 녹취록에는 “Pandas should go extinct”라는 블로그 글 링크도 있습니다. https://pythonbytes.fm/episodes/show/496/a-lake-house-in-sea....
Polars는 사실상 99.9%의 용도에서 Pandas를 완전히 대체할 수 있습니다. 제가 아는 유일한 예외는 지리공간 데이터로, 널리 쓰이는 Geopandas에 대응하는 Geopolars가 아직 준비되지 않았습니다. 다만 Geopolars는 활발히 개발 중이라 언젠가는 실서비스에 쓸 수준이 될 것으로 예상합니다.
제가 알기로 Polars는 더 빠르고, 외부 도구 없이도 더 잘 확장되며, API도 더 좋고 Rust 기반이라는 장점도 있습니다. Pandas는 대다수가 지금 사용하고 과거에도 써온 도구라 필요할 때 유리합니다. 깊이 사용하다 마주치는 자잘한 작업을 위한 보조 함수와 활용 예제도 더 풍부하겠지만, LLM 시대에는 그 차이가 크지 않다고 생각합니다.
Polars가 SQL을 지원한다는 사실을 오늘 처음 알게 되어 놀라웠습니다.
DuckDB도 곧 2.0.0을 출시할 예정인데, 우연일까요?
실제로 우연은 아닙니다. 2.0 버전은 오래전부터 계획하고 있었고, 1.0을 출시할 때는 1.x 버전을 빠르게 벗어나겠다고 했지만 예상보다 훨씬 오래 머물게 되었습니다.
간단히 확인해 보니 2.0 브랜치에 처음 PR(Pull Request)이 병합된 시점은 6월입니다. 2026년 6월 17일 #27993에서는 pl.col(...)을 선택자로 강제 변환하는 동작을 중단했고, 6월 18일 #27996에서는 다중 시드 해시 API를 단일 시드로 교체했으며, 6월 19일 #27991에서는 Expr.flatten 함수를 제거했습니다.
둘이 뭔가를 두고 경쟁 중인 걸까요?
가장 궁금한 점은 예전의 즉시 실행(eager execution)과 지연 실행(lazy execution) 사이에서 실수하기 쉬운 함정이 정리되었는지 여부입니다. 제 버그 절반은 반복문에 잘못 끼어든 collect() 때문에 쿼리 실행 계획이 망가져서 발생했습니다.
요즘 Polars와 DataFusion의 관계가 궁금합니다. 하나의 생태계로 합쳐지지 못할 이유가 있을까요?