【python与数据分析】实验十三 北京市空气质量

news2024/11/25 20:43:18

目录

一、实验内容

二、完成情况

三、数据分析

1.问题描述

2.编程思路

3.程序代码

4.程序运行结果

(1)2014年-2019年AQI时间序列折线图 

(2)各年AQI折线图、AQI直方图、PM2.5与AQI散点图、空气质量整体情况的饼图 

​(3)六种空气成分与AQI的散点图 

5.结果分析


一、实验内容

对《北京市空气质量》数据进行数据分析。其中包括数据的导入、预处理、可视化。

二、完成情况

1.完成了《北京市空气质量的数据分析》

2.敲试了听课ppt上的代码,由于内容较多,放于实验报告最后的【附录】部分

三、数据分析

1.问题描述

根据《北京市空气质量》的excel数据对今年北京市空气质量进行分析

2.编程思路

(1)首先导入数据,利用pandas库进行导入

(2)其次进行数据预处理,主要针对异常值,找到后用NAN替代

(3)绘制2014年-2019年AQI时间序列折线图,从空气质量指数的折线图直观地看2014年-2019年北京市空气质量的变化

(4)绘制各年AQI折线图,观看2014-2019年AQI均值的变动情况;绘制AQI直方图,看2014年-2019年AQI的分布;绘制PM2.5与AQI的散点图,分析PM2.5对AQI的影响;绘制质量等级的饼图,观看各个等级所占的比例

(5)在原有代码的基础上又编写了绘制六种空气成分与AQI的散点图,分析各个成分对AQI的影响

3.程序代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt#matplotlib的Pyplot子模块,指定别名为plt
#%matplotlib inline
#将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中。
#Python提供了许多魔法命令,使得在IPython环境中的操作更加得心应手。魔法命令都以%或者%%开头,以%开头的成为行命令,%%开头的称为单元命令。行命令只对命令所在的行有效,而单元命令则必须出现在单元的第一行,对整个单元的代码进行处理。
#执行%magic可以查看关于各个命令的说明,而在命令之后添加?可以查看该命令的详细说明。
plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题
plt.rcParams['axes.unicode_minus']=False
data=pd.read_excel('D:\个人成长\学业\课程\python\实验\题目\北京市空气质量数据.xlsx')  #要注意路径
#指定立即显式所绘图形,且通过参数设置解决图形中文显示乱码问题

data.isnull()
data=data.replace(0,np.NaN)
plt.figure(figsize=(10,5))
#利用函数plt.figure说明图形的一般特征,如这里指宽10高5
plt.plot(data['AQI'],color='black',linestyle='-',linewidth=0.5)
#利用函数plt.plot绘制序列折线图,同时指定折线颜色、线性、线宽等
plt.axhline(y=data['AQI'].mean(),color='red', linestyle='-',linewidth=0.5,label='AQI总平均值')
#在参数y指定位置上画一条平行于横坐标的直线,并给定直线图例文字
#plt.axvline在参数x指定位置上画一条平行于纵坐标的直线,并给定直线图例文字
data['年']=data['日期'].apply(lambda x:x.year)
AQI_mean=data['AQI'].groupby(data['年']).mean().values
#分组计算各年AQI的平均值
year=['2014年','2015年','2016年','2017年','2018年','2019年']
col=['red','blue','green','yellow','purple','brown']
for i in range(6):
    plt.axhline(y=AQI_mean[i],color=col[i], linestyle='--',linewidth=0.5,label=year[i])
#利用for循环绘制多条平行于横坐标的直线,表征各年AQI平均值
plt.title('2014年至2019年AQI时间序列折线图')
plt.xlabel('年份')
plt.ylabel('AQI')
#指定图的标题,横纵坐标的坐标标签
plt.xlim(xmax=len(data), xmin=1)
plt.ylim(ymax=data['AQI'].max(),ymin=1)
#指定横纵坐标的取值范围
plt.yticks([data['AQI'].mean()],['AQI平均值'])
plt.xticks([1,365,365*2,365*3,365*4,365*5],['2014','2015','2016','2017','2018','2019'])
#在指定坐标刻度位置上给出刻度标签
plt.legend(loc='best')
#利用legend在指定位置(best表示最优位置)显式图例
plt.text(x=list(data['AQI']).index(data['AQI'].max()),y=data['AQI'].max()-20,s='空气质量最差日',color='red')
#利用text在指定的行列位置上显式指示文字
plt.show()
#表示此次绘图结束

