五、空气质量分析与结果展示

5.1 实验背景

近年来随着城市化和工业化的发展,城市空气质量越来越差,从中央到地方各级政府对城市空气质量也越发重视。并对全国各个城市的空气质量进行了长期的采样。下面对全国空气质量进行分析,可以得出我国城市空气质量的大概规律。

数据介绍

  • time 时间
  • city 城市
  • AQI 根据细颗粒物、可吸入颗粒物、二氧化硫、二氧化氮、臭氧、一氧化碳等六项参数综合得出的空气污染程度及空气质量状况的表述。
  • PM2.5 细颗粒物又称细粒、细颗粒、PM2.5。细颗粒物指环境空气中空气动力学当量直径小于等于 2.5微米的颗粒物。它能较长时间悬浮于空气中,其在空气中含量浓度越高,就代表空气污染越严重。
  • PM10 总悬浮颗粒物是指漂浮在空气中的固态和液态颗粒物的总称,[1]其粒径范围约为0.1-100 微米。有些颗粒物因粒径大或颜色黑可以为肉眼所见,比可吸入颗粒物如烟尘。
  • so2 二氧化硫
  • no2 二氧化氮
  • Co 一氧化碳
  • o3 臭氧
  • primary_pollutant 空气质量指数

5.2 导入支持库

5.2.1 导入支持库

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
import matplotlib as mpl
import matplotlib.pyplot as plt

5.2.2 设置pandas列属性

pd.set_option('display.max_columns', None)

5.2.3 设置中文显示

mpl.rcParams["font.sans-serif"]=["SimHei"]
# 用来正常显示中文标签
mpl.rcParams["axes.unicode_minus"]=False
# 用来正常显示负号,解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串

5.3 数据探查和处理

5.3.1 读取数据源

data = pd.read_csv('../data/air.csv')

5.3.2 简单查看数据特征

data.shape
data.columns

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxnNbmBd-1628843509117)(Matplotlib基础课程.assets/Matplotlib_08_1.png)]

data.dtypes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-acIPR6tl-1628843509118)(Matplotlib基础课程.assets/Matplotlib_08_2.png)]

5.3.3 数据特征值初步分析

AQI_min = data.AQI.min()
AQI_max = data.AQI.max()
display(AQI_min, AQI_max)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oWc1b0kh-1628843509119)(Matplotlib基础课程.assets/Matplotlib_08_3.png)]

AQI_cut = pd.cut(data.AQI, bins = [AQI_min, 50, 100, 150, 200, 300, AQI_max])
AQI_count = AQI_cut.value_counts()
AQI_count

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XebU3dZp-1628843509120)(Matplotlib基础课程.assets/Matplotlib_08_4.png)]

5.4 绘图简单分析

5.4.1 绘制AQI分布的柱状图

def func1():X = np.arange(len(AQI_count))Y = AQI_countplt.figure(figsize=(8,6))plt.bar(X,Y,color='steelblue',alpha=0.8)plt.title('AQI分布图')plt.xlabel('AQI区间')plt.ylabel('2014-2018年AQI天数')plt.xticks(np.arange(len(AQI_count)),AQI_count.index, rotation=30)plt.ylim([0,320000])percents = [str(round(i*100,2)) + '%'for i in AQI_count / AQI_count.sum()]for x,y,z in zip(X,Y,percents):plt.text(x-0.2,y+5000,z)plt.savefig('1.png')
func1()

5.4.2 绘制全国污染程度饼图

