用 Python 绘制企业年度财务可视化报告 —— 从 Excel 到 9 种图表全覆盖

用 Python 绘制企业年度财务可视化报告 ------ 从 Excel 到 9 种图表全覆盖

在企业经营分析中,光看一堆财务数字很难直观发现规律和问题。 如果能将这些数据转化为可视化图表,不仅更美观,还能帮助管理层快速做出决策。

今天,我就用 Python + Pandas + Matplotlib ,从一份 Excel 财务数据出发,生成一个包含 9 种图表 的年度财务可视化报告。


1. 数据准备

已经有一份 企业财务数据.xlsx,里面的 "财务数据" 工作表包含如下列:

  • 月份

  • 收入

  • 总成本

  • 利润

  • 销售数量

  • 可变成本

  • 固定成本

  • 利润率(%)

用 Pandas 读取文件并做基础检查:

复制代码
import pandas as pd

file_path = '企业财务数据.xlsx'
df = pd.read_excel(file_path, sheet_name='财务数据')

required_cols = ['月份', '收入', '总成本', '利润', '销售数量', '可变成本', '固定成本', '利润率(%)']
if not all(col in df.columns for col in required_cols):
    print("Excel 缺少必要列!")
    exit()

2. 图表总览

我一次性生成 3x3 布局的 9 个子图,涵盖柱形图、折线图、雷达图、气泡图等多种形式。

下面按顺序介绍每张图的用途和实现方法。


① 柱形图:每月利润

直观展示全年每个月的利润变化趋势。

复制代码
ax1.bar(df['月份'], df['利润'], color='skyblue', alpha=0.8)

② 对比柱形图:收入 vs 总成本

用并列柱形对比每个月的收入和总成本,方便查看盈亏情况。

复制代码
ax2.bar(x, df['收入'], width, label='收入')
ax2.bar(x + width, df['总成本'], width, label='总成本')

③ 分组柱形图:收入、可变成本、固定成本

进一步拆分成本构成,比较三项数据。

复制代码
ax3.bar(x - width, df['收入'], width, label='收入')
ax3.bar(x, df['可变成本'], width, label='可变成本')
ax3.bar(x + width, df['固定成本'], width, label='固定成本')

④ 堆积柱形图:总成本构成

用堆积方式将可变成本和固定成本叠加,直观看到成本比例。

复制代码
ax4.bar(df['月份'], df['可变成本'])
ax4.bar(df['月份'], df['固定成本'], bottom=df['可变成本'])

⑤ 分区折线图:利润与利润率

双 Y 轴折线图,一边显示利润走势,一边显示利润率。

复制代码
ax5.plot(df['月份'], df['利润'], marker='o')
ax6.plot(df['月份'], df['利润率(%)'], linestyle='--')

⑥ 雷达图:四个季度关键指标对比

将收入、总成本、利润、销量这四个指标按季度进行归一化对比。

复制代码
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
q_normalized = scaler.fit_transform(q_data)

⑦ 聚合气泡图:销量 vs 收入

气泡大小代表利润,颜色代表利润率,多维度综合展示业务情况。

复制代码
scatter = ax8.scatter(df['销售数量'], df['收入'],
                      s=df['利润']/100,
                      c=df['利润率(%)'], cmap='coolwarm')

⑧ 玫瑰图(南丁格尔图):各月利润分布

用极坐标形式绘制每个月利润的分布情况,视觉效果独特。

复制代码
ax9 = fig.add_subplot(3, 3, 8, projection='polar')
ax9.bar(angles, df['利润'], width=0.5)

⑨ 文本框总结

直接在图中用文本列出年度关键财务指标总结。

复制代码
summary_text = f"""
📊 年度财务总结
总收入: {df['收入'].sum():,} 元
总成本: {df['总成本'].sum():,} 元
总利润: {df['利润'].sum():,} 元
平均利润率: {df['利润率(%)'].mean():.2f}%
"""
ax10.text(0.5, 0.5, summary_text, ha='center', va='center')

3. 最终效果

运行脚本后,你将得到一张包含 9 种可视化图表 的财务报告:

  • 从整体到细节

  • 从单一维度到多维对比

  • 既有数据可读性,又有展示美感

这份图表不仅能用于内部财务分析 ,还可以直接嵌入到年终报告 PPT 里,省时省力。


4. 知识点总结

通过这次实战,你可以学到:

  • Pandas 用于读取和处理 Excel 数据

  • Matplotlib 绘制多种类型图表

  • MinMaxScaler 对不同指标进行归一化

  • 如何组合多图,生成一份完整的可视化分析报告