学习内容:
👉课程主题:《项目实战:交互式BI报表》
《项目实战:交互式BI报表》
✅ ChatBI
- ChatBI的原理
- 数据采集
- 可视化组件
- 查询历史价格
- 对比分析
- 热点新闻
✅ 智能分析 - 趋势预测:ARIMA模型(未来N天价格预测)
- 异常检测:布林带分析(超买/超卖点识别)
- 周期性分析:Prophet模型(趋势分解)
- 知识库管理:撰写few shot示例
学习产出:
ChatBI项目技术分析
项目概述
该项目是一个基于自然语言处理和数据分析技术的交互式BI报表系统,专门针对股票数据分析设计。它允许用户通过自然语言查询股票历史数据,并自动生成相应的SQL查询、执行查询、以及可视化结果。
核心功能模块
1. 数据获取模块 (stock_data.py)
该模块负责从TuShare金融数据接口获取股票历史数据:
- 使用TuShare API获取指定股票的历史价格数据
- 支持多种股票代码(贵州茅台、五粮液、国泰君安、中芯国际)
- 数据字段包括:股票名称、股票代码、交易日期、开盘价、最高价、最低价、收盘价、成交量、成交额
- 将获取的数据保存为Excel文件(stock_history_data.xlsx)和SQL建表语句(stock_history_data.sql)
2. 核心助手模块
项目包含多个版本的股票查询助手,逐步增加功能:
基础版本 (stock_query_assistant.py)
- 实现基本的SQL查询功能
- 提供Web界面和命令行界面两种交互方式
- 支持数据可视化,自动生成图表
增强版本 (stock_query_assistant-2.py)
- 在基础版本上增加了可视化控制参数
- 改进了图表生成算法,支持智能选择图表类型
- 引入MCP服务器配置,支持外部工具集成
预测分析版本 (stock_query_assistant-3.py)
- 新增ARIMA时间序列预测功能
- 可以预测指定股票未来n天的收盘价
- 提供图表展示历史数据和预测结果
异常检测版本 (stock_query_assistant-4.py)
- 新增布林带异常点检测功能
- 可识别股票的超买和超卖情况
- 提供可视化图表展示布林带和异常点
周期分析版本 (stock_query_assistant-5.py)
- 新增Facebook Prophet周期性分析功能
- 可分析股票的趋势、周周期性和年周期性
- 提供完整的周期成分分解图表
3. 工具类实现
ExcSQLTool (exc_sql工具)
- 注册为
exc_sql工具,用于执行SQL查询 - 连接到MySQL数据库获取股票数据
- 自动生成数据摘要和可视化图表
- 支持控制是否需要可视化输出
ArimaStockTool (arima_stock工具)
- 注册为
arima_stock工具,用于时间序列预测 - 使用ARIMA(5,1,5)模型进行建模
- 预测未来指定天数的股票收盘价
- 提供预测结果表格和图表
BollDetectionTool (boll_detection工具)
- 注册为
boll_detection工具,用于布林带分析 - 计算20日移动平均线和标准差
- 识别超买(价格高于上轨)和超卖(价格低于下轨)情况
- 提供详细的异常点列表和可视化图表
ProphetAnalysisTool (prophet_analysis工具)
- 注册为
prophet_analysis工具,用于周期性分析 - 使用Facebook Prophet进行时间序列分解
- 分析趋势、周周期性和年周期性成分
- 提供成分分解图表
4. 可视化模块
项目实现了多种数据可视化功能:
- 智能图表选择:根据数据特点自动选择合适的图表类型
- 柱状图和折线图:适用于一般数据展示
- 时间序列图:适用于股价走势图展示
- 布林带图:用于异常点检测结果展示
- 成分分解图:用于周期性分析结果展示
5. 用户界面
项目提供两种用户交互方式:
Web界面
- 基于qwen_agent.gui.WebUI构建
- 提供友好的图形用户界面
- 包含示例查询引导用户使用
- 支持实时交互和结果展示
命令行界面
- 提供文本交互方式
- 适合开发者调试和自动化脚本使用
技术架构
主要依赖库
qwen-agent: 阿里通义千问智能体框架dashscope: 阿里云模型服务调用pandas: 数据处理和分析sqlalchemy: 数据库连接和操作matplotlib: 数据可视化tushare: 金融数据接口statsmodels: 统计模型(ARIMA)prophet: 时间序列分析(Facebook Prophet)
数据库设计
CREATETABLEstock_price(idINTAUTO_INCREMENTPRIMARYKEYCOMMENT'自增主键',stock_nameVARCHAR(20)NOTNULLCOMMENT'股票名称',ts_codeVARCHAR(20)NOTNULLCOMMENT'股票代码',trade_dateVARCHAR(10)NOTNULLCOMMENT'交易日期',openDECIMAL(15,2)COMMENT'开盘价',highDECIMAL(15,2)COMMENT'最高价',lowDECIMAL(15,2)COMMENT'最低价',closeDECIMAL(15,2)COMMENT'收盘价',volDECIMAL(20,2)COMMENT'成交量',amountDECIMAL(20,2)COMMENT'成交额',UNIQUEKEYuniq_stock_date(ts_code,trade_date));系统流程
- 用户通过自然语言提出查询请求
- 助手解析用户意图,生成相应的SQL语句或调用相应工具
- 执行SQL查询或调用分析工具进行数据处理
- 将结果以表格和图表形式展示给用户
特色功能
自然语言交互
- 用户可以使用自然语言查询复杂的股票数据
- 系统能够理解用户的查询意图并转化为具体操作
多维度分析
- 历史数据查询
- 时间序列预测
- 异常点检测
- 周期性分析
智能可视化
- 根据数据特征自动选择合适的图表类型
- 提供丰富的图表展示方式
- 支持多种分析结果的可视化呈现
可扩展架构
- 基于工具注册机制,易于添加新功能
- 支持MCP协议,可集成外部工具
- 模块化设计,便于维护和升级
应用价值
这个ChatBI项目展示了如何将大型语言模型与数据分析技术结合,构建一个智能化的商业智能系统。它可以帮助金融分析师、投资者和研究人员:
- 快速获取和分析股票数据
- 进行价格趋势预测
- 识别异常交易信号
- 发现数据中的周期性规律
- 通过自然语言交互降低数据分析门槛
整个系统体现了现代AI技术在金融数据分析领域的应用潜力,为构建更加智能和易用的BI系统提供了有价值的参考。