import datacode as dc
import numpy as np
from sympy import Symbol
[docs]def log_name_func(name: str, *args, **kwargs) -> str:
return f'Ln({name})'
[docs]def log_symbol_func(sym: Symbol, *args, **kwargs) -> Symbol:
sym_str = str(sym)
new_sym_str = r'\text{Ln}(' + sym_str + ')'
sym = Symbol(new_sym_str)
return sym
[docs]def log_data_func(col: dc.Column, variable: dc.Variable, source: dc.DataSource, shift: float = 0) -> dc.DataSource:
source.df[variable.name] = np.log(source.df[variable.name] + shift)
return source
log_transform = dc.Transform(
'log',
name_func=log_name_func,
data_func=log_data_func,
symbol_func=log_symbol_func,
data_func_target='source'
)