基于 Python 的全国空气质量监测与可视化分析平台

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。

一项目简介

   空气质量优劣程度与一个城市的综合竞争力密切相关,它直接影响到投资环境和居民健康,因此越来越受到政府和公众的关注。本项目利用网络爬虫从某空气质量监测网站抓取全国各大城市的历年空气污染数据(PM2.5,PM10,SO2,NO2,CO,O3),对全国各城市(空间维度)不同年度(时间维度)等维度进行空气污染物的统计分析,并利用 Echarts 进行可视化展示。

二、功能

  功能主要包括:

在这里插入图片描述

三、基于 Python 的全国空气质量监测与可视化分析平台

3.1 登录注册

在这里插入图片描述

3.2 城市历史空气质量数据查询

在这里插入图片描述

3.3各城市空气质量年度变化分析

通过对某城市某一年份的各类污染物(PM2.5,PM10,SO2,NO2,CO,O3)进行变化分析,分析出一年当中某类污染物的指标走势情况:
在这里插入图片描述

3.4 各城市空气质量年度月份统计

对各城市某一年的各类空气污染指标,按照月份进行分组计算平均污染指数,并绘制柱状图和饼状图,可以直观的发现这些污染物最严重的月份等信息:
def get_city_month_air_quality(city, year, zhibiao):
    """对城市的年度空气指标进行统计,计算平均指标"""
    city_df = air_df[(air_df['city'] == city) & (air_df['year'] == year)]
    city_df = city_df.sort_values(by='time', ascending=True)
    print('数据条目数:', city_df.shape[0])
    city_month_df = city_df[['month', zhibiao]].groupby(by='month').mean().reset_index()
    city_month_df = city_month_df.sort_values(by=zhibiao, ascending=True)
    results = {'月份': ['{}月份'.format(int(r)) for r in city_month_df['month'].values.tolist()],
               '均值': city_month_df[zhibiao].values.tolist()}
    print(results)
    return jsonify(results)

在这里插入图片描述

3.5 各城市年度空气质量日历热力图

对各城市每个年份某空气污染物的分布情况,通过对每年的污染情况绘制日历热力图,直观的发现该污染物随时间的变化情况:

在这里插入图片描述

3.6 各城市空气污染物年度占比

计算各城市每年各类空气污染物指数占比情况,可得出影响该城市空气质量的主要污染源有哪些,为空气治理提供依据:

def get_city_polution_data(city, year):
    city_df = air_df[(air_df['city'] == city) & (air_df['year'] == year)]
    city_df['primary_pollutant'] = city_df['primary_pollutant'].map(lambda x: str(x).replace('-', '良').replace('None', '良'))
    pollutants = city_df['primary_pollutant'].value_counts().reset_index()
 
    all_aqis = city_df['AQI'].values.tolist()
 
    air_quality = {'优': 0, '良': 0, '轻度污染': 0, '中度污染': 0, '重度污染': 0, '严重污染': 0}
    for aqi in all_aqis:
        if 0 <= aqi < 50:
            air_quality['优'] += 1
        elif 50 <= aqi < 100:
            air_quality['良'] += 1
        elif 100 <= aqi < 150:
            air_quality['轻度污染'] += 1
        elif 150 <= aqi < 200:
            air_quality['中度污染'] += 1
        elif 200 <= aqi < 300:
            air_quality['重度污染'] += 1
        else:
            air_quality['轻度污染'] += 1
 
    air_quality_keys = list(air_quality.keys())
 
    return jsonify({'污染种类': pollutants['index'].values.tolist(),
                    '数值': pollutants['primary_pollutant'].values.tolist(),
                    '空气质量': air_quality_keys,
                    '空气质量数值': [air_quality[k] for k in air_quality_keys]})

在这里插入图片描述

四. 空气质量 AQI 数据采集

   从某天气监测网站采集全国各大城市的历年空气质量数据,并进行数据清洗和格式化:

......
 
for city in city_map:
    for year_month in year_months:
        year_month_line = []
        try:
            print('爬取{} {} 的AQI数据'.format(city, year_month))
            url = 'http://www.xxxx.com/aqi/{}-{}.html'.format(city_map[city], year_month)
            response = requests.get(url, timeout=1000)
            response = response.text
 
            soup = BeautifulSoup(response, 'lxml')
            items = soup.table.find_all('tr')
 
            for i, item in enumerate(items):
                if i == 0:
                    continue
                data = item.find_all('td')
                # 日期
                date = remove_space(data[0].text)
                # 质量等级
                tianqi = remove_space(data[1].text)
                # AQI指数
                qiwen = remove_space(data[2].text)
 
                year_month_line.append(','.join([city, date, tianqi, qiwen]) + '\n')
            fout.writelines(year_month_line)
            fout.flush()
        except:
            continue
......

