convtools allows to define and reuse conversions for processing collections and csv tables, complex aggregations and joins.
Project description
convtools
convtools is a specialized Python library designed for defining data transformations dynamically using a declarative approach. It automatically generates custom Python code for the user in the background.
ChatGPT's take on it :)
Introducing ConvTools, the revolutionary Python library for dynamic data
transformations! With its declarative approach, transforming data has never
been easier. Say goodbye to manual coding, ConvTools automatically
generates the code for you, saving you time and effort. Whether you're
working with large datasets or need to make real-time updates, ConvTools is
the solution you've been searching for. Get ready to experience the power
of efficient and effortless data transformation!
Installation
pip install convtools
Documentation
Group by example
from convtools import conversion as c
input_data = [
{"a": 5, "b": "foo"},
{"a": 10, "b": "foo"},
{"a": 10, "b": "bar"},
{"a": 10, "b": "bar"},
{"a": 20, "b": "bar"},
]
conv = (
c.group_by(c.item("b"))
.aggregate(
{
"b": c.item("b"),
"a_first": c.ReduceFuncs.First(c.item("a")),
"a_max": c.ReduceFuncs.Max(c.item("a")),
}
)
.pipe(
c.aggregate({
"b_values": c.ReduceFuncs.Array(c.item("b")),
"mode_a_first": c.ReduceFuncs.Mode(c.item("a_first")),
"median_a_max": c.ReduceFuncs.Median(c.item("a_max")),
})
)
.gen_converter()
)
assert conv(input_data) == {
'b_values': ['foo', 'bar'],
'mode_a_first': 10,
'median_a_max': 15.0
}
Built-in reducers like c.ReduceFuncs.First
* Sum
* SumOrNone
* Max
* MaxRow
* Min
* MinRow
* Count
* CountDistinct
* First
* Last
* Average
* Median
* Percentile
* Mode
* TopK
* Array
* ArrayDistinct
* ArraySorted
DICT REDUCERS ARE IN FACT AGGREGATIONS THEMSELVES, BECAUSE VALUES GET REDUCED.
* Dict
* DictArray
* DictSum
* DictSumOrNone
* DictMax
* DictMin
* DictCount
* DictCountDistinct
* DictFirst
* DictLast
AND LASTLY YOU CAN DEFINE YOUR OWN REDUCER BY PASSING ANY REDUCE FUNCTION
OF TWO ARGUMENTS TO ``c.reduce``.
What's the point if there are tools like Pandas / Polars?
- convtools doesn't need to wrap data in a container to provide functionality, it simply runs the python code it generates on any input
- convtools is lightweight (though optional
black
is highly recommended for pretty-printing generated code out of curiosity) - convtools fosters building pipelines on top of iterators, allowing for stream processing
- convtools supports nested aggregations
- convtools is a set of primitives for code generation, so it's just different.
Reporting a Security Vulnerability
See the security policy.
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
convtools-0.42.4.tar.gz
(57.6 kB
view hashes)
Built Distribution
convtools-0.42.4-py3-none-any.whl
(64.6 kB
view hashes)
Close
Hashes for convtools-0.42.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f6b060cc103d3d07e9f17da487fb189ef0cfe3f9541dc0e7be9c20dc541550b |
|
MD5 | 81b3c9f1d9706554ca256e67a924de04 |
|
BLAKE2b-256 | 2e840fbaaa25e5199c7ba7d32233bb5fb35502c4eda93d5e75f702b5d5cbd8a7 |