# 全国污染程度饼图
def func2():labels = ['良(50,100]','优(0,50]','轻度污染(100,150]','中度污染(150,200]','重度污染(200,300]','严重污染(300,1210]']x = [i for i in AQI_count / AQI_count.sum()]colors= ['#32CD32','#FFDAB9','#8A2BE2','#2442aa','#dd5555','#FFFF00']explode = [0,0.1,0,0,0,0]   plt.pie(x=x,#绘图的数据labels=labels,#数据标签colors=colors,#饼图颜色autopct='%.1f%%',#设置百分比startangle=180,#设置初始角度#frame=1,#center=(2,2)explode=explode,#设置突出显示radius=2#设置饼的半径)plt.savefig('2.png')
func2()

5.4.3 空气指数和pm2.5的关系

# AQI与PM2.5的关系
def func3(pollutant,num1,num2):data2 = data[data[pollutant] < num1] #利用drop方法将含有特定数值的列删除data2 = data2[data2[pollutant] != 0]data2 = data2[data2['AQI'] < num2]data2 = data2[data2['AQI'] != 0]plt.scatter(data2.AQI, data2[pollutant],s=5)plt.xlabel('AQI')plt.ylabel(pollutant)plt.title('AQI与%s的关系' % pollutant)plt.savefig('%s.png' % pollutant)
func3('PM2.5',700,500)

5.4.4 AQI与PM10的关系

# AQI与PM10的关系
func3('PM10',1000,500)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZG2Jezy-1628843509124)(Matplotlib基础课程.assets/Matplotlib_08_8.png)]

5.4.5 AQI与SO2的关系

# AQI与SO2的关系
func3('SO2',800,500)

5.4.6 AQI与NO2的关系

# AQI与NO2的关系
func3('NO2',300,500)

5.4.7 AQI与CO的关系

# AQI与CO的关系
func3('CO',25,500)

5.5 复杂绘图分析

5.5.1 全国一线及新一线AQI平均值排名

def func4():yixian_city = data[(data.city=='北京')|(data.city=='上海')|(data.city=='广州')|(data.city=='深圳')|(data.city=='成都')|(data.city=='杭州')|(data.city=='重庆')|(data.city=='武汉')|(data.city=='苏州')|(data.city=='西安')|(data.city=='天津')|(data.city=='南京')|(data.city=='郑州')|(data.city=='长沙')|(data.city=='沈阳')|(data.city=='青岛')|(data.city=='宁波')|(data.city=='东莞')|(data.city=='无锡')].groupby("city")["AQI"].mean().sort_values(ascending=False)plt.figure(figsize=(12,8))plt.barh(np.arange(len(yixian_city)), yixian_city,color='#FF0000')plt.yticks(np.arange(len(yixian_city)), yixian_city.index)plt.xlabel('AQI')plt.ylabel('城市')plt.title('全国一线城市及新一线城市AQI平均值排名')plt.savefig('3.png')
func4()

5.5.2 数据时间处理

data['year'] = pd.to_datetime(data['time']).dt.year
data['month'] = pd.to_datetime(data['time']).dt.month
data

5.5.3 全国按月份污染物平均值走势

# 全国按月份污染物平均值走势
def func5():country_city = data.groupby('month').mean().sort_index()country_city2 = country_city[["AQI","PM2.5","PM10","SO2","NO2","CO"]]plt.figure(figsize=(12,8))plt.plot(country_city2,label=country_city2.columns,marker = "o" ,mec = "k" , mfc = "w" , mew = 0.5)plt.legend(country_city2)plt.xticks(np.arange(1,13))plt.xlim([1,12])plt.xlabel('月份')plt.ylabel('污染物')plt.title('全国污染物平均值走势')plt.savefig('4.png')
func5()

5.5.4 沿海代表城市与内地代表城市

# 沿海代表城市与内地代表城市
def func6():yanhai = data[(data.city=='天津')|(data.city=='深圳')|(data.city=='广州')|(data.city=='上海')].groupby("month")["AQI"].mean()neidi = data[(data.city=='洛阳')|(data.city=='成都')|(data.city=='西安')|(data.city=='贵阳')].groupby("month")["AQI"].mean()plt.figure(figsize=(12,8))plt.plot(yanhai,label='沿海',marker = "o" ,mec = "k" , mfc = "w" , mew = 0.5)plt.plot(neidi,label='内地',marker = "o" ,mec = "k" , mfc = "w" , mew = 0.5)plt.legend(['沿海代表城市','内地代表城市'])plt.xticks(np.arange(1,13))plt.xlim([1,12])plt.xlabel('月份')plt.ylabel('AQI平均值')plt.title('沿海代表城市与内地代表城市AQI平均值走势')plt.savefig('5.png')
func6()

5.5.5 每年污染物柱状图