import warnings
#导入warning模块,并指定忽略代码运行过程中的警告信息
warnings.filterwarnings(action = 'ignore')
plt.figure(figsize=(10,5))
plt.subplot(2,2,1)
#将绘图区域分成2行2列4个单元,且下一副图将在第2个单元显示
plt.plot(AQI_mean,color='black',linestyle='-',linewidth=0.5)
plt.title('各年AQI均值折线图')
plt.xticks([0,1,2,3,4,5,6],['2014','2015','2016','2017','2018','2019','2020'])
plt.subplot(2,2,2)
plt.hist(data['AQI'],bins=20)
#绘制AQI的直方图,图中包含20个柱形条,即将数据分成20组
plt.title('AQI直方图')
plt.subplot(2,2,3)
plt.scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')
#利用scatter绘制PM2.5和AQI的散点图,并指定点的大小、颜色和形状
plt.title('PM2.5与AQI散点图')
plt.xlabel('PM2.5')
plt.ylabel('AQI')
plt.subplot(2,2,4)
tmp=pd.value_counts(data['质量等级'],sort=False)  
#等同:tmp=data['质量等级'].value_counts()
share=tmp/sum(tmp)
labels=tmp.index
explode = [0, 0.2, 0, 0, 0,0.2,0]
plt.pie(share, explode = explode,labels = labels, autopct = '%3.1f%%',startangle = 180, shadow = True)
#利用pie绘制饼图
plt.title('空气质量整体情况的饼图')
plt.show()

fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,5))
#说明绘图区域的宽和高,并指定将绘图区域分成2行2列4个单元。结果将赋值给fig和axes对象。
#可通过fig对整个图的特征进行设置,axes对应各个单元格对象
axes[0,0].plot(AQI_mean,color='black',linestyle='-',linewidth=0.5)
axes[0,0].set_title('各年AQI均值折线图')
axes[0,0].set_xticks([0,1,2,3,4,5,6])
axes[0,0].set_xticklabels(['2014','2015','2016','2017','2018','2019','2020'])
axes[0,1].hist(data['AQI'],bins=20)
axes[0,1].set_title('AQI直方图')
axes[1,0].scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')
axes[1,0].set_title('PM2.5与AQI散点图')
axes[1,0].set_xlabel('PM2.5')
axes[1,0].set_ylabel('AQI')
axes[1,1].pie(share, explode = explode,labels = labels, autopct = '%3.1f%%',startangle = 180, shadow = True)
axes[1,1].set_title('空气质量整体情况的饼图')
#通过图形单元索引的方式指定绘制单元,例如:axes[0,0]表示第1行第1列的单元格
#图标题、坐标轴标签、坐标轴刻度
fig.subplots_adjust(hspace=0.5)
fig.subplots_adjust(wspace=0.5)
#调节各图形单元行或列之间的距离
plt.show()
fig,axes=plt.subplots(nrows=2,ncols=3,figsize=(10,5))
#说明绘图区域的宽和高,并指定将绘图区域分成2行2列4个单元。结果将赋值给fig和axes对象。
#可通过fig对整个图的特征进行设置,axes对应各个单元格对象
axes[0,0].scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')
axes[0,0].set_title('PM2.5与AQI散点图')
axes[0,0].set_xlabel('PM2.5')
axes[0,0].set_ylabel('AQI')
axes[0,1].scatter(data['PM10'],data['AQI'],s=0.5,c='green',marker='.')
axes[0,1].set_title('PM10与AQI散点图')
axes[0,1].set_xlabel('PM10')
axes[0,1].set_ylabel('AQI')
axes[0,2].scatter(data['SO2'],data['AQI'],s=0.5,c='green',marker='.')
axes[0,2].set_title('SO2与AQI散点图')
axes[0,2].set_xlabel('SO2')
axes[0,2].set_ylabel('AQI')
axes[1,0].scatter(data['CO'],data['AQI'],s=0.5,c='green',marker='.')
axes[1,0].set_title('CO与AQI散点图')
axes[1,0].set_xlabel('CO')
axes[1,0].set_ylabel('AQI')
axes[1,1].scatter(data['NO2'],data['AQI'],s=0.5,c='green',marker='.')
axes[1,1].set_title('NO2与AQI散点图')
axes[1,1].set_xlabel('NO2')
axes[1,1].set_ylabel('AQI')
axes[1,2].scatter(data['O3'],data['AQI'],s=0.5,c='green',marker='.')
axes[1,2].set_title('O3与AQI散点图')
axes[1,2].set_xlabel('O3')
axes[1,2].set_ylabel('AQI')
#通过图形单元索引的方式指定绘制单元,例如:axes[0,0]表示第1行第1列的单元格
#图标题、坐标轴标签、坐标轴刻度
fig.subplots_adjust(hspace=0.5)
fig.subplots_adjust(wspace=0.5)
#调节各图形单元行或列之间的距离
plt.show()

