carbonium
Easily manage a list of names with several properties and (overlapping) order criteria.
Installation
Install carbonium is as easy as run
pip install carbonium.
Usage
As first step you should define a name list:
name_list = [
{
"domains": ["raw", "output"],
"name": "var1",
"alias": "column_1_name",
"output_order": 1,
"filling_value": 10,
},
{
"domains": ["raw"],
"name": "var2",
"alias": "column_2_name",
"output_order": 2,
},
{
"domains": ["new", "output"],
"name": "new_var",
"alias": "new_column_name",
},
]
Each name definition is a dictionary that contains some common, mandatory key, and some other keys, domain-specific or name-specific.
Mandatory keys are only three:
- domains, a list of string, each representing a domain
- name, a string, uniquely identifiers of a name
- alias, a string that can be used to refers to the name in context where it is named with this alternative string.
Then, each name belongs to some domains. Domains are used to perfom names selection (give me all names belonging to domain). Names that belongs to the same domain should have the same optional attributes.
After name list definition, you can instantiate the structure class:
from carbonium import Structure
structure = Structure(name_list)
Internally, the Structure class iteratively instantiate a
Name class for each name definition. After this
step you can access to each Name and its properties
through c object, but you can also use one of
property or method of the class.
print(structure.names)
# returns: ['var1', 'var2', 'new_var']
print(structure.domains)
# returns: {'new', 'output', 'raw'}
print(
structure.var1.name,
structure.var1.domains,
structure.var1.output_order
)
Calling structure.var1.name you have access to the string associated to var1... and so on.
ordered_raw_columns = [
(
i,
structure.get(i).output_order,
structure.get(i).get("filling_value")
)
for i in structure.get_names('raw')
]
ordered_raw_columns = sorted(
ordered_raw_columns,
key=lambda x: x[1]
)
In this example all the names belonging to raw domain are extracted with some other properties. In this way the same name can be used in different domains or contexts by referring to contexctual relevant properties.
import pandas as pd
df = pd.DataFrame([
{"var1": 100, "var2": 200},
{"var2": 220},
])
for name in structure.get_names('raw'):
alias = structure.get(name).alias
filling = structure.get(name).get("filling_value")
if filling:
df[alias].fillna(filling, inplace=True)
for name in structure.get_names('new'):
alias = structure.get(name).alias
df[alias] = "arbitrary"
output_columns = structure.get_names('new')
df[output_columns].to_parquet('output.parquet')
As you can see, whithout modify the code but only the taxonomy described in name_list, you can affect different columns.
Metadata
Release files for carbonium 0.10.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| carbonium-0.10.4.tar.gz | 6.3 kB | Without provenance | Details for carbonium-0.10.4.tar.gz |
Release files / carbonium-0.10.4.tar.gz
| Download URL | carbonium-0.10.4.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f5c2db0b5d118f024f5e72dc9186a2d7c2cf194a99ac0ddc9d69756322fa4d1c
|
|
BLAKE2b-256 checksum How to use checksums |
8e4b78250631f8a912fb76e98a2bdbb52265ce7765aebe01ff97080058eb1f80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1
|
Security for carbonium 0.10.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.