# 每年污染物柱状图
def func7_1(year):return [data[data.year==year]['AQI'].mean(),data[data.year==year]['PM2.5'].mean(),data[data.year==year]['PM10'].mean(),data[data.year==year]['SO2'].mean(),data[data.year==year]['NO2'].mean()]def func7():plt.figure(figsize=(12,8))labels = ["AQI","PM2.5","PM10","SO2","NO2"]#设定每个柱子的宽度bar_width = 0.15x=0for i in [2014,2015,2016,2017,2018]:plt.bar(np.arange(5)+x*bar_width,func7_1(i),label=i,alpha=0.8,width=bar_width)x+=1plt.legend()plt.ylim([0,110])plt.xticks([0.295,1.295,2.295,3.295,4.295],labels)plt.savefig('6.png')
func7()

5.5.6 北京污染程度饼图

# 北京污染程度饼图
def func8(city):#查看不同价格区间的AQI,在当前数据集中的占比情况AQI_max = data[data.city==city].AQI.max()AQI_cut = pd.cut(data[data.city==city].AQI, bins = [0, 50, 100, 150, 200, 300, AQI_max])AQI_count = AQI_cut.value_counts()labels = ['良(50,100]','优(0,50]','轻度污染(100,150]','中度污染(150,200]','重度污染(200,300]','严重污染(300,%s]' % AQI_max]x = [i for i in AQI_count / AQI_count.sum()]colors= ['#32CD32','#FFDAB9','#8A2BE2','#2442aa','#dd5555','#FFFF00']explode = [0,0.1,0,0,0,0]   plt.pie(x=x,#绘图的数据labels=labels,#数据标签colors=colors,#饼图颜色autopct='%.1f%%',#设置百分比startangle=180,#设置初始角度explode=explode,#设置突出显示radius=1.5#设置饼的半径)plt.savefig('%s.png' % city)
func8('北京')

5.5.7 广州污染程度饼图

# 广州污染程度饼图
def func9():#查看不同价格区间的AQI,在当前数据集中的占比情况AQI_min = data[data.city=='广州'].AQI.min()AQI_max = data[data.city=='广州'].AQI.max()display(AQI_min, AQI_max)AQI_cut = pd.cut(data[data.city=='广州'].AQI, bins = [AQI_min, 50, 100, 150, 200, 207])AQI_count = AQI_cut.value_counts()labels = ['良(50,100]','优12,50]','轻度污染(100,150]','中度污染(150,200]','重度污染(200,207]']x = [i for i in AQI_count / AQI_count.sum()]colors= ['#32CD32','#FFDAB9','#8A2BE2','#2442aa','#dd5555']explode = [0,0.1,0,0,0]    plt.pie(x=x,#绘图的数据labels=labels,#数据标签colors=colors,#饼图颜色autopct='%.1f%%',#设置百分比startangle=180,#设置初始角度explode=explode,#设置突出显示radius=1.5#设置饼的半径)plt.savefig('7.png')
func9()

5.5.8 广州市2017年AQI走势

def func11():result1 = data[(data.city=='广州')&(data.year==2017)]["AQI"]result2 = data[(data.city=='广州')&(data.year==2017)]["time"]      fig = plt.figure(figsize=(12,8))ax = fig.add_subplot(111)#图片对象ax.plot(result2,result1,"-")ax.legend()ax.axis([0,144,0,400]) #画轴的范围month = [0,1,2,3,4,5,6,7,8,9,10,11,12]plt.xticks(np.arange(0,144,11.999),month) #重新设置x轴间隔和刻度值plt.xlabel('月份')plt.ylabel('AQI')plt.title('广州市2017年AQI走势')plt.savefig('9.png')
func11()

