广西气候环境数据分析与可视化系统:从历史天气采集到大屏联动展示
目录一、项目缘起把分散的天气记录做成可分析的数据资产二、数据采集从网页历史天气到本地结构化数据三、数据清洗让气象字段变得统一、可统计、可建模四、AQI预测用LSTM和GRU做短期趋势判断五、系统架构Flask、MySQL、Pyecharts与ECharts协同工作六、用户侧功能登录、注册、个人中心与可视化访问七、后台管理用户、数据与概览八、单页可视化从空气质量到气候结构的多角度呈现九、动态大屏把核心指标集中到一张屏幕上十、测试与复盘让项目不止停留在“能打开”十一、后续可以继续扩展的方向每文一语有需要本项目的代码、文档、完整资源或者需要部署调试的朋友可以私信博主。做气候环境数据分析时我最先遇到的问题不是图表怎么画而是数据怎么稳定地拿到、怎么整理成统一口径、怎么让用户一眼看懂。广西各市的天气、温度、风向、空气质量等指标本身并不陌生但它们散落在不同页面、不同月份和不同字段里如果只停留在表格层面很难看出长期趋势、城市差异和季节变化。基于这个想法我把项目定位成一个完整的数据分析与可视化平台前端能看图、后台能管数、模型能预测、大屏能展示。系统围绕广西14个地级市的历史气候环境数据展开覆盖2020年至2025年前后的气温、天气、风向、风力、AQI、空气质量等级等指标。项目技术栈以Python为核心使用Flask搭建Web服务MySQL负责结构化存储Pandas完成清洗和统计Pyecharts用于批量生成单页图表ECharts用于动态大屏渲染LSTM和GRU用于AQI短期趋势预测。整个过程从数据采集开始一直延伸到用户登录、权限管理、数据维护、指标分析和可视化大屏展示形成了一个可运行、可展示、可扩展的闭环系统。一、项目缘起把分散的天气记录做成可分析的数据资产广西地形复杂沿海、丘陵、盆地和山区并存气候表现也有明显的空间差异。南部沿海受海洋调节影响更强桂北山区的温差和冷空气影响更明显西部部分城市在夏季高温上表现突出。单独看某一天的天气预报只能知道“今天热不热、有没有雨”把多年数据放在一起才能看到更有价值的问题哪些城市长期空气质量更稳定哪个月份AQI容易升高风向和空气质量之间有没有关联极端高温主要集中在哪里。这个系统要解决的正是从“天气记录”到“环境洞察”的转换。项目中我没有只做几张静态图而是把数据链路、Web系统和预测模块放到同一个框架里。普通用户可以查看不同主题的可视化页面管理员可以维护用户和气象数据后台可以查看数据增长与用户访问情况大屏页面可以把关键指标整合到同一屏幕上适合课程展示、毕业设计答辩、项目演示或后续二次开发。图1数据采集、清洗与预测建模流程二、数据采集从网页历史天气到本地结构化数据项目的数据主要来自公开历史天气页面。采集时按城市和月份组织请求逐步抓取广西各市的逐日历史记录。原始页面中包含日期、最高气温、最低气温、天气状况、风向、风力、AQI、空气质量等级等字段这些字段看起来简单但在工程处理时需要考虑很多细节。例如不同年份的页面路径并不完全一致部分月份存在缺失字段部分AQI信息需要根据月度汇总值进行补充温度字段还带有单位符号不能直接用于计算。为了让采集过程尽量稳定我在爬虫端做了请求头伪装、随机延时、失败重试和批量城市遍历。每次请求之间保留间隔避免高频访问造成失败当某个月份请求异常时程序会等待后再次尝试并记录日志方便回查。最终整理出的原始记录超过三万条覆盖广西主要城市的多个气候维度为后续清洗、建模和可视化提供了基础。图2历史天气数据采集与原始记录展示三、数据清洗让气象字段变得统一、可统计、可建模爬取下来的原始数据并不能直接进入可视化页面。项目里我把清洗过程分成字段解析、格式转换、缺失值处理、异常值检查、特征派生和数据库入库几个步骤。日期字段统一转成标准时间格式气温字段去掉“℃”后转为数值天气描述按关键词拆分出主要天气类型AQI字段则补齐缺失记录保证时间序列的连续性。为了便于统计我还增加了一批衍生字段。例如根据天气描述生成降雨日、雾天、高温日等标记根据最高气温识别35℃以上的高温天气根据空气质量等级生成优良天气标记根据风向、风力组合统计风场特征。这些字段不一定都要直接展示给用户但它们会支撑后续的图表计算和业务分析。清洗后的数据写入MySQL后端再按城市、日期、指标类型进行查询和聚合。在这个阶段数据库不仅是“存数据”的地方也承担了系统稳定运行的基础角色。气候数据表负责存储逐日天气信息用户表和管理员表负责账号权限数据维护表用于后台增删改查。这样的设计能让普通用户和管理员的操作边界更加清晰也方便后续扩展更多城市、更多年份或更多环境指标。四、AQI预测用LSTM和GRU做短期趋势判断除了历史统计我还加入了AQI预测模块。空气质量本身具有明显的时间序列特征同一城市的AQI会受到季节、降雨、风场、污染排放等多种因素影响。项目中以某一城市近年AQI序列作为示例用过去一段时间的AQI变化预测下一阶段的数值趋势。模型层面选择了LSTM和GRU两类循环神经网络进行对比。LSTM擅长捕捉较长周期的时间依赖结构中包含输入门、遗忘门和输出门GRU结构更简洁只保留更新门和重置门训练效率更高。为了让两者对比更公平我在输入窗口、训练集划分、优化器和评估指标上保持一致重点观察RMSE、MAE、R²和训练耗时。结果显示两个模型都能跟踪AQI的主要波动趋势GRU在训练速度上更有优势误差指标也略微更稳因此系统最终更适合将GRU作为默认预测方案。图3 LSTM与GRU模型训练输出和评估指标从预测曲线看模型对常规波动的拟合较好在AQI突然跃升或短时下降的位置会出现一定偏差。这类突变通常与突发天气过程、局地污染源或短期外部因素有关仅依靠历史AQI序列很难完全捕捉。后续如果继续升级可以把风向、降雨、湿度、节假日、污染源等特征一并纳入输入提高模型对异常波动的识别能力。图4 LSTM与GRU预测曲线对比展示五、系统架构Flask、MySQL、Pyecharts与ECharts协同工作系统采用B/S架构用户只需要通过浏览器访问页面不需要安装额外客户端。后端由Flask提供路由和接口服务负责登录验证、Session管理、数据查询、图表页面加载和后台管理请求。前端使用HTML、CSS、JavaScript和Layui完成页面布局与交互图表展示部分由Pyecharts和ECharts共同承担。Pyecharts更适合批量生成单页可视化页面。项目中有大量主题图例如空气质量等级占比、天气类型分布、风向统计、风力等级、城市温差、月度AQI趋势、地图热力图等如果全部手写前端代码开发量会很大。使用Pyecharts之后只需要在Python端完成数据分组和图表配置就能快速生成HTML页面。ECharts则更适合动态大屏因为它在多图联动、动画效果、异步数据更新和视觉布局方面更灵活。MySQL在系统里承担核心数据层。后端接口根据页面需求按日期、城市、AQI、天气类型等条件查询再把结果封装成JSON返回前端。管理员新增或修改数据后数据库会同步更新相关页面也能重新加载最新结果。这种设计让系统不只是一个静态作品而是具备了基本的数据维护能力。六、用户侧功能登录、注册、个人中心与可视化访问用户模块从登录注册开始。用户注册时填写账号密码前端先做基础校验后端再检查用户名是否重复。登录成功后系统写入Session记录当前用户状态并进入可视化主页。主页左侧是多级菜单按分析主题组织图表入口用户可以在不同页面之间切换查看温度、降雨、风向、空气质量等分析结果。图5系统登录与用户注册界面主界面采用左侧菜单加右侧内容区的布局符合常见后台系统的使用习惯。用户点击不同菜单后右侧加载对应图表页面。对于毕业设计或项目演示来说这种结构的好处很明显页面数量多但入口清晰展示内容丰富但不会显得杂乱老师或评审能顺着菜单看到完整功能。图6用户端可视化主页面展示个人中心主要提供信息维护和账号安全操作。用户可以完善昵称、邮箱、手机等信息也可以修改密码。密码修改后系统会清除登录状态引导用户重新登录避免旧Session继续有效。截图中涉及个人信息的区域已做模糊处理保留功能布局和交互效果避免真实账号信息外泄。图7个人信息维护与账号安全操作展示七、后台管理用户、数据与概览管理员模块是系统完整性的关键。普通用户主要看图和查看个人信息管理员则要负责系统运行维护。后台提供用户列表分页查询、用户新增、编辑、删除和权限升级功能。管理员可以把普通用户升级为管理员账号系统会完成身份转换保证权限管理清晰。数据维护模块提供完整的增删改查入口。管理员可以按日期、AQI、城市筛选气候数据也可以手动新增记录、修正异常数据、删除错误条目。所有操作都通过REST风格接口完成前后端使用JSON交互操作结果以提示框反馈给用户。对于一个展示型项目而言后台数据管理往往是体现“系统化”的重要部分它说明项目不只是几个图表拼接而是具备实际维护流程。图8后台数据查询、新增、更新与概览展示八、单页可视化从空气质量到气候结构的多角度呈现可视化模块是项目最适合展示的部分。我把图表分成几类空气质量类、天气类型类、温度变化类、风向风力类、区域地图类和综合趋势类。单页图表的特点是主题明确每个页面只解决一个问题例如“广西空气质量等级占比如何”“哪些天气类型出现最多”“风向主要集中在哪些方向”“不同城市的温差差异有多大”。从整体统计看广西空气质量以“优”和“良”为主污染天气占比较低天气类型中晴、多云和小雨出现频率较高体现出湿润季风气候特征风力等级大多集中在1级和2级说明多数城市风速较温和风向则受到季风和地形影响东南风、东北风等方向出现较多。这些结论并不需要用户阅读复杂表格图表本身就能完成信息传达。图9空气质量、天气类型、风向与风力统计图地图类图表更适合表现空间差异。平均AQI热力图可以看出各市空气质量的相对高低晴天统计图能展示不同城市日照条件差异降雨占比图能反映桂北、桂西和沿海城市的降水结构高温日数图则直观呈现热压力分布。对于区域气候分析来说地图比单纯柱状图更有冲击力也更容易让人理解“城市之间为什么不同”。图10广西各市气候环境指标热力图组合展示时间趋势类图表则更适合观察季节规律。月度温度曲线呈现明显的夏季高、冬季低月均AQI呈现冬春偏高、夏季偏低的特征季度温度分布能进一步看出不同季度的波动范围风向与风力热力图可以揭示高频风场组合。这些图表共同构成了项目的分析层让系统从“能看”进一步变成“能解释”。图11月度趋势、季度分布与风向风力关系展示九、动态大屏把核心指标集中到一张屏幕上单页图表适合逐项分析大屏则适合集中展示。项目中的大屏将累计数据量、平均AQI、优良天数、污染天数等核心指标放在顶部中间区域展示最新天气数据表和广西地图左右两侧放置AQI趋势、城市对比、风向关系、温度与空气质量关联等图表。整体视觉采用深色科技风适合演示、汇报和答辩场景。大屏的设计重点不是把所有图表堆在一起而是让不同模块之间形成层次。顶部数字卡片回答“整体情况如何”中间地图回答“空间差异在哪里”左侧趋势图回答“时间变化怎样”右侧关联图回答“哪些因素可能有关”。用户不需要来回切换页面就能快速获得全局印象。图中顶部项目标题和时间区域已做通用化处理避免公开发布时泄露原始页面信息。图12气候环境数据动态大屏展示十、测试与复盘让项目不止停留在“能打开”系统完成后我按模块进行了功能测试。用户模块重点测试注册、登录、Session状态、个人信息更新和密码修改管理员模块重点测试用户分页、编辑、删除、升级和数据维护可视化模块逐一打开单页图表和大屏检查图表是否正常加载、数据是否与数据库一致、提示框和缩放交互是否可用。性能方面普通页面加载速度较快单页图表一般可以在较短时间内完成渲染。对于数据量较大的热力图和大屏页面我通过减少前端一次性渲染压力、优化数据组织方式等方法做了调整。项目整体更偏向教学展示和原型实践但架构已经保留了继续扩展的空间例如接入实时天气API、增加多因子预测、加入地图钻取、引入缓存机制、对爬虫任务做定时调度等。回头看这个项目最有价值的地方不是单独某个模型或某张图而是把数据采集、清洗、存储、分析、预测、可视化和后台管理串成了一条完整链路。很多数据分析项目停在Notebook里图表做完就结束这个系统更接近一个可交付的小型Web应用既能展示数据也能管理数据还能把算法结果嵌入实际页面。对于学习Python数据分析、Flask开发、ECharts可视化和机器学习预测的同学来说它是一个比较适合作为综合练习的项目。十一、后续可以继续扩展的方向如果继续打磨我会优先做四个方向。第一增加实时数据接口让历史分析和实时监测结合起来第二扩展预测特征不再只使用AQI序列而是加入温度、降雨、风向、风力和节假日等多源因素第三优化前端交互让地图支持城市点击、指标切换和时间范围筛选第四完善部署方案把数据库初始化、依赖安装、模型加载和大屏启动整理成更规范的说明方便别人快速复现。这个项目适合用于毕业设计、课程设计、数据可视化作品集和Python全栈练习。完整资源中包含数据采集脚本、清洗代码、数据库结构、Flask后台、用户与管理员页面、Pyecharts图表生成脚本、ECharts大屏页面以及AQI预测模型代码。公开展示时我只保留了核心功能和效果图具体代码细节、数据库脚本和部署流程可以按需要继续整理。每文一语把数据做成系统把系统做成作品把作品做成经验真正的成长往往藏在每一次完整闭环的实践里。

相关新闻