A7. 结果呈现与表格美化

代码跑通只是第一步——如何让结果好看、易读、可汇报,是分析工作中同样重要的一环。本章针对 Notebook 输出和最终报告两个场景,提供结果呈现的提示词框。

本章解决的核心问题:

A7.1 在 Notebook 中美化输出

A7.1.1 为什么默认输出不够用?

pandas 默认的 print(df) 输出在 Notebook 中又小又难读,数字没有千分位符,小数位数不统一,列名是英文缩写。向老师或同学展示分析结果时,这些细节很影响专业感。

提示词:美化数据框在 Notebook 中的显示效果
我在 Jupyter Notebook 中有一个 pandas 数据框 `df_result`
包含以下列:
- stock_code:股票代码(字符串)
- annual_return:年化收益率(浮点数,如 0.1523)
- volatility:年化波动率(浮点数,如 0.2341)
- sharpe:夏普比率(浮点数,如 1.23)
- max_drawdown:最大回撤(浮点数,如 -0.1823)
- total_volume:总成交量(整数,如 12345678901)

请帮我写代码,让这个数据框在 Notebook 中显示得更专业:

1. 将列名改为中文:
   [stock_code→股票代码, annual_return→年化收益率, 
    volatility→年化波动率, sharpe→夏普比率, 
    max_drawdown→最大回撤, total_volume→总成交量(万手)]

2. 格式化数值:
   - annual_return、volatility、max_drawdown 列:显示为百分比,
     保留 2 位小数(如 15.23%)
   - sharpe 列:保留 2 位小数(如 1.23)
   - total_volume 列:换算为万手(除以 10000),加千分位符(如 1,234,567)

3. 条件格式:
   - annual_return 列:正值显示绿色背景,负值显示红色背景
   - sharpe 列:大于 1 的值加粗显示

4. 在 Notebook 中用 display() 显示,而不是 print()

请说明:用 .style 方法格式化后,数据框的底层数值是否被修改?
提示词:提取并格式化回归结果摘要

statsmodels 的 result.summary() 输出很完整,但格式不适合直接展示。这组提示词帮你提取关键信息并重新排版。

我用 statsmodels 跑了一个 OLS 回归,结果存储在 `result` 对象中。
现在需要提取关键信息,整理为一个格式整洁的汇总表格。

请帮我写代码:

1. 【提取系数表】从 result.summary2().tables[1] 中提取:
   变量名、系数(保留 4 位小数)、标准误(保留 4 位小数)、
   t 值(保留 2 位小数)、p 值(保留 3 位小数)

2. 【添加显著性标注】根据 p 值添加星号列:
   *** p < 0.01,** p < 0.05,* p < 0.1,无星号则留空

3. 【添加模型统计量】在表格底部添加:
   样本量 N、R²(保留 3 位小数)、调整后 R²(保留 3 位小数)、
   F 统计量(保留 2 位小数)、p 值(F 统计量)

4. 【格式化输出】
   - 在 Notebook 中用 display() 显示
   - 变量名改为中文(截距→常数项,beta→市场β,size→公司规模等)
   - 整体左对齐,数字右对齐
上面整理好的回归结果表格,现在需要展示多个模型的对比。

我共有 3 个回归结果:
- result1:基准 OLS(不含固定效应)
- result2:加入年份固定效应
- result3:加入双向固定效应 + 聚类标准误

请帮我写代码,将三个模型的结果整合为一个「并列回归表格」:
- 行为变量名,列为「模型(1)」「模型(2)」「模型(3)」
- 每格显示:系数值(标准误),系数下方括号内为标准误,
  如:0.0312***(0.0098)
- 表格底部显示:N、R²、是否控制年份固定效应、是否控制企业固定效应
  (用「是」/「否」表示)

A7.2 导出为 Excel 报告

提示词:将分析结果导出为格式化 Excel 文件

适用于向老师、同学或未来的工作汇报提交分析结果。

我完成了一个投资组合分析,有多个结果需要整合为一份 Excel 报告:

数据:
- df_performance:各策略年化绩效指标(年化收益、夏普比率、最大回撤)
- df_holdings:投资组合持仓明细(股票代码、权重、市值)
- df_regression:回归系数表(变量名、系数、t 值、p 值、显著性)

请帮我用 openpyxl 生成 Excel 文件,要求:

工作表结构:
- Sheet 1「绩效摘要」:df_performance,列宽自动适配
- Sheet 2「持仓明细」:df_holdings,按权重降序排列
- Sheet 3「回归结果」:df_regression,含列标题

格式要求(每个工作表):
- 第一行(表头):深蓝色背景(#003366),白色字体,加粗,居中
- 数字格式:
  - 收益率、权重列:百分比格式,2 位小数(如 12.35%)
  - 系数、t 值列:保留 4 位小数
  - 市值列:千分位符,无小数(如 1,234,567)
- 奇偶行交替填色:奇数行白色,偶数行浅灰色(#F2F2F2)
- 所有工作表第一行冻结(方便滚动时始终看到表头)

文件:在「绩效摘要」工作表的 A1 单元格上方,
插入标题「投资组合分析报告」和当前日期。

保存路径:../outputs/tables/portfolio_report.xlsx

A7.3 导出为 LaTeX 格式

提示词:将回归结果导出为 LaTeX 表格

适用于需要将结果放入 LaTeX 论文的场景。

我有一个 pandas 数据框 `df_reg_table`
包含整理好的回归结果(变量名、系数、标准误、显著性标注)。

请帮我将这个数据框导出为 LaTeX 格式的三线表(booktabs 风格),要求:

表格格式:
- 使用 booktabs 宏包的 \toprule、\midrule、\bottomrule
- 第一列为变量名(左对齐),其余列为数值(居中对齐)
- 三列:变量、系数(t 值),显著性标注注释在表格底部
- 注释行:*p<0.10, **p<0.05, ***p<0.01

输出方式:
1. 在 Notebook 中打印 LaTeX 代码(用 print())
2. 同时保存为 .tex 文件:../outputs/tables/regression_table.tex

请在代码中说明:
- 如何在 LaTeX 文档中引用这个表格文件(\input{} 命令)
- 为什么用 escape=False 参数,以及什么时候不应该用它

A7.4 在 Notebook 中呈现分析摘要

提示词:生成一份完整的分析摘要单元格

这组提示词帮你在 Notebook 的最后生成一个结构清晰的分析摘要,适合直接截图或打印提交。

我的 Jupyter Notebook 分析了 A 股银行股在政策公告后的超额收益,
已经有以下变量:
- `event_n`:事件数量(整数)
- `car_mean`:平均 CAR(浮点数)
- `car_t`:t 统计量(浮点数)
- `car_pvalue`:p 值(浮点数)
- `df_car`:包含每天 CAR 和置信区间的数据框

请帮我写一段代码,在 Notebook 中用 IPython.display 的 Markdown 或 HTML
渲染一个格式整洁的分析摘要,包含:

1. 标题:「事件研究结果摘要」(加粗,字号 16)
2. 分析参数:事件数量、事件窗口(-10, +10)、估计窗口(-200, -21)
3. 核心结果表格:
   | 指标 | 数值 |
   事件日(Day 0)CAR | [car_mean 的格式化值,百分比]
   t 统计量 | [car_t,保留 2 位小数]
   p 值 | [car_pvalue,保留 3 位小数]
   统计显著性 | [根据 p 值自动显示:***/**/* 或「不显著」]
4. 结论:一句话自动生成(根据系数正负和显著性判断):
   如「结果表明,政策公告后银行股出现显著正向超额收益(CAR=X%,p<0.01)」