五、空气质量分析与结果展示相关推荐

  1. 城市空气质量分析与预测

    城市空气质量分析与预测 一.AQI分析与预测 1.背景信息 2.任务说明 3.数据集描述 二.数据分析流程 基本流程 三.读取数据 1.导入相关的库 2.加载数据集 四.数据清洗 1.缺失值 1.1. ...

  2. Python数据分析系列(2)——美国纽约皇后区空气质量分析

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 天善智能社区地址:https://www. ...

  3. 基于Python的2013-2018全国城市空气质量分析

    基于Python的2013-2018全国城市空气质量分析 项目摘要 本项目使用pandas/numpy工具包对557424条空气质量数据进行导入及清洗,并使用matplotlib/seaborn/py ...

  4. python空气质量分析报告_Python数据可视化:2018年北上广深空气质量分析

    原标题:Python数据可视化:2018年北上广深空气质量分析 作者:法纳斯特,Python爱好者,专注爬虫,数据分析及可视化 就在这周偶然看到一个学弟吐槽天津的空气,不禁想起那段厚德载雾,自强不吸的 ...

  5. python空气质量分析与预测_干货!如何用 Python+KNN 算法实现城市空气质量分析与预测?...

    原标题:干货!如何用 Python+KNN 算法实现城市空气质量分析与预测? 作者 | 李秋键 责编 | 伍杏玲 封图 | CSDN 付费下载自东方 IC 出品 | CSDN(ID:CSDNnews) ...

  6. AQI空气质量分析与预测

    AQI分析与预测 背景信息 AQI全称是Air Quality Index,指空气质量指数,用来衡量空气清洁或者污染的程度,值越小,表示空气质量越好. 本文的分析目标 一.描述性统计 哪些城市的空气质 ...

  7. python写空气质量提醒_Python数据可视化:2018年空气质量分析

    就在本周,我碰巧看到一个学生抱怨天津的空气,我不禁思考的日子他是如此善良的和完善的.没有真相,就无图下面的图片证据.左边的图片是去年2月份.这样的空气真是少见!右边的是Tucao和我第一次买一个口罩! ...

  8. Python数据分析练习:北京、广州PM2.5空气质量分析(1)

    由于雾霾问题,全社会都很关注空气质量,政府也花了很多钱力图改善空气质量.我们作为城市市民经常要问:我们城市的空气质量到底怎样?这几年我们城市的空气质量是在改善还是恶化?我们城市的空气质量与其他城市相比 ...

  9. Python数据分析练习:北京、广州PM2.5空气质量分析(2)

    <接上一篇> 2. 数据分析 2.1 空气质量等级的对比分析 广州2015年与2016年的空气质量等级对比,分别统计全年各个等级的次数占比(例如:Good占比 = Good次数/全年总测量 ...

最新文章

  1. 螳螂捕蝉黄雀在后!地下黑客论坛免费远控木马被曝“后门”
  2. Xamarin.Android部署失败
  3. Spring Schedule关闭订单
  4. java display属性_JavaScript中的style.display属性操作
  5. Shell 快速指南
  6. 【并查集】封锁阳光大学(P1330)
  7. nginx-配置基于ip或域名的虚拟主机
  8. 程序员常用编程工具: VS Code,那些你不得不知道的小知识!
  9. 大学生经验丨帮助应届生、年轻程序员快速成长的 12 个锦囊妙计!
  10. java 课后习题 随机整数最大值和最小值
  11. bzoj 1974: [Sdoi2010]代码拍卖会
  12. centos6.9下rpm方式安装mysql后mysql服务无法启动
  13. getpass函数用法
  14. 阵列信号处理知识点合集
  15. 使php爬虫能够长期运行的一点总结
  16. 快速查看本机公网IP地址
  17. 离线强化学习(Offline RL)系列1:离线强化学习原理入门
  18. 分组和聚合函数的组合使用实操
  19. Java List和String互相转换
  20. buuctf 派大星的烦恼 详解

热门文章

  1. bibtex 格式文件如何导入 Endnote
  2. 计算机照片误删除还能恢复,删除的相片可以恢复吗_电脑误删的照片怎么恢复...
  3. python 节点关系图_在Python中如何分析和识别有向图关系(节点间)
  4. CUDA入门和网络加速学习(一)
  5. win7计算机虚拟内存,Win7虚拟内存怎么设置最好?系统高手告诉你如何更好的设置虚拟内存...
  6. 计算机网络之在浏览器输入“www.xxx.com”后都发生了什么?
  7. python出现warning_Python warning警告出现的原因及忽略方法
  8. 【评测】无血清细胞冻存液
  9. KISSY基础篇乄KISSY之优化实例
  10. Android适配器方法,android – 当创建自己的自定义适配器时,getView()方法如何工作?...