Catalog PyPI
PACKAGE EXPLORERView in registry

additory

PyPI

Elegant data operations for DataFrames - add.to(), add.transform(), add.synthetic()

datadata-augmentationdataframepandaspolarsrustsynthetic-data
Versions collected1
Direct dependencies4From release 0.1.3a11
Last observed20 Oct, 19:19 UTC

README

Version 0.1.3a11 documentation

additory

Elegant data operations for DataFrames

A Rust-powered Python library for intuitive data transformations, lookups, synthetic data generation, and DataFrame comparison — with Polars and Pandas.

PyPI version Python Support License: MIT

Installation

pip install additory

Requirements: Python 3.9+ · Polars (required) · pyarrow (required) · Pandas (optional)

Quick Start

import additory as add
import polars as pl

Bring data from another DataFrame

orders = pl.DataFrame({'order_id': [1, 2], 'customer_id': [101, 102], 'amount': [250, 180]})
customers = pl.DataFrame({'customer_id': [101, 102], 'name': ['Alice', 'Bob']})

result = add.to(orders, customers, 'name', 'customer_id')

Transform data

df = pl.DataFrame({'price': [100, 200, 300], 'quantity': [2, 3, 1]})

result = add.transform('@calc', df, strategy={'total': 'price * quantity', 'tax': 'total * 0.1'})
result = add.transform('@filter', df, where='price > 150')
result = add.transform('@sort', df, by='price', strategy='desc')
result = add.transform('@aggregate', df, by='category', strategy={'price': 'sum'})

Generate synthetic data

result = add.synthetic('@new', n=1000, strategy={
    'age': 'normal(40, 10)',
    'salary': 'normal(75000, 15000)',
})

# Augment existing data
result = add.synthetic(df, n=100)

Compare DataFrames

diff = add.scan('@diff', old=df_jan, new=df_feb)

Use dynamic expressions

patients = pl.DataFrame({'weight': [70, 85], 'height': [1.70, 1.80]})
result = add.bmi(patients)

Pipe compatibility

result = (
    orders
    .pipe(add.to, customers, 'name', 'customer_id')
    .pipe(add.to, products, 'price', 'product_id')
)

Core Functions

FunctionPurposePipe-Friendly
add.to(bring_to, bring_from, bring, against, ...)Bring columns from another DataFrame✅
add.transform(mode, df, ...)Transform data (12 modes)❌
add.synthetic(df_or_mode, n, ...)Generate or augment data✅
add.scan(mode, df, ...)Analyze, diff, manage expressions❌
add.<dynamic>(df, ...)Named expression functions✅

Transform Modes

@calc · @filter · @sort · @aggregate · @harmonize · @round · @transpose · @extract · @onehot · @label · @deduce · @split

Features

  • 🔗 Intuitive Lookups — bring columns from external sources with natural syntax
  • ⚡ 12 Transform Modes — calculate, filter, sort, aggregate, encode, impute
  • 🔍 DataFrame Diff — compare snapshots with add.scan('@diff')
  • 🧮 Dynamic Expressions — 74 built-in formulas across 7 categories, extensible via .add files
  • 🎲 Synthetic Data — generate realistic test data or augment existing datasets
  • 📊 Lineage Tracking — trace data provenance with lineage=True
  • 🔄 Pipe Compatibility — fluent chaining with df.pipe()
  • 🚀 Rust Performance — ~95% Rust core via PyO3
  • 🐼 Polars & Pandas — works with both DataFrame libraries

Documentation

📚 sekarkrishna.github.io/additory

Version

Current version: 0.1.3a11

License

MIT License — see LICENSE for details.

Author: Krishnamoorthy Sankaran

Downloads & popularity

