Streamlit行业财务数据可视化分析应用
一、项目概述
这是一个基于Streamlit构建的交互式行业财务数据分析仪表板,用于可视化分析申万行业分类下各公司的营业收入和营业利润情况。
二、技术栈
-
前端框架:Streamlit
-
数据处理:Pandas, NumPy
-
数据可视化:Matplotlib, Seaborn
-
数据格式:Excel (.xlsx)
三、适用领域
-
应用场景
-
行业研究:分析师快速了解行业趋势
-
投资决策:投资者识别高增长行业
-
学术研究:研究人员获取行业数据洞察
四、数据集准备












五、模块逻辑
5.1 页面配置
-
page_title: 设置页面标题为"行业应收&利润可视化分析",明确告知用户应用的主题和功能 -
layout='wide': 使用宽屏布局,更适合展示数据表格和图表,充分利用屏幕空间

5.2 程序运行框架
├── st.set_page_config() # 页面初始化
├── load_data() 定义 # 函数定义(不执行)
├── 侧边栏渲染 # 创建用户输入控件
└── 条件执行块 (if level and cla:)
├── load_data() 调用 # 实际加载数据
│ ├── pd.read_excel() # 读取行业数据
│ ├── for循环读取年度数据 # 读取2018-2024数据
│ ├── pd.concat() # 合并年度数据
│ └── pd.merge() # 合并行业与财务数据
├── 数据聚合处理
│ ├── groupby().agg() # 按行业和年度聚合
│ ├── pct_change() # 计算同比增长
│ └── sort_values() # 数据排序
├── 显示数据表格
│ └── st.dataframe() # 渲染交互式表格
└── 生成可视化图表
├── plt.subplots() # 创建图表框架
├── for循环绘制6个子图 # 每年一个图表
│ ├── nlargest() # 筛选Top8行业
│ ├── sns.barplot() # 绘制柱状图
│ └── 设置图表属性 # 标题、标签等
└── st.pyplot() # 渲染图表到页面
5.3 侧边栏设计
-
使用
with语句创建容器作用域 -
所有在
with块内的组件自动布局到侧边栏

六、模块分析
6.1 行业营业收入可视化分析
-
股票代码标准化:复杂的正则表达式处理
-
年度标记:每个数据框添加
df['年度'] = year列 -
批量年度数据:2018-2024连续7年数据循环加载
-
多文件合并:使用列表+循环+concat模式

6.2 近六年来 营业收入 增长率最大的八个行业数据可视化
-
Top8筛选逻辑:
nlargest(8, cla + '增长率')获取前8 -
排序展示:
sort_values(..., ascending=False)降序排列 -
扁平化处理:
axes.flatten()简化循环访问

七、界面介绍

1. 界面概述
这是一个Streamlit构建的行业财务分析仪表板,特点包括:侧边栏双选择控件驱动交互,加载申万行业与多年财务Excel数据,自动标准化股票代码并计算同比增长率。界面展示近六年数据表格和增长率Top8可视化子图,采用Seaborn绘制排序柱状图。设计简洁,响应迅速,适合行业趋势分析和投资决策支持。
2. 信息设计特点
-
横向比较:不同行业间对比
-
纵向趋势:同一行业年度变化
-
增长率分析:增长动力识别
-
上市公司数量:反映行业代表性
-
增长率正负:判断行业景气度
-
趋势连续性:识别稳定增长行业
八、设计总结
本项目基于Streamlit构建了一个交互式行业财务分析仪表板,通过整合申万行业分类与多年度财务数据(2018-2024),实现了对行业营业收入和营业利润的动态可视化。核心功能包括:
-
交互式筛选:侧边栏支持用户选择行业层级(一/二/三级)和分析指标;
-
数据聚合与计算:自动按行业和年度聚合数据,并计算同比增长率;
-
多维展示:以表格呈现行业概况,并绘制近六年增长率Top8的条形图矩阵;
-
性能优化:采用延迟加载和缓存机制提升响应速度。
心得:
-
模块化设计提升可维护性:将数据加载、处理、可视化分离,便于后续扩展;
-
交互体验关键:通过Streamlit组件实现低代码交互,降低用户使用门槛;
-
可视化需兼顾信息密度与清晰度:采用多子图并列展示时序趋势,避免单图过载;
-
数据质量是基石:合并过程需规范代码格式与缺失值处理,确保分析准确性。
未来可扩展异常值预警、行业对比等功能,进一步深化分析维度。
更多推荐



所有评论(0)