易语言开发从入门到精通:补充篇·数据可视化与数据分析深度实战·Excel图表/第三方图表控件·MySQL/SQLite数据读取·数据清洗/统计/分析 ⚡📊📈
1.38.1 学习目标 🎯

作为《易语言开发从入门到精通》的数据可视化与数据分析补充篇·企业级数据决策支持实战·高频数据处理场景全覆盖 ,本章将帮你构建完整的数据可视化与数据分析思维体系,完成3个高实用价值的联合项目,掌握数据处理、分析、可视化的全流程技能,达成以下5重可落地的明确目标:
- 构建数据可视化与数据分析的五层思维框架:掌握"数据准备层→数据清洗层→数据分析层→数据可视化层→部署维护层"的五层标准化开发模式;
- 掌握核心数据处理工具与方法:精通常用的数据存储(MySQL/SQLite/Excel)、数据读取(精易模块/eExcel支持库)、数据清洗(文本操作/数组操作/正则表达式)、数据分析(统计函数/自定义算法)、数据可视化(Excel图表/第三方图表控件);
- 开发3个高实用价值的联合项目 :完成销售数据可视化与分析系统(MySQL数据+Excel图表) 、用户行为数据分析系统(SQLite数据+TeeChart图表) 、财务报表自动生成系统(数据清洗+Excel图表);
- 掌握数据导入导出技术:学会将数据从Excel导入到MySQL/SQLite,将分析结果从MySQL/SQLite导出到Excel;
- 掌握数据可视化与数据分析的性能与稳定性优化:学习大数据量处理、图表渲染优化、数据库查询优化的方法;
1.38.2 数据可视化与数据分析的核心思维框架------五层标准化开发模式 🧠
数据可视化与数据分析的本质是将原始数据转化为有价值的信息,通过图表等可视化方式展示出来,帮助用户进行决策,五层标准化开发模式可以帮助你快速解决90%以上的数据处理问题。
1.38.2.1 第一层:数据准备层
- 功能:准备数据可视化与数据分析所需的数据源;
- 常用数据源 :
- 本地文件:Excel文件(.xlsx/.xls)、CSV文件(.csv)、文本文件(.txt);
- 数据库:MySQL、SQLite、Access;
- 网络数据:通过HTTP API获取的数据(如天气API、股票API);
- 开发工具:MySQL Workbench(MySQL管理工具)、SQLiteStudio(SQLite管理工具)、Microsoft Excel(Excel文件处理);
- 注意事项:数据源的格式要正确,数据要完整,避免数据缺失和重复;
1.38.2.2 第二层:数据清洗层
- 功能:对原始数据进行清洗,去除数据中的噪声和冗余,提高数据的质量;
- 常用数据清洗方法 :
- 去除数据缺失值:删除包含缺失值的行或列,或者使用平均值/中位数填充缺失值;
- 去除数据重复值:删除重复的行;
- 数据格式转换:将数据格式转换为所需的格式(如将文本型日期转换为日期型);
- 数据标准化/归一化:将数据转换到同一尺度,便于比较和分析;
- 开发工具:精易模块的文本操作/数组操作/正则表达式函数,eExcel支持库的函数;
- 注意事项:数据清洗要根据实际需求进行,避免过度清洗;
1.38.2.3 第三层:数据分析层
- 功能:对清洗后的数据进行分析,提取有价值的信息;
- 常用数据分析方法 :
- 描述性统计分析:计算数据的平均值、中位数、众数、标准差、方差;
- 相关性分析:计算两个变量之间的相关系数,判断变量之间的相关性;
- 回归分析:建立变量之间的回归模型,预测未来的发展趋势;
- 聚类分析:将数据分为多个聚类,每个聚类内部的数据相似度高,外部的数据相似度低;
- 开发工具:精易模块的统计函数,Excel公式;
- 注意事项:数据分析方法的选择要根据实际需求进行,避免使用不适合的方法;
1.38.2.4 第四层:数据可视化层
- 功能:将分析结果通过图表等可视化方式展示出来,帮助用户进行决策;
- 常用数据可视化方式 :
- 柱状图:用于比较不同类别的数据;
- 折线图:用于展示数据的趋势;
- 饼图:用于展示数据的占比;
- 散点图:用于展示两个变量之间的相关性;
- 开发工具:eExcel支持库的图表函数,第三方图表控件(如TeeChart、ChartDirector);
- 注意事项:图表的选择要根据实际需求进行,避免使用不适合的图表;
1.38.2.5 第五层:部署维护层
- 功能:负责数据可视化与数据分析系统的部署和维护;
- 常用部署方法:将系统编译成可执行文件,使用Windows的任务计划程序设置定时任务,定期更新数据源;
- 常用维护方法:定期检查系统的运行情况,定期备份数据库,定期更新系统的依赖库和模块;
- 注意事项:系统的部署和维护要根据实际需求进行,确保系统的稳定运行;
1.38.3 核心数据处理工具与方法详解------MySQL/SQLite/Excel图表/第三方图表控件 🔧
1.38.3.1 MySQL数据库操作(精易模块/eMySQL支持库)
核心操作 :
✅ 连接MySQL数据库 :使用精易模块的"MySQL_连接"函数;
✅ 断开MySQL数据库连接 :使用精易模块的"MySQL_断开"函数;
✅ 执行SQL语句 :使用精易模块的"MySQL_执行SQL语句"函数;
✅ 查询数据 :使用精易模块的"MySQL_查询数据"函数;
✅ 插入数据 :使用精易模块的"MySQL_插入数据"函数;
✅ 更新数据 :使用精易模块的"MySQL_更新数据"函数;
✅ 删除数据:使用精易模块的"MySQL_删除数据"函数;
代码示例(精易模块):
e
.版本 2
.支持库 spec
.支持库 iext
.支持库 eMySQL
.支持库 json
.程序集 窗口程序集_启动窗口
.程序集变量 MySQL连接句柄, 整数型
.程序集变量 MySQL连接状态, 逻辑型 ' 连接状态:真为已连接,假为未连接
.子程序 _启动窗口_创建完毕
' 初始化组件属性
_编辑框_主机地址.内容 = "localhost"
_编辑框_端口号.内容 = "3306"
_编辑框_数据库名称.内容 = "sales_data"
_编辑框_用户名.内容 = "root"
_编辑框_密码.内容 = "123456"
.子程序 _启动窗口_将被销毁
' 断开MySQL数据库连接
.如果真 (MySQL连接状态 = 真)
精易模块.MySQL_断开 (MySQL连接句柄)
.如果真结束
.子程序 _按钮_连接MySQL数据库_被单击
' 检查输入框是否为空
.如果真 (_编辑框_主机地址.内容 = "" 或 _编辑框_端口号.内容 = "" 或 _编辑框_数据库名称.内容 = "" 或 _编辑框_用户名.内容 = "")
信息框 ("请输入完整的连接信息!", #错误图标, "销售数据可视化与分析系统")
返回 ()
.如果真结束
' 连接MySQL数据库
.局部变量 连接结果, 逻辑型
连接结果 = 精易模块.MySQL_连接 (MySQL连接句柄, _编辑框_主机地址.内容, 到整数 (_编辑框_端口号.内容), _编辑框_数据库名称.内容, _编辑框_用户名.内容, _编辑框_密码.内容)
' 检查连接结果是否成功
.如果真 (连接结果 = 假)
信息框 ("连接MySQL数据库失败!", #错误图标, "销售数据可视化与分析系统")
return ()
.如果真结束
MySQL连接状态 = 真
_编辑框_MySQL连接状态.内容 = "已连接"
_按钮_连接MySQL数据库.禁止 = 真
_按钮_断开MySQL数据库连接.禁止 = 假
' 查询销售数据
查询销售数据 ()
.子程序 _按钮_断开MySQL数据库连接_被单击
' 断开MySQL数据库连接
.如果真 (MySQL连接状态 = 真)
精易模块.MySQL_断开 (MySQL连接句柄)
.如果真结束
MySQL连接状态 = 假
_编辑框_MySQL连接状态.内容 = "未连接"
_按钮_连接MySQL数据库.禁止 = 假
_按钮_断开MySQL数据库连接.禁止 = 真
' 清空列表框
_列表框_销售数据.清空 ()
.子程序 查询销售数据
' 检查MySQL连接状态
.如果真 (MySQL连接状态 = 假)
信息框 ("请先连接MySQL数据库!", #错误图标, "销售数据可视化与分析系统")
return ()
.如果真结束
' 执行查询SQL语句
.局部变量 查询SQL语句, 文本型
查询SQL语句 = "SELECT * FROM sales_records ORDER BY sale_date DESC"
.局部变量 查询结果, 精易模块.MySQL查询结果类型
查询结果 = 精易模块.MySQL_查询数据 (MySQL连接句柄, 查询SQL语句)
' 检查查询结果是否成功
.如果真 (查询结果.状态 = 假)
信息框 ("查询销售数据失败!", #错误图标, "销售数据可视化与分析系统")
return ()
.如果真结束
' 清空列表框
_列表框_销售数据.清空 ()
' 添加列标题
.局部变量 列标题数组, 文本型, , "0"
列标题数组 = 查询结果.字段名数组
_列表框_销售数据.列数 = 取数组成员数 (列标题数组)
.局部变量 i, 整数型
.计次循环首 (取数组成员数 (列标题数组), i)
_列表框_销售数据.列标题 [i - 1] = 列标题数组 [i]
.计次循环尾 ()
' 添加查询结果到列表框
.局部变量 数据行数组, 文本型, , "0"
数据行数组 = 查询结果.数据行数组
.局部变量 j, 整数型
.计次循环首 (取数组成员数 (数据行数组), i)
.局部变量 数据列数组, 文本型, , "0"
数据列数组 = 分割文本 (数据行数组 [i], "|", )
_列表框_销售数据.插入表项 (i - 1)
.计次循环首 (取数组成员数 (数据列数组), j)
_列表框_销售数据.置标题 (i - 1, j - 1, 数据列数组 [j])
.计次循环尾 ()
.计次循环尾 ()
测试调试和优化经验 :
① 测试调试:
- 使用MySQL Workbench测试SQL语句是否正常执行;
- 测试易语言端是否正常连接和查询数据;
- 测试列表框是否正常显示数据;
② 优化经验: - 使用索引优化查询SQL语句,提高查询效率;
- 查询大数据量时,使用分页查询,避免内存不足;
- 使用连接池技术,提高连接效率;
1.38.3.2 Excel图表操作(eExcel支持库)
核心操作 :
✅ 创建Excel图表 :使用eExcel支持库的"Excel图表_创建"函数;
✅ 设置Excel图表类型 :使用eExcel支持库的"Excel图表_设置类型"函数;
✅ 设置Excel图表标题 :使用eExcel支持库的"Excel图表_设置标题"函数;
✅ 设置Excel图表位置 :使用eExcel支持库的"Excel图表_设置位置"函数;
✅ 设置Excel图表数据源 :使用eExcel支持库的"Excel图表_设置数据源"函数;
✅ 保存Excel图表:使用eExcel支持库的"Excel工作簿_保存"函数;
代码示例(eExcel支持库):
e
.版本 2
.支持库 spec
.支持库 iext
.支持库 eExcel
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 Excel工作簿对象, 整数型
.程序集变量 Excel图表对象, 整数型
.子程序 生成销售数据图表
' 初始化eExcel支持库
eExcel.初始化 ()
' 打开Excel文件
Excel工作簿对象 = eExcel.打开工作簿 (取运行目录 () + "/销售数据.xlsx")
' 检查Excel工作簿对象是否打开成功
.如果真 (Excel工作簿对象 = 0)
eExcel.销毁 ()
信息框 ("打开Excel文件失败!", #错误图标, "销售数据可视化与分析系统")
return ()
.如果真结束
' 创建Excel图表(柱状图)
Excel图表对象 = eExcel.创建图表 (Excel工作簿对象, 1, #图表类型_柱状图, 1, 2, 10, 5)
' 设置Excel图表标题
eExcel.设置图表标题 (Excel图表对象, "产品销售数据柱状图")
' 设置Excel图表位置
eExcel.设置图表位置 (Excel图表对象, 20, 20, 400, 300)
' 保存Excel图表
eExcel.保存工作簿 (Excel工作簿对象)
' 关闭Excel文件
eExcel.关闭工作簿 (Excel工作簿对象)
' 销毁eExcel支持库
eExcel.销毁 ()
测试调试和优化经验 :
① 测试调试:
- 测试Excel文件是否正常打开;
- 测试Excel图表是否正常创建和保存;
- 测试Excel图表的类型、标题、位置是否正确;
② 优化经验: - 使用图表缓存机制,提高图表渲染效率;
- 生成大数据量图表时,使用分块渲染,避免内存不足;
- 选择适合的图表类型,提高图表的可读性;
1.38.4 数据可视化与数据分析深度实战------3个高实用价值的联合项目 📊
1.38.4.1 项目1:销售数据可视化与分析系统(MySQL数据+Excel图表)
项目需求分析 :
✅ 功能需求:
- 基础功能:从MySQL数据库中读取销售数据,生成产品销售数据柱状图、产品销售数据占比饼图、销售数据趋势折线图;
- 辅助功能 :支持设置查询时间范围,支持查看详细的销售数据,支持将图表和数据导出到Excel文件;
✅ 非功能需求: - 界面设计:符合现代审美(扁平化风格、蓝色主题),功能分区明确(查询条件区、图表显示区、数据显示区);
- 响应时间:查询时间范围不超过1秒,图表渲染时间不超过5秒;
- 可靠性:数据导出到Excel文件时要完整;
界面设计 (组件箱拖拽+属性表配置):
① 新建Windows窗口程序 :打开易语言官方IDE,点击"文件→新建→Windows窗口程序→确定";
② 添加容器组件 :从组件箱中拖拽3个分组框组件到"_启动窗口"上,属性名分别为"_分组框_查询条件区""_分组框_图表显示区""_分组框_数据显示区",标题分别为"查询条件区""图表显示区""数据显示区",位置分别为(10,10)、(10,130)、(10,540),宽度分别为780px、780px、780px,高度分别为110px、400px、240px;
③ 添加查询条件区组件:
- 2个标签组件:属性名分别为"_标签_开始日期""_标签_结束日期",标题分别为"开始日期:""结束日期:",位置分别为(20,20)、(310,20);
- 2个日期选择器组件:属性名分别为"_日期选择器_开始日期""_日期选择器_结束日期",位置分别为(100,20)、(390,20),宽度分别为200px、200px,高度统一为25px;
- 2个按钮组件 :属性名分别为"_按钮_查询数据""_按钮_导出数据",标题分别为"查询数据""导出数据",位置分别为(600,20)、(700,20),宽度分别为80px、80px,高度统一为25px;
④ 添加图表显示区组件: - 3个图片框组件 :属性名分别为"_图片框_产品销售数据柱状图""_图片框_产品销售数据占比饼图""_图片框_销售数据趋势折线图",位置分别为(20,20)、(320,20)、(20,220),宽度分别为280px、440px、740px,高度分别为180px、180px、160px;
⑤ 添加数据显示区组件: - 1个列表框组件 :属性名分别为"_列表框_销售数据",位置为(20,20),宽度为740px,高度为200px,允许选择为真;
⑥ 添加支持库和模块: - 添加eExcel、eMySQL、json、shell、spec支持库;
- 添加精易模块;
代码实现(核心公共函数代码):
e
.版本 2
.支持库 spec
.支持库 iext
.支持库 eExcel
.支持库 eMySQL
.支持库 json
.程序集 窗口程序集_启动窗口
.程序集变量 MySQL连接句柄, 整数型
.程序集变量 MySQL连接状态, 逻辑型 ' 连接状态:真为已连接,假为未连接
.子程序 _启动窗口_创建完毕
' 初始化组件属性
_日期选择器_开始日期.日期 = 取现行时间 () - 30
_日期选择器_结束日期.日期 = 取现行时间 ()
' 初始化精易模块
精易模块.初始化 ()
.子程序 _启动窗口_将被销毁
' 断开MySQL数据库连接
.如果真 (MySQL连接状态 = 真)
精易模块.MySQL_断开 (MySQL连接句柄)
.如果真结束
' 销毁精易模块
精易模块.销毁 ()
.子程序 _按钮_查询数据_被单击
' 检查MySQL连接状态
.如果真 (MySQL连接状态 = 假)
信息框 ("请先连接MySQL数据库!", #错误图标, "销售数据可视化与分析系统")
return ()
.如果真结束
' 查询销售数据
查询销售数据 ()
' 生成产品销售数据柱状图
生成产品销售数据柱状图 ()
' 生成产品销售数据占比饼图
生成产品销售数据占比饼图 ()
' 生成销售数据趋势折线图
生成销售数据趋势折线图 ()
.子程序 查询销售数据
' 构造查询SQL语句
.局部变量 查询SQL语句, 文本型
查询SQL语句 = "SELECT * FROM sales_records WHERE sale_date BETWEEN '" + 时间到文本 (_日期选择器_开始日期.日期, #日期格式_标准) + "' AND '" + 时间到文本 (_日期选择器_结束日期.日期, #日期格式_标准) + "' ORDER BY sale_date DESC"
' 执行查询SQL语句
.局部变量 查询结果, 精易模块.MySQL查询结果类型
查询结果 = 精易模块.MySQL_查询数据 (MySQL连接句柄, 查询SQL语句)
' 检查查询结果是否成功
.如果真 (查询结果.状态 = 假)
信息框 ("查询销售数据失败!", #错误图标, "销售数据可视化与分析系统")
return ()
.如果真结束
' 清空列表框
_列表框_销售数据.清空 ()
' 添加列标题
.局部变量 列标题数组, 文本型, , "0"
列标题数组 = 查询结果.字段名数组
_列表框_销售数据.列数 = 取数组成员数 (列标题数组)
.局部变量 i, 整数型
.计次循环首 (取数组成员数 (列标题数组), i)
_列表框_销售数据.列标题 [i - 1] = 列标题数组 [i]
.计次循环尾 ()
' 添加查询结果到列表框
.局部变量 数据行数组, 文本型, , "0"
数据行数组 = 查询结果.数据行数组
.局部变量 j, 整数型
.计次循环首 (取数组成员数 (数据行数组), i)
.局部变量 数据列数组, 文本型, , "0"
数据列数组 = 分割文本 (数据行数组 [i], "|", )
_列表框_销售数据.插入表项 (i - 1)
.计次循环首 (取数组成员数 (数据列数组), j)
_列表框_销售数据.置标题 (i - 1, j - 1, 数据列数组 [j])
.计次循环尾 ()
.计次循环尾 ()
测试调试和优化经验 :
① 测试调试:
- 测试查询时间范围是否正常;
- 测试图表显示是否正常;
- 测试数据导出到Excel文件是否正常;
② 优化经验: - 使用索引优化查询SQL语句,提高查询效率;
- 生成图表时使用缓存机制,提高图表渲染效率;
- 导出大数据量时,使用分块导出,避免内存不足;
1.38.5 数据可视化与数据分析的性能与稳定性优化------提升数据处理效率与图表渲染速度 🚀
1.38.5.1 性能优化
✅ 使用索引优化查询SQL语句 :在MySQL/SQLite数据库中,对查询条件常用的字段建立索引,提高查询效率;
✅ 使用分页查询 :查询大数据量时,使用分页查询,避免内存不足;
✅ 使用连接池技术 :使用连接池技术,提高数据库连接效率;
✅ 使用图表缓存机制 :生成图表时使用缓存机制,提高图表渲染效率;
✅ 使用分块处理:处理大数据量时,将数据分为多个小块,逐块处理,避免内存不足;
1.38.5.2 稳定性优化
✅ 使用异常处理机制 :使用try-catch异常处理机制,处理操作失败的情况;
✅ 使用数据备份机制 :定期备份数据库,防止数据丢失;
✅ 使用资源释放机制 :及时释放资源,避免资源泄漏;
✅ 使用定时检查机制:定期检查系统的运行情况,及时发现和解决问题;
1.38.6 数据可视化与数据分析常见问题排查手册 🚨
1.38.6.1 MySQL数据库操作问题(3个)
问题1:连接MySQL数据库失败
问题现象 :连接MySQL数据库失败,提示"连接MySQL数据库失败!"。
原因分析:
- 主机地址不正确;
- 端口号不正确;
- 数据库名称不正确;
- 用户名或密码不正确;
- MySQL服务未启动;
解决方案: - 检查主机地址是否正确;
- 检查端口号是否正确;
- 检查数据库名称是否正确;
- 检查用户名或密码是否正确;
- 检查MySQL服务是否启动;
问题2:查询销售数据失败
问题现象 :查询销售数据失败,提示"查询销售数据失败!"。
原因分析:
- 查询SQL语句不正确;
- 表名或字段名不正确;
- 数据类型不匹配;
解决方案: - 检查查询SQL语句是否正确;
- 检查表名或字段名是否正确;
- 检查数据类型是否匹配;
问题3:插入/更新/删除数据失败
问题现象 :插入/更新/删除数据失败,提示"插入/更新/删除数据失败!"。
原因分析:
- 插入/更新/删除SQL语句不正确;
- 表名或字段名不正确;
- 数据类型不匹配;
- 权限不足;
解决方案: - 检查插入/更新/删除SQL语句是否正确;
- 检查表名或字段名是否正确;
- 检查数据类型是否匹配;
- 检查用户是否有插入/更新/删除数据的权限;
1.38.7 补充篇总结与数据可视化未来发展方向 📜
1.38.7.1 本章核心收获
- ✅ 构建数据可视化与数据分析的五层思维框架:掌握"数据准备层→数据清洗层→数据分析层→数据可视化层→部署维护层"的五层标准化开发模式;
- ✅ 掌握核心数据处理工具与方法:精通常用的数据存储、数据读取、数据清洗、数据分析、数据可视化;
- ✅ 开发3个高实用价值的联合项目:完成销售数据可视化与分析系统、用户行为数据分析系统、财务报表自动生成系统;
- ✅ 掌握数据导入导出技术:学会将数据从Excel导入到MySQL/SQLite,将分析结果从MySQL/SQLite导出到Excel;
- ✅ 掌握数据可视化与数据分析的性能与稳定性优化:学习大数据量处理、图表渲染优化、数据库查询优化的方法;
1.38.7.2 数据可视化未来发展方向
数据可视化的未来发展方向主要有以下5个:
💡 AI辅助数据可视化 :进一步优化AI辅助数据可视化工具,根据数据自动选择适合的图表类型;
💡 低代码/无代码数据可视化 :进一步完善低代码/无代码数据可视化平台,让用户通过拖拽和配置的方式生成图表;
💡 三维数据可视化 :使用三维技术展示数据,提高数据的可视化效果;
💡 实时数据可视化 :使用实时数据可视化技术,展示实时更新的数据;
💡 VR/AR数据可视化:使用VR/AR技术展示数据,提供沉浸式的数据可视化体验;
🎉 易语言开发从入门到精通的数据可视化与数据分析补充篇·企业级数据决策支持实战·高频数据处理场景全覆盖,至此结束!愿你在易语言的世界里,不断学习,不断进步,开发出更多"高效、稳定、直观"的数据可视化与数据分析系统!