财务报表分析技能
概述
本技能面向企业财务报表(Excel格式)进行全方位专业分析,输出 Markdown 格式的财务分析报告。
报告覆盖五大维度,适用于财务尽调、年度复盘、经营体检等场景。
触发条件
用户上传含有财务数据的 Excel 文件,且请求进行以下任意类型的分析:
- 财务报表整体分析 / 财务健康诊断
- 资产、负债、利润、现金流增减变动分析
- 各项财务比率计算(盈利/偿债/营运/成长能力)
- 专家级财务分析总结与改进建议
工作流程
Phase 1:文件接收与预处理
- 确认用户已上传 Excel 文件(
.xlsx / .xls / .xlsm)。
- 如用户未上传,提示:
"请上传包含财务数据的 Excel 文件(通常应包含资产负债表、利润表、现金流量表等 Sheet)。"
- 确认文件路径后,进入分析阶段。
Phase 2:运行分析脚本
调用 scripts/analyze_financial_report.py 执行自动化分析:
python "scripts/analyze_financial_report.py" "<excel_file_path>"
脚本将:
- 自动检测并匹配 Excel 中的资产负债表、利润表、现金流量表 Sheet(支持中英文名称模糊匹配)
- 清洗数据,提取本期/上期两列数值
- 输出 Markdown 格式分析报告到同目录下,文件名:
{原文件名}_财务分析报告.md
环境依赖:脚本会自动检查并安装 pandas、openpyxl,无需手动安装。
Phase 3:报告内容说明
生成的报告包含五大部分:
一、报表项目增减变动分析
- 对资产负债表、利润表、现金流量表的每个科目
- 列出:本期金额 | 上期金额 | 变动金额(🔺/🔻标注)| 变动率
二、资产项目结构变动分析
- 以总资产为基准(100%)
- 计算各资产项目本期占比与上期占比
- 输出占比变动(单位:百分点 pp)
三、利润表项目结构变动分析
- 以营业收入为基准(100%)
- 计算各利润表科目本期占比与上期占比
- 输出占比变动
四、财务比率综合分析
| 类别 | 主要指标 |
|---|
| 盈利能力 | 毛利率、净利率、ROA、ROE、营业利润率 |
| 偿债能力 | 流动比率、速动比率、资产负债率、利息保障倍数、产权比率 |
| 营运能力 | 总资产周转率、应收账款周转率(天数)、存货周转率(天数)、流动资产周转率 |
| 成长能力 | 收入增长率、净利润增长率、总资产增长率、净资产增长率、营业利润增长率、经营现金流增长率 |
五、资深财务专家综合分析与建议
- 按盈利能力、偿债能力、成长能力逐项给出数值驱动的评价
- 标注核心优势(✅)与风险提示(⚠️/🔴)
- 提供 5 条改进建议
Phase 4:结果展示
- 使用
open_result_view 展示生成的 Markdown 报告。
- 使用
deliver_attachments 将报告文件交付给用户。
- 在回复中用简短语言概括分析亮点与主要发现。
注意事项
- Sheet 自动匹配:脚本支持中英文名称模糊匹配(资产负债表/Balance Sheet/资产 等)。
若某 Sheet 未能自动匹配,报告中会注明"数据不足",可提示用户检查 Sheet 名称。
- 数据格式要求:Excel 中第一列为科目名,第二列为本期数据,第三列为上期数据(常见格式)。
若格式不同(如多年横排),脚本会尝试自适应,但效果因文件而异。
- 多年期报表:若文件包含3年及以上数据,成长能力指标会更有参考意义;
当前脚本主要取前两列(本期/上期),如需多年趋势分析,可在报告中补充说明。
- 货币单位:脚本不处理单位换算,报告中数值与原始数据单位一致(元/万元/亿元均可)。
- 保密提示:处理完成后,如用户有数据安全顾虑,建议告知文件仅在本地处理,不上传到外部服务。
踩坑经验
- 资产/负债分Sheet格式:部分企业将资产负债表拆分为"资产"和"负债"两个Sheet(如本技能测试文件"深圳市羊城晚报文化发展有限公司"),脚本已支持自动检测并合并。
- 附注列干扰:标准报表第2列通常为附注编号(如"附注五"),为非数值列,脚本通过"至少15%行是纯数字"的列识别逻辑自动跳过。
- Sheet简称匹配:有些文件用"资产"、"负债"、"利润"、"现流"等简称命名Sheet,SHEET_ALIASES中已覆盖这些别名。
- clean_df中的join报错:pandas读取含NaN的行时,row.astype(str)可能报
expected str instance, float found,需改为 row.fillna("").astype(str) 才能正确join。
- lambda中float类型报错:对Series执行apply时,若列中含有float类型值,需在lambda内部调用
str(v) 转换后再执行正则匹配。
错误处理
| 场景 | 处理方式 |
|---|
| 文件未上传 | 提示上传文件 |
| 文件格式不是Excel | 提示仅支持 .xlsx/.xls/.xlsm |
| Sheet 未匹配到 | 在报告中标注,提示检查Sheet名称 |
| 数据列不足(<3列) | 跳过该分析模块,输出提示 |
| 脚本运行报错 | 告知错误信息,建议检查文件格式 |