omnipy.components.pandas.tasks
Tasks for converting, combining, and reshaping pandas-backed datasets.
| FUNCTION | DESCRIPTION |
|---|---|
cartesian_product |
Return the cartesian product of two tables. |
concat_dataframes_across_datasets |
Concatenate aligned files across multiple pandas datasets. |
convert_dataset_csv_to_pandas |
Parse CSV-like files into a pandas-backed dataset. |
convert_dataset_list_of_dicts_to_pandas |
Convert list-of-dicts files to a pandas-backed dataset. |
convert_dataset_pandas_to_csv |
Serialize pandas-backed files in a dataset to CSV text files. |
extract_columns_as_files |
Split selected columns into separate one-column files. |
join_tables |
Join two tables by shared or explicitly mapped columns. |
cartesian_product
cartesian_product(table_1: PandasModel, table_2: PandasModel) -> PandasModel
Return the cartesian product of two tables.
| PARAMETER | DESCRIPTION |
|---|---|
table_1
|
Left input table.
TYPE:
|
table_2
|
Right input table.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
PandasModel
|
A |
| RAISES | DESCRIPTION |
|---|---|
Exception
|
Propagates merge errors raised by pandas. |
Example
result = cartesian_product.run(left_table, right_table) isinstance(result, PandasModel) True
Source code in src/omnipy/components/pandas/tasks.py
concat_dataframes_across_datasets
concat_dataframes_across_datasets(
dataset_list: ListOfPandasDatasetsWithSameNumberOfFiles, vertical=True
) -> PandasDataset
Concatenate aligned files across multiple pandas datasets.
| PARAMETER | DESCRIPTION |
|---|---|
dataset_list
|
List model containing at least two datasets with aligned file counts and ordering. |
vertical
|
When
DEFAULT:
|
| RETURNS | DESCRIPTION |
|---|---|
PandasDataset
|
A dataset whose files are concatenations of corresponding files from each input dataset. |
| RAISES | DESCRIPTION |
|---|---|
Exception
|
Propagates concatenation errors raised by pandas. |
Example
combined = concat_dataframes_across_datasets.run(dataset_list) isinstance(combined, PandasDataset) True
Source code in src/omnipy/components/pandas/tasks.py
convert_dataset_csv_to_pandas
convert_dataset_csv_to_pandas(
dataset: Dataset[Model[bytes]],
delimiter: str = ",",
first_row_as_col_names=True,
col_names: list[str] | None = None,
ignore_comments: bool = True,
comments_char: str = "#",
) -> PandasDataset
Parse CSV-like files into a pandas-backed dataset.
Args:
dataset: Dataset with CSV content in each file.
delimiter: Field delimiter used in the CSV content.
first_row_as_col_names: Whether to infer column names from the first
row.
col_names: Explicit column names to use when parsing.
ignore_comments: Whether to ignore comment lines.
comments_char: Character marking the beginning of comment lines.
Returns:
A ``PandasDataset`` with one parsed table per input file.
Raises:
Exception: Propagates parsing errors raised by ``pandas.read_csv``.
Example:
>>> from omnipy.data.dataset import Dataset
>>> from omnipy.data.model import Model
>>> ds = Dataset[Model[bytes]]({'table.csv': b'a,b
1,2 '}) >>> out_ds = convert_dataset_csv_to_pandas.run(ds) >>> tuple(out_ds.keys()) ('table.csv',)
Source code in src/omnipy/components/pandas/tasks.py
convert_dataset_list_of_dicts_to_pandas
convert_dataset_list_of_dicts_to_pandas(
dataset: Dataset[Model[list[dict[str, NotIterableExceptStrOrBytesModel]]]],
) -> PandasDataset
Convert list-of-dicts files to a pandas-backed dataset.
| PARAMETER | DESCRIPTION |
|---|---|
dataset
|
Dataset where each file contains a list of row dictionaries.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
PandasDataset
|
A dataset with the same file keys, where each file is represented as a
|
| RAISES | DESCRIPTION |
|---|---|
Exception
|
Propagates validation or conversion errors raised while constructing pandas-backed files. |
Example
from omnipy.data.dataset import Dataset from omnipy.data.model import Model input_ds = DatasetModel[list[dict[str, int]]] out_ds = convert_dataset_list_of_dicts_to_pandas.run(input_ds) tuple(out_ds.keys()) ('rows',)
Source code in src/omnipy/components/pandas/tasks.py
convert_dataset_pandas_to_csv
convert_dataset_pandas_to_csv(
dataset: PandasDataset,
delimiter: str = ",",
first_row_as_col_names=True,
col_names: list[str] | None = None,
) -> Dataset[Model[str]]
Serialize pandas-backed files in a dataset to CSV text files.
| PARAMETER | DESCRIPTION |
|---|---|
dataset
|
Dataset containing pandas-backed table files.
TYPE:
|
delimiter
|
Field delimiter to use in output CSV text.
TYPE:
|
first_row_as_col_names
|
Whether to include column names in the output header row.
DEFAULT:
|
col_names
|
Explicit header names to write when provided.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Dataset[Model[str]]
|
Dataset mapping each input file key to CSV text. |
| RAISES | DESCRIPTION |
|---|---|
Exception
|
Propagates serialization errors raised by pandas. |
Example
csv_ds = convert_dataset_pandas_to_csv.run(pandas_dataset) isinstance(csv_ds, Dataset) True
Source code in src/omnipy/components/pandas/tasks.py
extract_columns_as_files
extract_columns_as_files(dataset: PandasDataset, col_names: list[str]) -> PandasDataset
Split selected columns into separate one-column files.
| PARAMETER | DESCRIPTION |
|---|---|
dataset
|
Input dataset with tabular files.
TYPE:
|
col_names
|
Column names to extract into their own files.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
PandasDataset
|
A new dataset containing modified original tables (without extracted
columns) plus additional one-column files named |
| RAISES | DESCRIPTION |
|---|---|
KeyError
|
If one or more requested columns do not exist in a file. |
Example
out_ds = extract_columns_as_files.run(pandas_dataset, ['name']) any(key.endswith('.name') for key in out_ds.keys()) True
Source code in src/omnipy/components/pandas/tasks.py
join_tables
join_tables(
table_1: PandasModel,
table_2: PandasModel,
join_type: str = "outer",
on_cols: Sequence[str] | Mapping[str, str] | None = None,
) -> PandasModel
Join two tables by shared or explicitly mapped columns.
| PARAMETER | DESCRIPTION |
|---|---|
table_1
|
Left input table.
TYPE:
|
table_2
|
Right input table.
TYPE:
|
join_type
|
Join strategy. Supported values are
TYPE:
|
on_cols
|
Optional join columns. Provide a sequence for same-name columns or a mapping from left to right column names.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
PandasModel
|
A merged table wrapped in |
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
If |
AssertionError
|
If |
Example
joined = join_tables.run(left_table, right_table, join_type='inner', on_cols=['id']) isinstance(joined, PandasModel) True