Created at : 2024-09-06 12:39
Auther: Soo.Y

1. Polars ์†Œ๊ฐœ

1.1 Polars๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

Polars๋Š” ๋น ๋ฅด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. Polars๋Š” ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋ฉฐ, ๋‹จ์ผ CPU ์ฝ”์–ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Polars์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ:
    • ๊ณ ์„ฑ๋Šฅ: Polars๋Š” ์„ฑ๋Šฅ์„ ์ตœ์šฐ์„ ์œผ๋กœ ์„ค๊ณ„๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Pandas๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ๋„ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ: ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๋ฅผ ํ”ผํ•˜๊ณ , ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU๋ฅผ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.2 Pandas์™€์˜ ์ฐจ์ด์ 

Polars๋Š” ๋งŽ์€ ๋ฉด์—์„œ Pandas์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ค‘์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PandasPolars
๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜
๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ชจ๋‘ ๋กœ๋“œํ•˜์—ฌ ์ž‘์—…Lazy Evaluation์œผ๋กœ ์ง€์—ฐ ํ‰๊ฐ€ ์‚ฌ์šฉ
ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„Rust๋กœ ๊ตฌํ˜„ (์„ฑ๋Šฅ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”)
API์˜ ์ง๊ด€์„ฑ ๋†’์Œ๋น„์Šทํ•œ API ์ œ๊ณต, ์„ฑ๋Šฅ์— ์ดˆ์ 
์ž‘์€ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ

1.3 Polars๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Polars๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ฑ๋Šฅ ์ตœ์ ํ™”: Polars๋Š” Pandas์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ํ›จ์”ฌ ๋” ๋น ๋ฅธ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ: ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Rust ๊ธฐ๋ฐ˜: Polars๋Š” Rust๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ๊ณ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ „์„ฑ์„ ๋ชจ๋‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Rust๋Š” C++๊ณผ ์œ ์‚ฌํ•œ ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ: ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ CPU ์„ฑ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Lazy Evaluation (์ง€์—ฐ ํ‰๊ฐ€): Polars๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์—ฐ์‚ฐ์„ ์ง€์—ฐํ•˜์—ฌ, ์ค‘๊ฐ„ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ , ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

1.4 Polars ์„ค์น˜ ๋ฐฉ๋ฒ•

Polars๋Š” Python ํ™˜๊ฒฝ์—์„œ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด pip ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pip install polars

๋˜๋Š”, conda๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

conda install -c conda-forge polars

์„ค์น˜ ํ›„, Python ํ™˜๊ฒฝ์—์„œ Polars๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด polars๋ฅผ ์ž„ํฌํŠธํ•ฉ๋‹ˆ๋‹ค.

import polars as pl

1.5 Polars์˜ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ: ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ์ ์ธ ํ™˜๊ฒฝ์—์„œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU๋ฅผ ํ™œ์šฉํ•ด ์†๋„ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ๋ถ„์„: ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ถ„์„ํ•ด์•ผ ํ•  ๋•Œ๋„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.6 Polars์™€์˜ ์ฒซ ๋งŒ๋‚จ (๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ)

import polars as pl
 
# ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ƒ์„ฑ
df = pl.DataFrame({
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["New York", "Los Angeles", "Chicago"]
})
 
# ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ถœ๋ ฅ
print(df)

์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด Polars์—์„œ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ์ƒ์„ฑํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํžˆ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.7 Polars ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ๋ฌธ์„œ

Polars๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์‹ ์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด์ง€๋งŒ, ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ™œ๋ฐœํ•œ ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์™€ ๊นƒํ—ˆ๋ธŒ์—์„œ ์ตœ์‹  ์—…๋ฐ์ดํŠธ์™€ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ๋ฌธ์„œ