지연 모드 소개

Polars 입문

Liam Brannigan

Data Scientist & Polars Contributor

즉시 모드

(
    pl.read_csv("vacation_rentals.csv")


)
  • CSV를 DataFrame으로 로드

지연 모드

Polars 입문

즉시 모드

(
    pl.read_csv("vacation_rentals.csv")


)
  • CSV를 DataFrame으로 로드

지연 모드

(
    pl.scan_csv("vacation_rentals.csv")


)
  • 쿼리 플랜 시작
  • CSV의 처음 몇 행만 읽음
Polars 입문

즉시 모드

(
    pl.read_csv("vacation_rentals.csv")


)
| name     | type    | ... | beach |
| ---      | ---     | ... | ---   |
| str      | str     | ... | bool  |
|----------|---------| ... |-------|
| Waves    | Cottage | ... | false |
| Seashell | Cottage | ... | true  |
| ...      | ...     | ... | ...   |

지연 모드

(
    pl.scan_csv("vacation_rentals.csv")


)
naive plan: 

Csv SCAN [vacation_rentals.csv]
PROJECT */8 COLUMNS
Polars 입문

즉시 모드

(
    pl.read_csv("vacation_rentals.csv")
    .select("name","price")

)

지연 모드

Polars 입문

즉시 모드

(
    pl.read_csv("vacation_rentals.csv")
    .select("name","price")

)

지연 모드

(
    pl.scan_csv("vacation_rentals.csv")
    .select("name","price")

)
  • 쿼리 플랜을 업데이트
  • 쿼리 플랜을 최적화
Polars 입문

최적화된 쿼리 플랜

print(
    pl.scan_csv("vacation_rentals.csv")
    .select("name","price")
    .explain()
)
Csv SCAN [vacation_rentals.csv]

PROJECT 2/8 COLUMNS
  • 최적화: projection pushdown
Polars 입문

지연 쿼리 실행

(
    pl.scan_csv("vacation_rentals.csv")
    .select("name","price")
    .collect()
)
shape: (49, 2)
| name      | price |
| ---       | ---   |
| str       | i64   |
|-----------|-------|
| Waves     | 540   |
| Seashells | 540   |
| ...       | ...   |
Polars 입문

즉시 모드 vs. 지연 모드

(
    pl.read_csv("vacation_rentals.csv")
    .select("name","price")

)
  • 한 줄씩 실행
(
    pl.scan_csv("vacation_rentals.csv")
    .select("name","price")
    .collect()
)
  • 전체 쿼리 실행
Polars 입문

즉시 모드 vs. 지연 모드

달리는 백곰(Polar Bear)과 잠자는 폴라스 곰(Polars Bear)

  • 단계별: 즉시 모드
  • 디버깅: 즉시 모드
  • 성능 최적화: 지연 모드
Polars 입문

연습해 봅시다!

Polars 입문

Preparing Video For Download...