|
@@ -25,6 +25,7 @@ def put_analysis_report_to_html(args, df_clean, df_predict, df_accuracy):
|
|
label = args['label']
|
|
label = args['label']
|
|
label_pre = args['label_pre']
|
|
label_pre = args['label_pre']
|
|
farmId = args['farmId']
|
|
farmId = args['farmId']
|
|
|
|
+ acc_flag = df_accuracy.shape[0]
|
|
df_clean = df_clean.applymap(
|
|
df_clean = df_clean.applymap(
|
|
lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
numbers.Number) else x).sort_values(
|
|
numbers.Number) else x).sort_values(
|
|
@@ -33,7 +34,8 @@ def put_analysis_report_to_html(args, df_clean, df_predict, df_accuracy):
|
|
lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
numbers.Number) else x).sort_values(
|
|
numbers.Number) else x).sort_values(
|
|
by=col_time)
|
|
by=col_time)
|
|
- df_accuracy = df_accuracy.applymap(
|
|
|
|
|
|
+ if acc_flag>0:
|
|
|
|
+ df_accuracy = df_accuracy.applymap(
|
|
lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
numbers.Number) else x).sort_values(
|
|
numbers.Number) else x).sort_values(
|
|
by=col_time)
|
|
by=col_time)
|
|
@@ -83,7 +85,7 @@ def put_analysis_report_to_html(args, df_clean, df_predict, df_accuracy):
|
|
font=dict(size=12) # 图例文字大小
|
|
font=dict(size=12) # 图例文字大小
|
|
),
|
|
),
|
|
title=dict(
|
|
title=dict(
|
|
- text='实际功率与辐照度的散点图', # 图表标题
|
|
|
|
|
|
+ # text='实际功率与辐照度的散点图', # 图表标题
|
|
x=0.5, # 标题居中
|
|
x=0.5, # 标题居中
|
|
font=dict(size=16) # 标题字体大小
|
|
font=dict(size=16) # 标题字体大小
|
|
),
|
|
),
|
|
@@ -282,40 +284,44 @@ def put_analysis_report_to_html(args, df_clean, df_predict, df_accuracy):
|
|
power_html = pio.to_html(fig, full_html=False)
|
|
power_html = pio.to_html(fig, full_html=False)
|
|
|
|
|
|
# -------------------- 准确率表展示--------------------
|
|
# -------------------- 准确率表展示--------------------
|
|
- acc_html = df_accuracy.sort_values(by=col_time).to_html(classes='table table-bordered table-striped', index=False)
|
|
|
|
|
|
+ acc_html=''
|
|
|
|
+ if acc_flag>0:
|
|
|
|
+ acc_html = df_accuracy.sort_values(by=col_time).to_html(classes='table table-bordered table-striped', index=False)
|
|
# -------------------- 准确率汇总展示--------------------
|
|
# -------------------- 准确率汇总展示--------------------
|
|
- # 指定需要转换的列
|
|
|
|
- cols_to_convert = ['MAE', 'accuracy', 'RMSE', 'deviationElectricity', 'deviationAssessment']
|
|
|
|
- for col in cols_to_convert:
|
|
|
|
- if col in df_accuracy.columns:
|
|
|
|
- df_accuracy[col] = df_accuracy[col].apply(
|
|
|
|
- lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
|
|
- numbers.Number) else np.nan)
|
|
|
|
|
|
+ summary_html = ''
|
|
|
|
+ if acc_flag>0:
|
|
|
|
+ # 指定需要转换的列
|
|
|
|
+ cols_to_convert = ['MAE', 'accuracy', 'RMSE', 'deviationElectricity', 'deviationAssessment']
|
|
|
|
+ for col in cols_to_convert:
|
|
|
|
+ if col in df_accuracy.columns:
|
|
|
|
+ df_accuracy[col] = df_accuracy[col].apply(
|
|
|
|
+ lambda x: float(x.to_decimal()) if isinstance(x, Decimal128) else float(x) if isinstance(x,
|
|
|
|
+ numbers.Number) else np.nan)
|
|
|
|
|
|
- # 确定存在的列
|
|
|
|
- agg_dict = {}
|
|
|
|
- rename_cols = ['model']
|
|
|
|
- if 'MAE' in df_accuracy.columns:
|
|
|
|
- agg_dict['MAE'] = np.nanmean
|
|
|
|
- rename_cols.append('MAE平均值')
|
|
|
|
- if 'accuracy' in df_accuracy.columns:
|
|
|
|
- agg_dict['accuracy'] = np.nanmean
|
|
|
|
- rename_cols.append('准确率平均值')
|
|
|
|
- if 'RMSE' in df_accuracy.columns:
|
|
|
|
- agg_dict['RMSE'] = np.nanmean
|
|
|
|
- rename_cols.append('RMSE平均值')
|
|
|
|
- if 'deviationElectricity' in df_accuracy.columns:
|
|
|
|
- agg_dict['deviationElectricity'] = [np.nanmean, np.nansum]
|
|
|
|
- rename_cols.append('考核电量平均值')
|
|
|
|
- rename_cols.append('考核总电量')
|
|
|
|
- if 'deviationAssessment' in df_accuracy.columns:
|
|
|
|
- agg_dict['deviationAssessment'] = [np.nanmean, np.nansum]
|
|
|
|
- rename_cols.append('考核分数平均值')
|
|
|
|
- rename_cols.append('考核总分数')
|
|
|
|
- # 进行分组聚合,如果有需要聚合的列
|
|
|
|
- summary_df = df_accuracy.groupby('model').agg(agg_dict).reset_index()
|
|
|
|
- summary_df.columns = rename_cols
|
|
|
|
- summary_html = summary_df.to_html(classes='table table-bordered table-striped', index=False)
|
|
|
|
|
|
+ # 确定存在的列
|
|
|
|
+ agg_dict = {}
|
|
|
|
+ rename_cols = ['model']
|
|
|
|
+ if 'MAE' in df_accuracy.columns:
|
|
|
|
+ agg_dict['MAE'] = np.nanmean
|
|
|
|
+ rename_cols.append('MAE平均值')
|
|
|
|
+ if 'accuracy' in df_accuracy.columns:
|
|
|
|
+ agg_dict['accuracy'] = np.nanmean
|
|
|
|
+ rename_cols.append('准确率平均值')
|
|
|
|
+ if 'RMSE' in df_accuracy.columns:
|
|
|
|
+ agg_dict['RMSE'] = np.nanmean
|
|
|
|
+ rename_cols.append('RMSE平均值')
|
|
|
|
+ if 'deviationElectricity' in df_accuracy.columns:
|
|
|
|
+ agg_dict['deviationElectricity'] = [np.nanmean, np.nansum]
|
|
|
|
+ rename_cols.append('考核电量平均值')
|
|
|
|
+ rename_cols.append('考核总电量')
|
|
|
|
+ if 'deviationAssessment' in df_accuracy.columns:
|
|
|
|
+ agg_dict['deviationAssessment'] = [np.nanmean, np.nansum]
|
|
|
|
+ rename_cols.append('考核分数平均值')
|
|
|
|
+ rename_cols.append('考核总分数')
|
|
|
|
+ # 进行分组聚合,如果有需要聚合的列
|
|
|
|
+ summary_df = df_accuracy.groupby('model').agg(agg_dict).reset_index()
|
|
|
|
+ summary_df.columns = rename_cols
|
|
|
|
+ summary_html = summary_df.to_html(classes='table table-bordered table-striped', index=False)
|
|
# -------------------- 生成完整 HTML 页面 --------------------
|
|
# -------------------- 生成完整 HTML 页面 --------------------
|
|
|
|
|
|
html_content = f"""
|
|
html_content = f"""
|