4.程序运行结果

(1)2014年-2019年AQI时间序列折线图 

(2)各年AQI折线图、AQI直方图、PM2.5与AQI散点图、空气质量整体情况的饼图 

 (3)六种空气成分与AQI的散点图 

5.结果分析

        从2014年-2019时间折线图可知,AQI有周期性变动,但总体上看AQI逐年降低,即北京市空气质量在逐年改善,这从各年AQI均值折现也可以看出;从直方图可以看出,AQI集中在60~70附近,即良附近,即近年北京市空气质量大多为良,这一点从空气质量等级的饼图可以得到验证;从AQI与空气成分的散点图可以看出,AQI与PM2.5、PM10、CO有较强的正相关关系,另外三个成分相关关系弱一些。

        综上所述,北京市空气质量在逐年改善,但仍需进一步努力;多植树造林,增加绿化面积对改善空气成分有帮助,进而可以改善空气质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/52861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于虚数与复数

关于虚数与复数1 数的分类1.1 实数域1.2 虚数与复数2 复数的性质及其运算2.1 复平面、大小及辐角2.2 复数四则运算2.3 共轭复数2.4 复数的极坐标表示3 欧拉公式3.1 欧拉公式证明3.2 利用欧拉公式表示极坐标3.3 欧拉公式推导三角函数加法定理4 复数的性质、乘法和除法运算和极坐…

catia基本操作

1.2CATIA的基本操作_哔哩哔哩_bilibili ctrl鼠标中键 视图放大缩小 alt鼠标中键 视图平移 Alt Enter 性质 4、中键可以平移图形 中键和左键(或右键)可以实现旋转 按下中键,再按右键,放开右键,拖动鼠标&#xff…

【阿里云】阿里云跨账号内网互通

阿里云VPC对等连接提供连通两个VPC的网络连接,您可以使用私有IP地址直接通信,两个VPC就像在同一个网络中一样。您可以与自己同地域或者跨地域其他VPC之间创建对等连接,也可以与其他账号的同地域或者跨地域VPC之间建立对等连接,同地…

PHP基于thinkphp的旅游见闻管理系统#毕业设计

随着旅游行业的不断发展,各家旅游行业之间的竞争日益激烈,旅游部门所需的信息量越来越大,业务操作中涉及的各种线路情况、用户情况以及旅游协作部门的情况越来越复杂多变。而除了一些个别地区已采用了的旅游网站,一般通常是以原始的手工方式处理/新闻资讯。但是工作人员若仅靠手…

JavaEE Spring MVC 常用注解

RequestMapping ⽤来注册接⼝的路由映射。当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类的某个⽅法的过程就叫路由映射。 Controller //类注解不能忘 RequestMapping("/webcontroller") public class WebController {RequestMapping("/say…

CSDNtop1全栈接口测试教程 jmeter接口测试,接口自动化测试【2】

延时等待(全局性) api 测试⽤例执⾏速度⾮常快,某些时候因为业务的特性想让它延迟⼏秒执⾏,那么这个时候就使⽤延时等待。 参数化 可以理解为:⼀个测试点需要多次操作,并且每次操作数据都是不⼀样但测试步…

机器学习4超参数问题

文章目录一、超参数问题11、超参数:2、如何寻找好的超参数?二、超参数问题2综上所述三、超参数问题3搜索明可夫斯基距离相应的p;更多关于距离的定义:欧拉距离曼哈顿距离进一步推广可以发现其中有一定一致性明可夫斯基距离:&#x…

全网最全(万字整理)_SpringBoot整合ThymeLeaf

