pytae
Pandas helpers for everyday data-science tasks (filtering, selection, reshaping, aggregation, plotting), plus a pytae CLI that exposes the same operations for inspecting and converting tabular files (.parquet, .csv, .txt, .dat, .sas7bdat) without writing any Python.
Install
pip install pytae # Core library and CLI
pip install "pytae[plot]" # Adds Plotter (matplotlib, scipy)
pip install "pytae[sql]" # Adds SQL engine (duckdb)
CLI
pytae data.parquet -head
pytae data.parquet -qry "species='Adelie'" -select "species,body_mass_g" -convert -o subset.csv
pytae data.parquet -sql "select species, avg(body_mass_g) from data group by species"
pytae -file "data1.parquet=df1; data2.parquet=df2" -merge "left=df1,right=df2,on=id"
See docs/CLI.md for the full CLI reference and flag guide, and docs/CLI_MULTI_FILE.md for -file/-merge/-concat.
Plotting
Plotter: method-chainable plots on top of pandas.plot() (pip install pytae[plot]).
from pytae.plotting import Plotter
Plotter().data(penguins).plot(
x="bill_length_mm", y="bill_depth_mm", kind="scatter", c="species", cmap="viridis"
).finalize()
See docs/PLOTTING.md for more examples with sample data.
Library
Import pytae as pt. Same verbs work as pt.select(df, ...) or as df.pt.select(...) (mix with pandas: df.rename(...).pt.agg_df(...)). Notebooks use the accessor chain. CLI flags (-select, -qry, …) are unchanged.
import pytae as pt
penguins = pt.sample("penguins")
pt.select(penguins, "species", contains="bill")
(penguins
.pt.select("species", "island", "bill_length_mm", "body_mass_g")
.pt.agg_df(a=["mean", "n"])
)
- Filtering —
pt.qry()/df.pt.qry(): string expressions, dicts, or keyword filters (equality, lists,in/not in, comparisons, intervals) - Selection —
pt.select(): columns by name, regex, dtype, or name pattern - Mutating —
pt.mutate(): create/overwrite columns via formulas,if_else(),case_when(),map() - Reshaping —
pt.long()/pt.wide(): melt numeric columns to rows, pivot back to columns - Aggregation —
pt.agg_df(): auto-detects group columns and aggregates the rest - Utilities —
df.to_clip(),pt.handle_missing(),pt.cols(),pt.group_x(),pt.clean_columns(),pt.replace_values() - SQL —
pt.sql()/df.pt.sql()via duckdb (pip install pytae[sql]); the frame is tabledata
See docs/LIBRARY.md for examples of each.
Key Conventions & Syntax Cheat Sheet
| Task | Syntax | Example |
|---|---|---|
| Copy to Clipboard | df.to_clip() in Python; -to_clip in CLI |
df.head().to_clip() vs. pytae data.parquet -head -to_clip |
| Mapping vs. Assignment | : maps old to new; = assigns values |
-rename "old:new" vs. -mutate "col = expr" |
| Spaced Columns (Filter) | String expressions handle spaces directly | df.pt.qry("bill length mm > 40") |
| Spaced Columns (Create) | Unpack dictionary with ** |
df.pt.mutate(**{"body mass kg": "body_mass_g / 1000"}) |
| Spaced Columns (Expr) | Reference via brackets [col] or backticks `col` |
df.pt.mutate(ratio="[bill length mm] / [bill depth mm]") |
| Selective Grouping | agg_df groups by all non-numeric cols; select first |
df.pt.select("species", "body_mass_g").pt.agg_df("mean") |
License
MIT — see LICENSE.
Release files for pytae 3.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytae-3.5.2.tar.gz | 2.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytae-3.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.2 MB
Release files / pytae-3.5.2.tar.gz
| Download URL | pytae-3.5.2.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec733e7b971e0fd971ad3d1d22a5b3573e4e5a147df1742f480f168d9eb88fd0
|
|
BLAKE2b-256 checksum How to use checksums |
2f984e69ca043942dd259d84698ec118f3a7d04114c71924eba2aafe4a377df6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pytae-3.5.2-py3-none-any.whl
| Download URL | pytae-3.5.2-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fa7ee5772cf7d2b7f97237da6289c37c13b50c44a576429d0c797c5fef3daf30
|
|
BLAKE2b-256 checksum How to use checksums |
42dab2927e0126b5c7f20b2c4a8e6bd044cd3f1ed8cfaac3d2af09eb96315a4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|