PolarsのExpression
同じExpressionでも、異なるcontextに応じて異なる結果になる
遅延評価される
実行前に良い感じに最適化されるために高速になるらしい ref こういう、直観どおりの計算式のこと
code:py
pl.col("weight") / (pl.col("height") ** 2)
Expression expansion
以下2つは同じ意味
code:py
pl.col("weight", "height").mean().name.prefix("avg_")
code:py
[
pl.col("weight").mean().alias("avg_weight"),
pl.col("height").mean().alias("avg_height"),
]
Polarsのダミー値周り
ランダムに抽出する場合はsample系のmethodを使う
etc.
code:py
df = pl.DataFrame({"foo": 1, 2, 3}) df.with_columns(pl.lit(np.random.rand(df.height)).alias("prob"))
code:py
n = _sheet.height
random_stock = np.random.randint(1, 10, size=n)
sheet = (
_sheet
.with_columns([
pl.Series("実在庫数", random_stock),
pl.Series("カウント日", random_dates),
])
)
categorical
カラムの内容が、赤、黄、青、みたいに決まったカテゴリに限るやつの扱い
内部で辞書を作るので、普通に文字列を使うより高速らしい
2種類
Enum
事前にカテゴリが決まっているもの
Categorical
カテゴリが不明または固定されていないもの
aggregation
array
各行の要素数が同じである
arrayというよりtupleのイメージ?mrsekut.icon
Pythonのuser-defined functions
numpyの関数でmapしたりできる
streamingにも対応している
(もちろん自分で定義しても良い)
code:py
import numpy as np
out = df.select(pl.col("values").map_batches(np.log))