identify.auxilliary

flatten_multiindex_flow_data

Flatten multiindexed results to each flow beeing a singular column.

list_mutually_inclusive_columns

Identify columns present in all dataframes.

list_not_mutually_inclusive_columns

Identify columns not present in all dataframes.

filter_mutually_inclusive_columns

Filter a set of dataframes to only include mutually inclusive columns.

drop_all_zero_columns

Drop all columns only filled with zeroes (0).

Tessif module providing aux. resullt differences identification tools.

tessif.identify.auxilliary.flatten_multiindex_flow_data(midx_df)[source]

Flatten multiindexed results to each flow beeing a singular column.

Parameters:

midx_df (pandas.DataFrame) –

Multiindexed dataframe to be flattened.

Design case, the top-level index represents the individual components, while the second-level index represent the respective outflow targets.

Meaning for an energy system like:

A -> B -> C
     |
     v
     D

The dataframe would look something like:

    A  B
    B  C  D
0  10  8  2
1   0  0  0
2  20  2 18

Usually returned by something like tessif.analyze.ComparativeResultier.all_loads.

Returns:

Flattened, singular indexed column data frame.

Return type:

pandas.DataFrame

Example

Picking up on the example flows from above:

>>> import pandas as pd
>>> data = [
...     [10, 8, 2, ],
...     [0, 0, 0, ],
...     [20, 2, 18],
... ]
>>> mindex_df = pd.DataFrame(
...     data=data,
...     columns=pd.MultiIndex.from_tuples(
...         [("A", "B"), ("B", "C"), ("B", "D")]),
...     index=pd.date_range('2019-01-01', periods=3, freq='H'),
... )

Original multiindexed dataframe:

>>> print(mindex_df)
                      A  B
                      B  C   D
2019-01-01 00:00:00  10  8   2
2019-01-01 01:00:00   0  0   0
2019-01-01 02:00:00  20  2  18

Flattened dataframe:

>>> print(flatten_multiindex_flow_data(mindex_df))
                     A to B  B to C  B to D
2019-01-01 00:00:00      10       8       2
2019-01-01 01:00:00       0       0       0
2019-01-01 02:00:00      20       2      18
tessif.identify.auxilliary.list_mutually_inclusive_columns(dataframes)[source]

Identify columns present in all dataframes.

Parameters:

dataframes (Container) – Container of singular column indexed dataframes of which the mutually inclusive columns are identified

Returns:

List of column indices.

Return type:

list

Example

>>> import pandas as pd
>>> data = [
...     [10, 8, 2, ],
...     [0, 0, 0, ],
...     [20, 2, 18],
... ]
>>> df1 = pd.DataFrame(
...     data=data,
...     columns=["A", "C", "D"],
... )
>>> df2 = pd.DataFrame(
...     data=data,
...     columns=["A", "D", "E"],
... )
>>> print(list_mutually_inclusive_columns([df1, df2]))
['A', 'D']
tessif.identify.auxilliary.list_not_mutually_inclusive_columns(dataframes)[source]

Identify columns not present in all dataframes.

Parameters:

dataframes (Container) – Container of singular column indexed dataframes of which the not mutually inclusive columns are identified

Returns:

List of column indices.

Return type:

list

Example

>>> import pandas as pd
>>> data = [
...     [10, 8, 2, ],
...     [0, 0, 0, ],
...     [20, 2, 18],
... ]
>>> df1 = pd.DataFrame(
...     data=data,
...     columns=["A", "C", "D"],
... )
>>> df2 = pd.DataFrame(
...     data=data,
...     columns=["A", "D", "E"],
... )
>>> print(list_not_mutually_inclusive_columns([df1, df2]))
['C', 'E']
tessif.identify.auxilliary.filter_mutually_inclusive_columns(dataframes)[source]

Filter a set of dataframes to only include mutually inclusive columns.

Parameters:

dataframes (Container) – Container of singular column indexed dataframes of which the mutually inclusive columns are identified and kept, while the others are dropped.

Returns:

List of dataframes only containing mutually inclusive columns.

Return type:

list

Example

>>> import pandas as pd
>>> data = [
...     [10, 8, 2, ],
...     [0, 0, 0, ],
...     [20, 2, 18],
... ]
>>> df1 = pd.DataFrame(
...     data=data,
...     columns=["A", "C", "D"],
... )
>>> df2 = pd.DataFrame(
...     data=data,
...     columns=["A", "D", "E"],
... )
>>> filtered_dfs = filter_mutually_inclusive_columns([df1, df2])

Filtered df1:

>>> print(filtered_dfs[0])
    A   D
0  10   2
1   0   0
2  20  18

Filtered df2:

>>> print(filtered_dfs[1])
    A  D
0  10  8
1   0  0
2  20  2
tessif.identify.auxilliary.drop_all_zero_columns(dataframe)[source]

Drop all columns only filled with zeroes (0).

Parameters:

dataframe (pandas.DataFrame) – data frame of which the all zero columns are dropped.

Returns:

data frame not containing all zero columns

Return type:

pandas.DataFrame

Example

>>> import pandas as pd
>>> data = [
...     [10, 8, 0, ],
...     [0, 0, 0, ],
...     [20, 2, 0],
... ]
>>> df = pd.DataFrame(
...     data=data,
...     columns=["A", "C", "D"],
... )
>>> print(drop_all_zero_columns(df))
    A  C
0  10  8
1   0  0
2  20  2
tessif.identify.auxilliary.drop_all_zero_rows(dataframe)[source]

Drop all rows only filled with zeroes (0).

Parameters:

dataframe (pandas.DataFrame) – data frame of which the all-zero rows are dropped.

Returns:

data frame not containing all-zero rows

Return type:

pandas.DataFrame

Example

>>> import pandas as pd
>>> data = [
...     [10, 8, 0, ],
...     [0, 0, 0, ],
...     [20, 2, 0],
... ]
>>> df = pd.DataFrame(
...     data=data,
...     columns=["A", "C", "D"],
... )
>>> print(drop_all_zero_rows(df))
    A  C  D
0  10  8  0
2  20  2  0
tessif.identify.auxilliary.parse_reference_df(dataframe, reference=None)[source]

Parse dataframe averages.