Polars
https://gyazo.com/289bb70d4de901b9a2db1d948c77f35f
pandasの代替
pandasに対するpolars(しろくま)で、rsもかけてるのセンス良い
PolarsのExpressionとPolarsのContextsというDSLを使って記述する
PolarsのLazy API
github
Rust実装なので高速
docs
各言語向け
rust
python
JS
nodejs-polars
@pola-rs/browser
cheat sheet
/mrsekut-book-4297141388/121 (第4章 Polars)
#wip
Data Wranglerで開くためにはPyArrowを入れないといけないぽい
Polarsとpandasの比較
型の一覧
https://docs.pola.rs/user-guide/concepts/data-types-and-structures/#appendix-full-data-types-table
読み込んだ時に型も表示してくれる
code:_
shape: (4, 4)
┌────────────────┬────────────┬────────┬────────┐
│ name ┆ birthdate ┆ weight ┆ height │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ date ┆ f64 ┆ f64 │
╞════════════════╪════════════╪════════╪════════╡
│ Alice Archer ┆ 1997-01-10 ┆ 57.9 ┆ 1.56 │
│ Ben Brown ┆ 1985-02-15 ┆ 72.5 ┆ 1.77 │
│ Chloe Cooper ┆ 1983-03-22 ┆ 53.6 ┆ 1.65 │
│ Daniel Donovan ┆ 1981-04-30 ┆ 83.1 ┆ 1.75 │
└────────────────┴────────────┴────────┴────────┘
#??
言語ごとの優位性はあるのだろうか
例えば、どれが最も新機能が速く入るのかとか、活発なのかとか
やはり関連するライブラリがPythonが一番整っている、とか
pythonはやっぱり型がしょぼい、とか
dataframeの型をrs/tsなら静的にみれまっせ、とか
jsでプロダクト作っているならそれを使うのが丸い、とかはありそうだけど
docsにはrsとpyの両方のコードが書いてて、サクッと見た感じだと、明らかにpyのほうが記述量が少なくて済んでいる
書き捨てのものを書くなら、今のところ、わざわざrsを選ぶ必要性が感じられないmrsekut.icon
rsはめっちゃmethod chainする感じ
https://zenn.dev/hagakun_dev/articles/5d50adb928d902
https://gihyo.jp/article/2023/02/monthly-python-2302
nullとNaNは別物
https://docs.pola.rs/user-guide/concepts/data-types-and-structures/#floating-point-numbers
https://docs.pola.rs/
Transformations
Joins
Concatenation
Pivots
Unpivots
Time series
Parsing
Filtering
Grouping
https://docs.pola.rs/user-guide/transformations/time-series/rolling/
df.group_by_dynamic()
date用
Resampling
Time zones
IO
CSV
Excel
Parquet
JSON files
Multiple
Hive
Databases
Cloud storage
Google BigQuery
Hugging Face
SQL
Introduction
SQL書けるんだmrsekut.icon
https://docs.pola.rs/user-guide/sql/intro/#execute-queries-from-multiple-sources
code:py
with pl.SQLContext(
products_masterdata=pl.scan_csv("docs/assets/data/products_masterdata.csv"),
products_categories=pl.scan_ndjson("docs/assets/data/products_categories.json"),
sales_data=pl.from_pandas(sales_data),
eager=True,
) as ctx:
query = """
SELECT
product_id,
product_name,
category,
sales
FROM
products_masterdata
LEFT JOIN products_categories USING (product_id)
LEFT JOIN sales_data USING (product_id)
"""
print(ctx.execute(query))
SHOW TABLES
SELECT
CREATE
Common Table Expressions
Migrating
Coming from Pandas
Coming from Apache Spark
Ecosystem
Misc
Multiprocessing
Visualization
Styling
Comparison with other tools
Arrow producer/consumer
GPU Support Open Beta