8downloads
1-day window · source-reported counts20 Oct 2026
82410
2026-07-23: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-07-23–2026-07-232026-07-24: 9 · observed 2026-10-21T17:56:04.4624161Z · period 2026-07-24–2026-07-242026-07-26: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-07-26–2026-07-262026-07-27: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-07-27–2026-07-272026-07-28: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-07-28–2026-07-282026-07-29: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-07-29–2026-07-292026-08-01: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-01–2026-08-012026-08-02: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-02–2026-08-022026-08-03: 4 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-03–2026-08-032026-08-09: 8 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-09–2026-08-092026-08-13: 4 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-13–2026-08-132026-08-14: 4 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-14–2026-08-142026-08-15: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-15–2026-08-152026-08-16: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-16–2026-08-162026-08-17: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-17–2026-08-172026-08-18: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-18–2026-08-182026-08-19: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-19–2026-08-192026-08-20: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-20–2026-08-202026-08-21: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-21–2026-08-212026-08-22: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-22–2026-08-222026-08-23: 6 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-23–2026-08-232026-08-24: 10 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-24–2026-08-242026-08-25: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-25–2026-08-252026-08-26: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-26–2026-08-262026-08-28: 23 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-28–2026-08-282026-08-29: 14 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-29–2026-08-292026-08-30: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-30–2026-08-302026-08-31: 13 · observed 2026-10-21T17:56:04.4624161Z · period 2026-08-31–2026-08-312026-09-01: 12 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-01–2026-09-012026-09-02: 4 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-02–2026-09-022026-09-03: 8 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-03–2026-09-032026-09-04: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-04–2026-09-042026-09-07: 4 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-07–2026-09-072026-09-09: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-09–2026-09-092026-09-11: 16 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-11–2026-09-112026-09-12: 6 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-12–2026-09-122026-09-13: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-13–2026-09-132026-09-14: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-14–2026-09-142026-09-15: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-15–2026-09-152026-09-16: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-16–2026-09-162026-09-17: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-17–2026-09-172026-09-18: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-18–2026-09-182026-09-19: 53 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-19–2026-09-192026-09-20: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-20–2026-09-202026-09-21: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-21–2026-09-212026-09-23: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-23–2026-09-232026-09-24: 30 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-24–2026-09-242026-09-25: 14 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-25–2026-09-252026-09-26: 6 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-26–2026-09-262026-09-27: 14 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-27–2026-09-272026-09-28: 29 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-28–2026-09-282026-09-29: 44 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-29–2026-09-292026-09-30: 25 · observed 2026-10-21T17:56:04.4624161Z · period 2026-09-30–2026-09-302026-10-01: 4 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-01–2026-10-012026-10-02: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-02–2026-10-022026-10-03: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-03–2026-10-032026-10-04: 1 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-04–2026-10-042026-10-06: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-06–2026-10-062026-10-07: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-07–2026-10-072026-10-08: 82 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-08–2026-10-082026-10-09: 14 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-09–2026-10-092026-10-10: 29 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-10–2026-10-102026-10-11: 19 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-11–2026-10-112026-10-12: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-12–2026-10-122026-10-13: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-13–2026-10-132026-10-14: 2 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-14–2026-10-142026-10-16: 3 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-16–2026-10-162026-10-17: 10 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-17–2026-10-172026-10-18: 7 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-18–2026-10-182026-10-19: 8 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-19–2026-10-192026-10-20: 8 · observed 2026-10-21T17:56:04.4624161Z · period 2026-10-20–2026-10-20
23 Jul20 Oct

