최근 수정 시각 : 2025-03-12 12:30:59

Polars

<#ffffff,#1c1d1f>파일:Polars 로고.svg
1. 개요2. 역사3. 특성4. 여담

[clearfix]

1. 개요

#!syntax python
import polars as pl

Polars (폴라스)는 정형 데이터 (테이블 데이터)를 전처리하는 Python 라이브러리다.[1] #

2. 역사

2020년, 리치 빈크 (Ritchie Vink)에 의해 pola.rs 프로젝트의 일환으로 개발되었다. 프로젝트명에서도 알 수 있듯이 Rust 기반으로 개발되어 메모리 누수나 보안에 내구성을 지니고 멀티코어 지원을 추가하였다. 또한, Apache Arrow 메모리 모델을 채택하여 데이터 프레임 (Data Frame)을 열 기반 (Columnar) 자료구조로 구현했다.

3. 특성

  • Apache Arrow 기반의 시계열 (Series), 데이터 프레임 (Data Frame) 자료형 구현
  • 대량 처리 (Batch Processing)를 위한 레이지 프레임 (Lazy Frame) 자료형 구현[2]
  • SQL 쿼리와 유사한 필터링 문법
  • 인덱싱 최소화
  • 다양한 벡터 연산 도입
  • 멀티 코어 지원
  • CUDA 지원 (GPU 전용 빌드 설치 필요)

Polars의 주요 코드는 Rust로 작성되었다. CPU 연산만으로도 Pandas보다 20배 빠른 연산속도를 보여준다.

4. 여담

  • 2020년에 출시된 이후로 해외에서는 급속도로 Pandas로 짜여진 Python 코드들이 Polars로 대체되었고 국내에서도 우아한형제들 (배달의민족) 등을 포함하여 주요 대기업과 유니콘 기업들이 Pandas가 쓰인 레거시 코드를 Polars로 재작성하고 있다.
  • 빅데이터 로드시 원본 파일의 행이나 열이 지나치게 많은 경우 결과물 내용이 짤리는 현상이 있어 이 과정에 한해서는 Pandas를 쓰는게 좋다. 그 다음 과정부터 Polars 데이터프레임으로 변환해서 사용할 수도 있다.


[1] 외래어 표기법에 따라서 원칙적으로 폴러즈라고 표기해야 한다. 하지만 국내 업계에서는 주로 폴라스라고 표기하고 그렇게 부른다.[2] Polars에서 일반 데이터 프레임은 즉시 초기화 모드 (Eager Mode)로 처리되어 생성자가 호출되는 즉시에 초기화가 이루어진다. 반면에 레이지 프레임은 지연 초기화 모드 (Lazy Mode)로 처리되어 별도의 상태 코드에 따라서 초기화, 소멸 등의 수명 주기가 정해진다. 일반 데이터 프레임은 수명주기가 자동으로 관리되지만 레이지 프레임은 개발자가 직접 정해줘야 한다.