五. 总结

   本项目利用网络爬虫从某空气质量监测网站抓取全国各大城市的历年空气污染数据(PM2.5, PM10, SO2, NO2, CO, O3),对全国各城市(空间维度)不同年度(时间维度)等维度进行空气污染物的统计分析,并利用 Echarts 进行可视化展示。
————————————————

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
基于Springboot+Vue的房价可视化监测系统源码+项目说明.zip 【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 一个基于Springboot+Vue的房价可视化监测系统,数据抓取自链家,通过Echarts进行可视化展现。 ### 1.1 项目介绍 [1] 爬取链家的新楼盘、二手房、小区、租房信息作为分析数据,支持北上广深等国内21个主要城市。 [2] 通过 IP 代理池、伪装 User-Agent 、随机延时、多线程等手段快速稳定抓取数据。 [3] 通过 xxl-job 定时任务实现爬虫的自动抓取及数据的自动汇总处理。 [4] 有完善的用户、角色、权限配置及管理机制,支持页面级、按钮级的权限管理。 [5] 通过 AOP 切面及自定义注解实现系统日志记录,可在系统管理页面查看操作日志。 [6] 集成 Druid 数据连接池、Screw 导出数据库结构、Swagger 生成接口文档。 [7] 通过 axios 请求后端接口,使用 VueX 缓存用户登录状态及系统字典。 [8] 使用 Element-UI 组件库开发页面,Echarts 开发可视化图表,二者均简单易用。 ### 1.2 项目技术栈 后端部分:[Springboot](https://github.com/spring-projects/spring-boot)(后端核心框架)、[Mybatis](https://github.com/mybatis/mybatis-3)(持久化框架)、[Shiro](https://github.com/apache/shiro)(权限框架)、[Druid](https://github.com/alibaba/druid)(数据库连接池)、[Screw](https://github.com/pingfangushi/screw)(数据库表结构生成器)、[Swagger](https://github.com/swagger-api/swagger-ui)(接口文档)、[Hutool](https://github.com/looly/hutool)(Java工具类库)、[Lombok](https://www.projectlombok.org/)(简化代码)、[MySQL](https://www.mysql.com/cn/)(数据库)、[Redis](https://redis.io/)(高速缓存) 前端部分:[Vue](https://cn.vuejs.org/v2/guide/index.html)(前端核心框架)、[VueX](https://vuex.vuejs.org/zh/)(状态管理)、[axios](https://github.com/axios/axios)(HTTP请求库)、[Element-UI](https://element.eleme.cn/#/zh-CN/component/installation)(基础组件库)、[Echarts](https://echarts.baidu.com/theme-builder/)(可视化图表) 爬虫部分:[Xpath](https://www.w3.org/TR/xpath/)(Python爬虫核心模块)、[ProxyPool](https://github.com/jhao104/proxy_pool)(Python爬虫IP代理池) 定时任务:[xxl-job](https://github.com/xuxueli/xxl-job/)(分布式任务调度平台,分为调度中心 xxl-job-admin 和执行器 xxl-job-executor 两部分) 开发工具:IDEA、PyCharm、VScode、Git、Maven、Navicat ### 1.3 项目结构 项目主要结构如下: ``` house-price-monitor ├── admin │ ├── pom.xml │ ├── src/main/java/com/house │ ├── ├── AdminApplication.java │ ├── ├── aop │ ├── ├── config │ ├── ├── constant │ ├── ├── controller
基于ssm框架的空气质量监控平台设计与实现中期答辩 本次中期答辩主要介绍我们设计与实现的基于ssm框架的空气质量监控平台。首先,我们介绍了整个项目的需求分析和系统设计,然后我们重点介绍了前端页面的设计和后台的实现。 在需求分析和系统设计阶段,我们充分考虑了监控平台的主要功能和用户界面设计。为了方便用户了解气体的浓度,我们设计了实时显示气体浓度的界面,并允许用户通过地图实时获取气体浓度等信息。为了充分满足城市对空气质量监测要求,我们还设计了数据分析和报表功能,以便用户可以深入了解空气质量监测的相关数据和分析结果。 在前端页面的设计实现中,我们使用了Bootstrap框架,使得前端页面具有良好的响应式布局。我们还使用了Echarts和Highcharts等插件,展示了空气质量监控相关的图表和数据可视化信息。后台功能实现方面,我们采用了SpringMVC+Spring+Mybatis的ssm三大框架。因为这些框架具有易用性、灵活性和可扩展性的特点,使得后台数据查询和处理都很快速和方便。同时,我们使用了Redis、Druid等开源技术来增加系统的安全性和稳定性。 总体来看,我们的空气质量监控平台设计与实现非常成功,实现了大部分的要求,并提高了用户体验。未来,我们将继续改进和优化系统功能和性能,以期提高用户使用的满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值