《实战教程:用Streamlit构建金融数据挖掘可视化分析系统》
一、实践概述
这篇Python代码构建了一个基于Streamlit的交互式金融数据分析平台。系统从Excel文件加载行业数据,生成沪深300和主要指数的模拟行情,提供2023-2025年的时序分析。核心功能包括市场总览、行业深度分析、技术指标计算和机器学习模型预测。用户可通过侧边栏选择行业,在四个标签页中查看指数走势、公司信息、交易数据和财务分析。系统集成了Plotly图表、Pandas数据处理和随机数据生成,实现了从数据加载到可视化呈现的全流程金融数据挖掘应用。
二、技术栈
-
前端框架:Streamlit(轻量级Web应用框架)
-
数据可视化:Plotly(交互式图表库)
-
数据处理:Pandas + NumPy(数据科学核心库)
-
机器学习:Scikit-learn(模型构建与预测)
-
部署方案:本地运行/云服务器部署
三、适用领域
适用于金融教学、投资分析、量化研究和企业决策支持等场景,实现专业金融工具的大众化应用。
四、数据准备



部分数据展示
五、模块逻辑
5.1 主内容模块

5.2 主页面结构
侧边栏 (30%)
├── 学生信息
├── 行业选择下拉框
├── 使用说明(折叠面板)
└── 系统信息
主内容区 (70%)
├── 市场总览模块
└── 行业分析模块
5.3 数据加载模块
-
读取Excel文件
最新个股申万行业分类(完整版-截至7月末).xlsx -
提取一级行业列表,默认包含"市场总览"
-
异常处理:文件读取失败时返回默认行业列表

5.4 侧边栏模块
-
用户引导明确
提供了“快速开始”和“功能模块详解”两部分,帮助用户快速了解系统功能和使用步骤。 -
内容分类清晰
将系统功能分为三大模块:-
市场总览模块
-
行业分析模块
-
趋势分析模块
每个模块下都有具体功能介绍,便于用户按需使用。
-
-
参数设置指导
在“参数设置指南”中,针对不同分析场景提供了参数建议,帮助用户合理配置系统。


六、模块分析
6.1 市场总览模块
- 创建折线图的可视化函数
-
功能明确:专门用于绘制折线图,展示时间序列数据(如股价、指数等)。
-
输入清晰:接受
data(数据)、title(图表标题)、color(折线颜色)三个参数。

-
模拟数据生成:用于生成龙虎榜数据。
-
数据结构化:生成的数据以字典形式存储,便于后续转换为 DataFrame 或插入数据库。
-
多维度数据生成:生成涨幅、买入卖出金额、净买入、上榜日期等多个字段。

-
下跌股票数据:生成跌幅较大的股票龙虎榜数据
-
对称设计:与上涨股票代码形成对称结构,便于对比分析
-
风险数据生成:市场中大跌股票的交易情况

-
交互式日期选择:允许用户选择开始和结束日期
-
时间范围限制:限制选择范围为2023-2025年
-
默认值设置:提供合理的默认起止日期

-
实时指标展示:显示最新交易日的关键指标
-
涨跌幅计算:计算最新收盘价相比前一日的涨跌幅
-
振幅计算:计算当日价格波动幅度

6.2 选择行业模块
-
时间序列生成:生成指定时间范围内的股票价格序列
-
随机漫步模型:使用几何布朗运动模型展示价格变化
-
工作日频率:只生成交易日数据,符合金融市场特征
-
日期生成:使用
pd.date_range生成工作日序列 -
收益率生成:使用正态分布生成日收益率
-
价格累积计算:通过复利计算方式生成价格序列

-
主图表绘制:绘制股票收盘价折线图
-
技术指标叠加:计算并添加5日移动平均线(MA5)
-
交互式提示:自定义悬停提示信息,增强用户体验

-
行业指数可视化:展示特定行业指数的趋势变化

- 行业数据聚合:对行业内的公司数据进行统计分析
-
多维度指标计算:涵盖规模、估值、财务等多个维度
-
基础统计运算:使用均值、总和等基础统计量

-
批量股票数据处理:为多只股票生成价格序列并存储
-
价格数据生成:调用外部函数生成模拟股票价格
-
累计回报计算:计算期间收益率
-
多股票对比可视化:在同一图表中绘制多只股票走势

七、界面展示
主界面
-
模块 内容 功能定位 时间选择器 开始/结束日期选择 数据范围控制 时间跨度显示 已选择时间范围 确认用户选择 主要指数行情 上证、深证、沪深300 市场概览监控 行业统计分析 行业指标 板块分析 价格走势图 多指数对比图表 趋势可视化

部分行业界面展示
| 模块区域 | 包含内容 | 分析维度 |
|---|---|---|
| 行业概览 | 公司数、平均市值、PE、PB | 行业规模与估值 |
| 指数分析 | 走势图、技术指标、波动率 | 行业整体趋势 |
| 个股对比 | 前6只股票走势、最新表现 | 行业内部分化 |
| 数据详情 | 区间最高/最低、波动率 | 风险与波动特征 |


建筑装饰行业分析(主标题)
├── 行业概览(卡片)
│ ├── 公司数量:153家
│ └── 平均市值:279.0亿
├── 指数分析区
│ ├── 时间选择器(60天/2024年)
│ ├── 指数走势图(含技术指标)
│ ├── 关键统计数据
│ └── 估值指标(PE/PB)
├── 个股分析区
│ ├── 时间选择器(45天/2024年)
│ ├── 个股对比走势图
│ └── 个股表现表格
└── 数据来源声明

八、设计总结
本项目设计并实现了一个基于Streamlit的金融数据挖掘实训平台,涵盖2023-2025年完整金融数据分析功能。系统通过模块化架构提供市场总览、行业分析、趋势预测等核心功能。关键技术实现包括:使用Plotly构建交互式可视化图表,生成2023-2025年沪深300及行业指数数据,开发基于财务指标的机器学习模型分析模块,设计可配置的参数化分析流程。系统特色在于实现了完整的金融数据分析闭环,从数据加载、指标计算到模型预测和策略回测,提供了专业级的金融数据挖掘实训环境。界面采用响应式设计,支持多标签页展示和实时交互,满足教学和实训需求。
设计心得
-
架构设计方面:采用模块化设计使系统具有良好的可扩展性,市场总览、行业分析等模块相互独立又数据互通,便于功能迭代。
-
数据处理方面:实现了2023-2025年连续时间跨度的数据生成,通过随机游走模型和行业特性参数设计,使数据更贴近真实市场特征。
-
用户体验方面:通过精心设计的CSS美化界面,使用metric卡片、分类标签页、交互式图表等元素,提升了系统的专业性和易用性。
-
教学价值方面:系统完整覆盖了金融数据分析全流程,从基础指标计算到复杂模型构建,适合不同层次的学习者使用,具有较强的实践教学价值。
-
技术实现方面:深度融合了Streamlit的快速开发优势与Plotly的强大可视化能力,在保证功能完整性的同时实现了代码的简洁高效。
-
可改进方向:未来可接入实时金融数据API,增加更多机器学习模型,并优化移动端适配,进一步提升系统的实用性和覆盖面。
注:本实验部分来源于AI协助优化以及查询
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)