Polars backend adapter for PlanFrame.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
planframe-polars
Polars adapter package for PlanFrame. Import as planframe_polars.
Documentation (ReadTheDocs):
- Polars track (end users):
https://planframe.readthedocs.io/en/latest/planframe_polars/ - Light API reference:
https://planframe.readthedocs.io/en/latest/planframe_polars/reference/api/
Usage
import polars as pl
from planframe_polars import PolarsFrame
class User(PolarsFrame):
id: int
age: int
pf = User(pl.DataFrame({"id": [1], "age": [2]}))
df = pf.select("id").collect()
# Common transforms
#
# PlanFrame is always lazy; these build a plan until `collect()`.
pf3 = pf.with_row_count(name="row_nr").clip(lower=0, subset=("age",))
pf4 = pf.rename_upper().cast_many({"age": float})
# Or construct from python data:
pf2 = User({"id": [1], "age": [2]})
Execution model
PlanFrame is always lazy:
- Chaining methods (like
.select(...)) does not run Polars operations. collect()evaluates the full plan. If the source is apolars.LazyFrame, this naturally compiles into a single lazy query before collecting.
Notes (Polars-specific)
- Pivot:
LazyFrame.pivot(...)requireson_columnsto be provided up-front (Polars must know the output schema prior tocollect()). PlanFrame enforces this at execution time. - pivot_wider: wrapper around
pivot(...); for deterministic output columns on lazy sources, passon_columns. - concat_vertical: implemented via
polars.concat(..., how="vertical"). - Join: implemented via
LazyFrame.join(...)/DataFrame.join(...)with symmetriconor asymmetricleft_on/right_on, plus optionalJoinOptionsmapped to Polars (nulls_equal,validate,coalesce,maintain_order,allow_parallel/ streaming). - Group by / agg:
group_bycompiles to Polarsgroup_bywith column or expression keys (expression keys are aliased__pf_g{i}).aggcompiles tuple reductions topl.col(...).sum()-style calls andAggExprto aggregated expressions on compiled inners (e.g.agg_sum(truediv(col("a"), col("b")))).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
planframe_polars-0.5.0.tar.gz
(10.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file planframe_polars-0.5.0.tar.gz.
File metadata
- Download URL: planframe_polars-0.5.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
931de145fad34dc87a1fda3ecd5d2a95ccfbee9d6de7720268809a6ad968453e
|
|
| MD5 |
2ccf5eb54b12d2f31591b59fd51bf998
|
|
| BLAKE2b-256 |
66deedb5c3913af78a4208a71997c469ed78b7f334b42c44480ef091c21cf677
|
File details
Details for the file planframe_polars-0.5.0-py3-none-any.whl.
File metadata
- Download URL: planframe_polars-0.5.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4d088cbfda06144268c3a1cb31c7ffa6c267c3d431651c8dff8f3c5585f1df1
|
|
| MD5 |
b15edf5be0b083bd53692c1bd9ecee9a
|
|
| BLAKE2b-256 |
1cedc6a67ab835f5799dc9944105afa286224277e82f8211dd929027bc38abb8
|