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

news/2024/4/29 12:18:32/文章来源:https://blog.csdn.net/m0_72318954/article/details/128139810

目录

一、实验内容

二、完成情况

三、数据分析

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.luyixian.cn/news_show_228864.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10-18-hive-元数据及其他方式与hive交互

10-hive-元数据及其他方式访问hive&#xff1a; 使用元数据服务的方式访问 Hive (类似将hive提供了一个服务端) 1&#xff09;在hive-site.xml 文件中添加如下配置信息 <!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</nam…

[附源码]计算机毕业设计SpringBoot网上鲜花购物系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Day16-购物车页面-商品列表修改购物车商品的勾选状态

提纲挈领&#xff1a; 我的操作&#xff1a; 1》当用户点击 radio 组件&#xff0c;希望修改当前商品的勾选状态&#xff0c;此时用户可以为 my-goods 组件绑定 radio-change 事件&#xff0c;从而获取当前商品的 goods_id 和 goods_state&#xff1a; 定义 radioChangeHandle…

leetcode-每日一题-1779-找到最近的有相同 X 或 Y 坐标的点(简单,数学思想)

今天这道每日一题很简单&#xff0c;没啥可说的&#xff0c;细心点即可 1779. 找到最近的有相同 X 或 Y 坐标的点 难度简单73收藏分享切换为英文接收动态反馈 给你两个整数 x 和 y &#xff0c;表示你在一个笛卡尔坐标系下的 (x, y) 处。同时&#xff0c;在同一个坐标系下给你一…

GEE开发之Modis_GPP数据分析和获取

GEE开发之Modis_GPP数据分析和获取1.GPP2.MOD系列和MYD系列区别3.MOD17A2H(500m/8天)4.MYD17A2H(500m/8天)4.1 MYD17A2H下的指数4.2 遥感影像查看5.GPP日数据下载(以MYD17A2H为例)6.GPP月数据下载(以MYD17A2H为例)7.GPP年数据下载(以MYD17A2H为例)前言&#xff1a;主要介绍利用…

flask入门教程之数据库保存

计算机操作数据时&#xff0c;一般是在内存中对数据进行处理&#xff0c;但是计算机的内存空间有限&#xff0c;服务器操作大量数据时&#xff0c;容易造成内存不足&#xff0c;且一旦计算机关机&#xff0c;则内存数据就丢失。所以我们需要将数据进行存储。 持久化&#xff0…

Java 基础数据类型占用内存空间和字符串编码简介(二)

Java 基础数据类型占用内存空间简介一 计算机简介1.基本概念2.CPU 三级缓存3.本机参数查看二 数据占用内存情况1.多线程Demo2.结果解析1.直接计算2.volatile 计算3.缓存行填充一 计算机简介 结合多线程计算机的硬件&#xff0c;从侧面理解数据存储如何影响我们的程序 1.基本概…

门面/外观模式

一、门面模式 1、定义 门面模式&#xff08;Facade Pattern&#xff09;又称作外观模式&#xff0c;是指提供一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;属于结构型设计模式。 门面模式的主要特征是定义了一个高层接口&#xff0c;让子系统更容易使用。…

自然语言处理NLP——ERNIE-M:基于回译机制的“预训练-微调”多语言模型

目录 系列文章目录 一、背景介绍 1.多语言任务 1.1 多语言任务定义 1.2 多语言任务难题 2.多语言模型 2.1 多语言模型定义与原理 2.2 多语言模型困难 3.论文简介 3.1 背景与开发动机 3.2 论文梗概 3.3 论文贡献与成就 二、相关工作 1.预训练方法 1.1 预训练方法…

Tomcat的安装、在idea中的使用以及创建Web项目

目录Tomcat的安装Tomcat运行Tomcat在idea中的使用创建Web项目最后Tomcat的安装 Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。 下载windows64位&#xff0c;版本自行选择。 下载好之后找到压缩包进行解压&#xff0c;注意目录不要有中文且…

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

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

[附源码]Python计算机毕业设计SSM篮球馆预约小程序(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

TypeScript(TS)基础内容详细介绍

目录 一、TypeScript概念 二、TypeScript特点 三、开发环境配置 四、初识ts 五、TypeScript类型声明 1、any&#xff1a; 2、number数字类型 3 string字符串类型 4 boolean布尔类型 表示逻辑值&#xff1a;true 和 false。 5 数组类型 6 元组类型 7 enum枚举类型…

Java8 函数式编程【基础篇】

Java 8是Java在保持向后兼容的前提下首次迈出重要一步&#xff0c;相比之前&#xff0c;不再是只对类库的改良&#xff0c;在编写复杂的集合处理、并行化执行、代码简洁度等方面都有颠覆性的提升。本文将探索和理解函数式编程的含义&#xff0c;以及它在Java 8中的实现。 一、…

全光谱台灯对孩子有伤害吗?儿童用台灯的好处和坏处是什么

全光谱台灯是指灯光色谱丰富度与太阳光一般全面的台灯&#xff0c;这样的灯光照射下的任何物体&#xff0c;不但颜色丰富多彩&#xff0c;而且极其真实&#xff0c;无限接近太阳光下的真实色彩&#xff0c;对人眼舒适度有巨大的提升&#xff0c;所以全光谱台灯不但对孩子无害&a…

【文件I/O】标准IO:库函数

标准IO&#xff1a;库函数一、基本概念1.文件类型2.标准I/O介绍3.流的概念4.文本流和二进制流5.流的缓冲类型6.标准I/O流&#xff08;stdin、stdout、stderr&#xff09;二、标准I/O函数1.fopen、fclose、errrno、strerror、perror&#xff08;打开、关闭文件&#xff0c;输出错…

小程序开发音视频问题汇总及解决方案

目录 问题一&#xff1a;开发音视频&#xff0c;必用的两个小程序组件live-player和live-pusher&#xff0c;他们做什么用的&#xff0c;怎么才能使用&#xff1f; 问题二&#xff1a;一个页面只能插入一个 问题三&#xff1a;真机调试图片预览及视频全屏无反应 问题四&am…

在vue项目中下载swiper出现:Do not use ‘new’ for side effects报错问题

我报错的情况是&#xff1a;我在单文件组件vue文件中使用new Swiper&#xff0c;报了两个错误&#xff0c;图示&#xff1a; 第一个错误是&#xff1a;‘Swiper’ is not defined 第二个错误是&#xff1a;Do not use ‘new’ for side effects 解决办法&#xff1a; &#x…

5G无线技术基础自学系列 | MU-MIMO原理

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 MU-MIMO是指多个用户在上下行数据传输时…

【Linux】命令

常用命令 帮助&#xff08;Manual Pages&#xff0c;Manual&#xff1a;手册&#xff0c;特指参考文件&#xff09; man man <command_name> 打开目录&#xff08;change directory&#xff09; cd /etc/ cd /home 查看当前所在目录 pwd 创建一个名为 file 的文件&…