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์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์ค์ํ ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค.
Pandas | Polars |
---|---|
๋จ์ผ ์ค๋ ๋ ๊ธฐ๋ฐ | ๋ฉํฐ์ค๋ ๋ ๊ธฐ๋ฐ |
๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ ๋ก๋ํ์ฌ ์์ | 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๋ ์๋์ ์ผ๋ก ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ง๋ง, ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ ํ๋ฐํ ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ณต์ ๋ฌธ์์ ๊นํ๋ธ์์ ์ต์ ์ ๋ฐ์ดํธ์ ์์ ์ฝ๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.