目录

一、实验内容

二、完成情况

三、数据分析

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有较强的正相关关系,另外三个成分相关关系弱一些。

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

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

  1. 可视化实例(二)Python绘制堆积柱形图——以北京市空气质量为例

    目录 一.数据介绍及预处理 二.北京市空气质量等级分布 一.数据介绍及预处理 本次可视化的数据集来源于空气质量监测平台,主要内容为北京市2014年1月1日至2020年12月30日AQI数据(空气质量指 ...

  2. 【python与数据分析】实验十四 北京市空气质量回归分析

    目录 [代码一] [结果一] ​编辑[代码二] [结果二] [代码一] #本章需导入的模块 import numpy as np import pandas as pd import matplotl ...

  3. 【python爬虫】js逆向:空气质量在线平台,解决反调试,加密

    js逆向:pyhon爬虫空气质量,无线debugger,AES,DES,MD5加密 前言 解决无限debugger 第一次debugger 第二次debugger 加密解密流程分析 请求数据加密 返回 ...

  4. Python设计KNN算法实现对空气质量的预测

    设计KNN算法实现对空气质量的预测 文章目录 设计KNN算法实现对空气质量的预测 前言 一.任务 二.knn应用 1.引入库 2.读入数据 两行数据之间的欧式距离 KNN算法 完整代码 总结 前言 K ...

  5. Python基于Django城市PM2.5空气质量数据可视化分析

    开发软件:Pycharm + Python3.7 + Django + Echarts + Mysql 实现目标:利用已经收集各个城市包括北京.上海.广州.成都.沈阳的PM2.5空气数据,利用pyth ...

  6. python爬虫爬取(中国空气质量在线监测分析平台)北京PM2.5,2013年至2018年的数据

    要爬取的数据网站如下图所示: 即是爬取该网站2013年12月2日至2018年11月份北京空气质量指数历史数据,其中要爬起的 内容如PM2.5,So2等,即是从这个网页内置的表格中爬取,因为该网站比较有 ...

  7. python股票数据分析实验报告_Python实验报告

    一. 实验原理 ( 要求.任务等 ) (一).Python的开发环境 Python诞生于20世纪90年代初,是一种解释型.面向对象.动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一. 编写 ...

  8. Python爬虫实践:获取石家庄空气质量历史数据(13年至今)

    from urllib.request import urlopen from bs4 import BeautifulSoup import re import numpy import csv i ...

  9. 【Python与数据分析实验报告】Pandas数据分析基础应用

    目录 任务内容 (1)将数据进行转置,转置后型如eg.csv, 缺失值用NAN代替. (2) 对数据中的异常值进行识别并用NA代替. (3) 计算每个用户用电数据的基本统计量,包括:最大值.最小值.均 ...

  10. 空气质量天气质量数据来源整理

    一. 空气质量 1.1 实时 1.1.1 pm25.in 有web界面,并且提供开放API 1.1.2 中国空气质量在线监测分析平台 1.1.3 环保部数据中心 1.2 历史 1.2.1 全国空气质量 ...

最新文章

  1. usaco Sweet Butter(迪杰斯特拉(优先队列优化),bellman_ford算法模板)
  2. 如何在 JBoss AS 7 中使用 Service Archive SAR 文件
  3. android 状态栏 背景色_技术一面:说说Android动态换肤实现原理
  4. 可爱的朋友,你是否有很多问号
  5. emlog模板 超帅的资源娱乐网模板 全版本兼容 修复各种bug
  6. oracle服务开机自启动
  7. java-什么是实例初始化块?
  8. web工程 java中获取工程文件路径
  9. 2018摩拜算法工程师笔试题
  10. hsrp+route-map 解决多路由器多isp
  11. SSH2-Spring Framework2 struts2 hibernate
  12. esp ghost引导_ghost做uefi+gpt 需要什么cmd命令修复引导?
  13. 系统测试:功能测试、健壮性测试、恢复测试、安全测试、压力测试
  14. 转载 | 深度学习中的遥感影像数据集
  15. 决策树常见的面试点整理
  16. 物体检测之SNIPER
  17. SunPinyin代码导读-SLM部分
  18. 卸载windows服务,删除 windows 服务 delete windows service
  19. selenium免登录Java_使用selenium+java模拟登陆今日头条时需要手机验证码登陆,第二次怎么免输入信息登陆?...
  20. C语言编写简单的答题系统(填空题)

热门文章

  1. Ubuntu Linux的虚拟机安装Windows86X虚拟机安装(Ubuntu ISO64Bit)
  2. java 货币格式 转换_Java 转换货币形式
  3. arduino期末考试题
  4. 基于Kotlin、ViewModel、LiveData和LifeCycle开发的Readhub客户端
  5. 中国移动SP短信网关接入平台
  6. 微信小程序的background-image使用
  7. 1岁到1岁半宝宝食谱
  8. web前端--TS基础理论及原理
  9. SQL server 2019和 SSMS下载与安装教程
  10. android ios9 rom,谁说安卓不如苹果?看Android7.0如何逆袭iOS9.3