Refine prediction workbook summary note
This commit is contained in:
+21
-3
@@ -56,9 +56,13 @@ FEATURES = [
|
|||||||
|
|
||||||
ID_COLUMN = "管道编号"
|
ID_COLUMN = "管道编号"
|
||||||
PIPE_AGE_COLUMN = "管龄(年)"
|
PIPE_AGE_COLUMN = "管龄(年)"
|
||||||
REMAINING_LIFE_COLUMN = (
|
REMAINING_LIFE_COLUMN = "剩余寿命(年)"
|
||||||
"预计剩余寿命(年)(管道健康状态 ≥0.5 的剩余年数;"
|
REMAINING_LIFE_NOTE = (
|
||||||
"如管道健康状态在73年内均高于0.5,则为73减去当前管龄)"
|
"注:\n"
|
||||||
|
"剩余寿命计算方法为:\n"
|
||||||
|
"1)管道健康状态 ≥0.5 的剩余年数;\n"
|
||||||
|
"2)如管道健康状态在73年内均高于0.5(目前收集到模型数据管龄最大为73年),"
|
||||||
|
"那么管道剩余寿命为73减去当前管龄。"
|
||||||
)
|
)
|
||||||
LEGACY_PIPE_AGE_COLUMN = "管龄"
|
LEGACY_PIPE_AGE_COLUMN = "管龄"
|
||||||
COLUMN_ALIASES = {
|
COLUMN_ALIASES = {
|
||||||
@@ -549,6 +553,8 @@ def write_prediction_workbook(
|
|||||||
]
|
]
|
||||||
|
|
||||||
with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
|
with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
|
||||||
|
from openpyxl.styles import Alignment
|
||||||
|
|
||||||
summary_df = pd.DataFrame(
|
summary_df = pd.DataFrame(
|
||||||
summary_sheet_rows,
|
summary_sheet_rows,
|
||||||
columns=[ID_COLUMN, PIPE_AGE_COLUMN, "当前健康状态", "健康等级", REMAINING_LIFE_COLUMN],
|
columns=[ID_COLUMN, PIPE_AGE_COLUMN, "当前健康状态", "健康等级", REMAINING_LIFE_COLUMN],
|
||||||
@@ -564,6 +570,18 @@ def write_prediction_workbook(
|
|||||||
summary_worksheet = writer.book["结果摘要"]
|
summary_worksheet = writer.book["结果摘要"]
|
||||||
for cell in summary_worksheet["C"][1:]:
|
for cell in summary_worksheet["C"][1:]:
|
||||||
cell.number_format = "0.00"
|
cell.number_format = "0.00"
|
||||||
|
note_row = summary_worksheet.max_row + 2
|
||||||
|
summary_worksheet.merge_cells(
|
||||||
|
start_row=note_row,
|
||||||
|
start_column=1,
|
||||||
|
end_row=note_row + 3,
|
||||||
|
end_column=5,
|
||||||
|
)
|
||||||
|
note_cell = summary_worksheet.cell(note_row, 1)
|
||||||
|
note_cell.value = REMAINING_LIFE_NOTE
|
||||||
|
note_cell.alignment = Alignment(wrap_text=True, vertical="top")
|
||||||
|
for row_index in range(note_row, note_row + 4):
|
||||||
|
summary_worksheet.row_dimensions[row_index].height = 28
|
||||||
sample_worksheet.freeze_panes = "A2"
|
sample_worksheet.freeze_panes = "A2"
|
||||||
sample_worksheet.auto_filter.ref = sample_worksheet.dimensions
|
sample_worksheet.auto_filter.ref = sample_worksheet.dimensions
|
||||||
sample_worksheet.column_dimensions["A"].width = 12
|
sample_worksheet.column_dimensions["A"].width = 12
|
||||||
|
|||||||
@@ -212,8 +212,9 @@ class PredictionHelpersTest(unittest.TestCase):
|
|||||||
summary_data.columns.tolist(),
|
summary_data.columns.tolist(),
|
||||||
[ID_COLUMN, PIPE_AGE_COLUMN, "当前健康状态", "健康等级", REMAINING_LIFE_COLUMN],
|
[ID_COLUMN, PIPE_AGE_COLUMN, "当前健康状态", "健康等级", REMAINING_LIFE_COLUMN],
|
||||||
)
|
)
|
||||||
self.assertEqual(summary_data[PIPE_AGE_COLUMN].tolist(), [10, 12])
|
summary_records = summary_data[summary_data[PIPE_AGE_COLUMN].notna()]
|
||||||
self.assertEqual(summary_data[REMAINING_LIFE_COLUMN].tolist(), [63, 61])
|
self.assertEqual(summary_records[PIPE_AGE_COLUMN].tolist(), [10, 12])
|
||||||
|
self.assertEqual(summary_records[REMAINING_LIFE_COLUMN].tolist(), [63, 61])
|
||||||
|
|
||||||
sample_data = pd.read_excel(output_path, sheet_name="样本数据")
|
sample_data = pd.read_excel(output_path, sheet_name="样本数据")
|
||||||
self.assertEqual(sample_data.columns.tolist(), ["管龄(年)", "P001", "P002"])
|
self.assertEqual(sample_data.columns.tolist(), ["管龄(年)", "P001", "P002"])
|
||||||
@@ -229,8 +230,10 @@ class PredictionHelpersTest(unittest.TestCase):
|
|||||||
self.assertEqual(sample_worksheet.auto_filter.ref, "A1:C3")
|
self.assertEqual(sample_worksheet.auto_filter.ref, "A1:C3")
|
||||||
self.assertEqual(summary_worksheet["C2"].number_format, "0.00")
|
self.assertEqual(summary_worksheet["C2"].number_format, "0.00")
|
||||||
self.assertEqual(sample_worksheet["B2"].number_format, "0.00")
|
self.assertEqual(sample_worksheet["B2"].number_format, "0.00")
|
||||||
self.assertIn("73减去当前管龄", summary_worksheet["E1"].value)
|
self.assertEqual(summary_worksheet["E1"].value, "剩余寿命(年)")
|
||||||
self.assertNotIn("73 - 当前管龄", summary_worksheet["E1"].value)
|
self.assertIn("A5:E8", [str(range_) for range_ in summary_worksheet.merged_cells.ranges])
|
||||||
|
self.assertIn("73减去当前管龄", summary_worksheet["A5"].value)
|
||||||
|
self.assertIn("目前收集到模型数据管龄最大为73年", summary_worksheet["A5"].value)
|
||||||
|
|
||||||
def test_prediction_workbook_writes_pipe_ids_as_excel_text(self) -> None:
|
def test_prediction_workbook_writes_pipe_ids_as_excel_text(self) -> None:
|
||||||
predictions = [dummy_prediction("00123", [1], [0.9], 10, 0.9)]
|
predictions = [dummy_prediction("00123", [1], [0.9], 10, 0.9)]
|
||||||
|
|||||||
Reference in New Issue
Block a user