# 根据前一案例中输出的分析数据和编码格式,分别读取描述性统计和相关性分析数据data_cb_describe = pd.read_csv( os.path.join(PATH_DATA, "data_cb_describe.csv"), encoding="GB18030", index_col=[0])
data_cb_corr = pd.read_csv( os.path.join(PATH_DATA, "data_cb_corr.csv"), encoding="GB18030", index_col=[0])
# 利用 DocxTemplate 导入编辑完成的Word模板report_tpl = DocxTemplate( template_file = os.path.join(PATH_REPORT, "模板-沪深交易所现券交易月报分析示例.docx"))
# 利用字典编辑需要渲染到Word模板中的内容context = { # 分析报告日期,渲染为富文本,设置字体颜色为红色 'analysis_date': RichText( text = datetime.date.today().strftime("%Y-%m-%d"), color = "FF6666", ), # 分析报告描述内容,渲染为基础文本 "summary": "模板式自动化Word报告示例", # 描述性统计表格,分别对表头和表数据赋值 # 表数据的格式调整可结合 pandas.DataFrame.agg 和 lambda函数 实现 # 此处 count 数据不保留小数,其他数据保留2位小数 'des_table_cols': data_cb_describe.columns.to_list(), 'des_table_contents': data_cb_describe.agg( lambda x: {'label': x.name, 'cols': [f"{d:.0f}" if x.name == "count" else f"{d:.2f}" for d in x]}, axis=1 ).to_list(), # 相关性分析表格,分别对表头和表数据赋值 # 表数据的格式调整可结合 pandas.DataFrame.agg 和 lambda函数 实现 # 此处数据均保留2位小数 'corr_table_cols': data_cb_corr.columns.to_list(), 'corr_table_contents': data_cb_corr.agg( lambda x: {'label': x.name, 'cols': [f"{d:.2f}" for d in x]}, axis=1 ).to_list(), # 成交金额历史变化情况(折线图),渲染为图片 'fig_line': InlineImage( tpl = report_tpl, image_descriptor = os.path.join(PATH_PLOT, "折线图.png"), width = Mm(150), ), # 成交金额分布特征(箱型图),渲染为图片 'fig_box': InlineImage( tpl = report_tpl, image_descriptor = os.path.join(PATH_PLOT, "箱型图.png"), width = Mm(150) ), # 近期成交金额对比(柱状图),渲染为图片 'fig_bar': InlineImage( tpl = report_tpl, image_descriptor = os.path.join(PATH_PLOT, "柱状图.png"), width = Mm(150) ), # 成交金额相关性矩阵(散点图),渲染为图片 'fig_scatter': InlineImage( tpl = report_tpl,
image_descriptor = os.path.join(PATH_PLOT, "散点图.png"), width = Mm(150) ),}
# 利用 DocxTemplate.render 渲染模板内容# 利用 DocxTemplate.save 保存渲染后的Word文档report_tpl.render(context = context)report_tpl.save(os.path.join(PATH_REPORT, "沪深交易所现券交易月报分析示例.docx"))