pypistats · 71 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-20 – 2026-10-2082026-10-21T17:56:04.4624161Z
2026-10-19 – 2026-10-1982026-10-21T17:56:04.4624161Z
2026-10-18 – 2026-10-1872026-10-21T17:56:04.4624161Z
2026-10-17 – 2026-10-17102026-10-21T17:56:04.4624161Z
2026-10-16 – 2026-10-1632026-10-21T17:56:04.4624161Z
2026-10-14 – 2026-10-1422026-10-21T17:56:04.4624161Z
2026-10-13 – 2026-10-1332026-10-21T17:56:04.4624161Z
2026-10-12 – 2026-10-1232026-10-21T17:56:04.4624161Z
2026-10-11 – 2026-10-11192026-10-21T17:56:04.4624161Z
2026-10-10 – 2026-10-10292026-10-21T17:56:04.4624161Z
2026-10-09 – 2026-10-09142026-10-21T17:56:04.4624161Z
2026-10-08 – 2026-10-08822026-10-21T17:56:04.4624161Z
2026-10-07 – 2026-10-0722026-10-21T17:56:04.4624161Z
2026-10-06 – 2026-10-0632026-10-21T17:56:04.4624161Z
2026-10-04 – 2026-10-0412026-10-21T17:56:04.4624161Z
2026-10-03 – 2026-10-0332026-10-21T17:56:04.4624161Z
2026-10-02 – 2026-10-0232026-10-21T17:56:04.4624161Z
2026-10-01 – 2026-10-0142026-10-21T17:56:04.4624161Z
2026-09-30 – 2026-09-30252026-10-21T17:56:04.4624161Z
2026-09-29 – 2026-09-29442026-10-21T17:56:04.4624161Z
2026-09-28 – 2026-09-28292026-10-21T17:56:04.4624161Z
2026-09-27 – 2026-09-27142026-10-21T17:56:04.4624161Z
2026-09-26 – 2026-09-2662026-10-21T17:56:04.4624161Z
2026-09-25 – 2026-09-25142026-10-21T17:56:04.4624161Z
2026-09-24 – 2026-09-24302026-10-21T17:56:04.4624161Z
2026-09-23 – 2026-09-2312026-10-21T17:56:04.4624161Z
2026-09-21 – 2026-09-2132026-10-21T17:56:04.4624161Z
2026-09-20 – 2026-09-2022026-10-21T17:56:04.4624161Z
2026-09-19 – 2026-09-19532026-10-21T17:56:04.4624161Z
2026-09-18 – 2026-09-1812026-10-21T17:56:04.4624161Z
2026-09-17 – 2026-09-1712026-10-21T17:56:04.4624161Z
2026-09-16 – 2026-09-1622026-10-21T17:56:04.4624161Z
2026-09-15 – 2026-09-1532026-10-21T17:56:04.4624161Z
2026-09-14 – 2026-09-1432026-10-21T17:56:04.4624161Z
2026-09-13 – 2026-09-1312026-10-21T17:56:04.4624161Z
2026-09-12 – 2026-09-1262026-10-21T17:56:04.4624161Z
2026-09-11 – 2026-09-11162026-10-21T17:56:04.4624161Z
2026-09-09 – 2026-09-0912026-10-21T17:56:04.4624161Z
2026-09-07 – 2026-09-0742026-10-21T17:56:04.4624161Z
2026-09-04 – 2026-09-0422026-10-21T17:56:04.4624161Z
2026-09-03 – 2026-09-0382026-10-21T17:56:04.4624161Z
2026-09-02 – 2026-09-0242026-10-21T17:56:04.4624161Z
2026-09-01 – 2026-09-01122026-10-21T17:56:04.4624161Z
2026-08-31 – 2026-08-31132026-10-21T17:56:04.4624161Z
2026-08-30 – 2026-08-3032026-10-21T17:56:04.4624161Z
2026-08-29 – 2026-08-29142026-10-21T17:56:04.4624161Z
2026-08-28 – 2026-08-28232026-10-21T17:56:04.4624161Z
2026-08-26 – 2026-08-2612026-10-21T17:56:04.4624161Z
2026-08-25 – 2026-08-2512026-10-21T17:56:04.4624161Z
2026-08-24 – 2026-08-24102026-10-21T17:56:04.4624161Z
2026-08-23 – 2026-08-2362026-10-21T17:56:04.4624161Z
2026-08-22 – 2026-08-2212026-10-21T17:56:04.4624161Z
2026-08-21 – 2026-08-2122026-10-21T17:56:04.4624161Z
2026-08-20 – 2026-08-2032026-10-21T17:56:04.4624161Z
2026-08-19 – 2026-08-1912026-10-21T17:56:04.4624161Z
2026-08-18 – 2026-08-1812026-10-21T17:56:04.4624161Z
2026-08-17 – 2026-08-1732026-10-21T17:56:04.4624161Z
2026-08-16 – 2026-08-1632026-10-21T17:56:04.4624161Z
2026-08-15 – 2026-08-1522026-10-21T17:56:04.4624161Z
2026-08-14 – 2026-08-1442026-10-21T17:56:04.4624161Z
2026-08-13 – 2026-08-1342026-10-21T17:56:04.4624161Z
2026-08-09 – 2026-08-0982026-10-21T17:56:04.4624161Z
2026-08-03 – 2026-08-0342026-10-21T17:56:04.4624161Z
2026-08-02 – 2026-08-0212026-10-21T17:56:04.4624161Z
2026-08-01 – 2026-08-0112026-10-21T17:56:04.4624161Z
2026-07-29 – 2026-07-2912026-10-21T17:56:04.4624161Z
2026-07-28 – 2026-07-2812026-10-21T17:56:04.4624161Z
2026-07-27 – 2026-07-2722026-10-21T17:56:04.4624161Z
2026-07-26 – 2026-07-2622026-10-21T17:56:04.4624161Z
2026-07-24 – 2026-07-2492026-10-21T17:56:04.4624161Z
2026-07-23 – 2026-07-2332026-10-21T17:56:04.4624161Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.3a119 May 20264

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
sekarkrishna/additory

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:19 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:2b9e318edbd1d260a032e8bb05c64b3cbae6c188b16db92ec80b6ab7a6608b98