文章目录SpringBoot整合Thymeleaf0x01_入门案例0x02_Thymeleaf视图解析简介0x03_Thymeleaf的表达式0x04_Thymeleaf的标签th:textth:eachth:objectth:hrefth:actionth:onclickth:ifth:value0x05_内置对象#dates#Strings#Numbers域对象0x0x_补充一些概念国际化Thymeleaf缓存区重定…

01-09-hive-入门基本概念-hive-mysql安装

01-hive-入门基本概念: 什么是hive hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表&#xf…

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2271 完全立方数32. MT2272 质数率3. MT2273 元素共…

如何修复 Windows 11/10上的 0x8007023e Windows 更新错误

修复 0x8007023e 错误 运行 Windows Update 疑难解答重置 Windows Update 组件使用 DISM 工具修复 Windows Update 客户端从 Microsoft update Catalog 网站下载并安装更新运行 Microsoft 支持和恢复助手系统更新根据 Windows 质量更新服务节奏发布到 Windows 设备。如果当您尝…

zookeeper学习(一)zk特性与节点数据类型详解(2022)

Zookeeper是一个开源的分布式协调框架,主要用来解决分布式集群中应用系统的一致性问题。从设计模式角度来理解其实zk是一个基于观察者模式设计的分布式服务管理框架。 CAP理论: cap理论指出对于一个分布式计算系统来说,不可能同时满足以下三…

COMSOL泰森多边形Voronoi图多孔骨架优化模型受力分析

Voronoi模型 在comsol内建立泰森多边形骨架支撑网格,模型采用一般的多边形泰森多边形孔隙以及样条曲边泰森多边形孔隙做对比研究,分析模型在承受压力荷载下的应力分布。通过comsol的固体力学计算可看出拟圆形Voronoi孔隙支撑结构的应力分布更为合理&…

【LIMU-Bert论文阅读】

LIMU-BERT: Unleashing the Potential of Unlabeled Data for IMU Sensing Applications 题目重点: 充分利用无标签数据适用于IMU传感器应用(并没有指出specfic task) 文章核心: 如何根据IMU数据的特征设计出LIMU-Bert&#xff0c…

基于模糊逼近系统不确项的滑模自适应控制

目录 前言 1.系统描述 2.控制器设计 3.模糊推理估计不确定f 3.1构造模糊系统 3.2模糊推理过程 3.3 自适应律设计 4.仿真分析 4.1仿真模型 4.2仿真结果 5.总结 前言 在一般的建模仿真中,我们假设模型都是可以用数学模型描述出来的是确定的,称…

1. 一些截图方法的比较;2. 将截图直接转换为PDF并拼接,与插入Word后再转换为PDF的对比

1. 一些截图方法的比较 1.1. 有时候当某个软件没有导出功能,或者导出功能受限,比如 tableau public,但又需要获取展示出的可视化信息时,就需要用到截图。如果这些截图还要用在正式文档中,就需要是高清的,至…

Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!

文章目录🏳️‍🌈 1. 数据🏳️‍🌈 2. 绘图2.1 绘制表头2.2 绘制排名、球队以及国旗2.3 绘制身价柱状图2.4 绘制FIFA排名散点图2.5 设置背景2.6 设置标题🏳️‍🌈 3. 更多可视化项目源码数据:大…

关于 find 命令的15个超级有用的例子

find 命令用于在 Linux 命令行中搜索文件和目录。 find 是功能最强大、使用最频繁的命令之一,同时也是选项最多的命令之一,它有50多个选项,很容易让人弄混了,特别是当它与 exec 或 xargs 命令一起使用的时候。 作为系统管理员或…

AI创作教程之 如何在本地 PC 上运行稳定的 Diffusion 2.0 (无代码指南)

AI 的热门图像生成器 Stable Diffusion日前发布了全新的 2.0版本。新版本比以前的版本带来了许多进步和改进。OpenCLIP 中新的深度检测和更好的文本到图像模型是我最兴奋的功能。 查看本文以查看 SD 2.0 中新增功能的完整列表。 在本文中,我将向您展示如何在本地 PC 上试用新…

PHP基于thinkphp的在线教学网站#毕业设计

在线教学系统采用B/S模式,促进了在线教学系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段,管理效率极低,随着用户的不断增多,传统基于手工管理模式已经无法满足当前用户需求,随着信息化时代的到来&am…