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': # We skip normalizing the 'model' column 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.to_csv('pivoted_df.csv') # print(df_pivot) df_pivot = df_pivot.reset_index() return df_pivot