|
import pandas as pd |
|
def norm_sNavie(df): |
|
df_normalized = df.copy() |
|
seasonal_naive_row = df[df['model'] == 'seasonal_naive'].iloc[0] |
|
print('df: ',df) |
|
for column in df.columns: |
|
if column != 'model': |
|
df_normalized[column] = df[column] / seasonal_naive_row[column] |
|
return df_normalized |
|
|
|
def pivot_df(file_name, tab_name): |
|
df = pd.read_csv(file_name) |
|
if tab_name == 'univariate': |
|
df['univariate'] = df['univariate'].replace({True: 'univariate', False: 'multivariate'}) |
|
df.rename(columns={'univariate': 'variate_type'}, inplace=True) |
|
tab_name = 'variate_type' |
|
df_melted = pd.melt(df, id_vars=[tab_name, 'model'], var_name='metric', value_name='value') |
|
df_melted['metric'] = df_melted['metric'].replace({ |
|
'eval_metrics/MAPE[0.5]': 'MAPE', |
|
'eval_metrics/mean_weighted_sum_quantile_loss': 'CRPS' |
|
}) |
|
df_pivot = df_melted.pivot_table(index='model', columns=[tab_name, 'metric'], values='value') |
|
df_pivot.columns = [f'{tab_name} ({metric})' for tab_name, metric in df_pivot.columns] |
|
|
|
|
|
df_pivot = df_pivot.reset_index() |
|
return df_pivot |