使用JupyterLab进行的数据分析
数据集下载

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
import matplotlib as mpl
import matplotlib.pyplot as plt#显示所有列
pd.set_option('display.max_columns', None)from matplotlib.font_manager import _rebuild
_rebuild()
# 支持中文
mpl.rcParams['font.sans-serif'] = [u'SimHei']  # 用来正常显示中文标签
mpl.rcParams['axes.unicode_minus'] = False   # 用来正常显示负号,解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
data = pd.read_csv('air.csv')
# data = DataFrame(df)
# data
data.shape

data.columns

data.dtypes

#查看不同价格区间的AQI,在当前数据集中的占比情况
AQI_min = data.AQI.min()
AQI_max = data.AQI.max()
display(AQI_min, AQI_max)

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

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('C:\\Users\\Administrator\\Desktop\\数据分析图\\1.png')
func1()

# 全国污染程度饼图
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('C:\\Users\\Administrator\\Desktop\\数据分析图\\2.png')
func2()

# 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('C:\\Users\\Administrator\\Desktop\\数据分析图\\%s.png' % pollutant)
func3('PM2.5',700,500)

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

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

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

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

# 全国一线及新一线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('C:\\Users\\Administrator\\Desktop\\数据分析图\\3.png')
func4()

data['month'] = data.time.str[5:7].astype('int')
# 全国按月份污染物平均值走势
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('C:\\Users\\Administrator\\Desktop\\数据分析图\\4.png')
func5()

# 沿海代表城市与内地代表城市
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.index,yanhai,"-",marker = "o" ,mec = "k" , mfc = "w" , mew = 0.5)plt.plot(neidi.index,neidi,"-",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('C:\\Users\\Administrator\\Desktop\\数据分析图\\5.png')
func6()

data['year'] = data.time.str[:4].astype('int')
# 每年污染物柱状图
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('C:\\Users\\Administrator\\Desktop\\数据分析图\\6.png')
func7()

# 北京污染程度饼图
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,#设置初始角度
#            frame=1,
#            center=(2,2)explode=explode,#设置突出显示radius=1.5#设置饼的半径)plt.savefig('C:\\Users\\Administrator\\Desktop\\数据分析图\\%s.png' % city)
func8('北京')

func8('上海')

# 广州污染程度饼图
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,#设置初始角度
#            frame=1,
#            center=(2,2)explode=explode,#设置突出显示radius=1.5#设置饼的半径)plt.savefig('C:\\Users\\Administrator\\Desktop\\数据分析图\\7.png')
func9()

# 深圳污染程度饼图
def func10():#查看不同价格区间的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 = [0, 50, 100, 150, 187])AQI_count = AQI_cut.value_counts()labels = ['良(50,100]','优(0,50]','轻度污染(100,150]','中度污染(150,200]']x = [i for i in AQI_count / AQI_count.sum()]colors= ['#32CD32','#FFDAB9','#8A2BE2','#2442aa']explode = [0,0.1,0,0]    plt.pie(x=x,#绘图的数据labels=labels,#数据标签colors=colors,#饼图颜色autopct='%.1f%%',#设置百分比startangle=180,#设置初始角度
#            frame=1,
#            center=(2,2)explode=explode,#设置突出显示radius=1.5#设置饼的半径)plt.savefig('C:\\Users\\Administrator\\Desktop\\数据分析图\\8.png')
func10()

# 新乡市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('C:\\Users\\Administrator\\Desktop\\数据分析图\\9.png')
func11()

Matplotlib空气质量数据分析(附数据集下载)相关推荐

  1. 2014-2022年4月全国空气质量数据分析

    2014-2022年4月所有城市及站点空气质量数据集(更新中)更新时间不固定 时间范围:2014-2022年4月年 数据来源:中国环境监测总站的全国城市空气质量实时发布平台 数据格式说明距离: 全国城 ...

  2. 空气质量数据分析及web实现

    本次课程设计主要是针对大数据计算框架这门课程的总结,同时利用web进行展示,也是对自己之前学习前端的一次小检验.同时也是自己第一次和同学们进行分工合作完成的作业,自己主要负责对所有的内容整合,并进行w ...

  3. 【空气质量数据分析专题九】污染物浓度小时变化分析

    前言 对空气质量小时级别五年数据进行小时变化分析,可以看出污染物浓度在一天中逐小时变化的特征. 分析流程 对数据进行专题二的预处理后,计算出各污染物全时段的各小时的平均浓度,最后进行可视化分析.处理方 ...

  4. 【空气质量数据分析专题五】污染物浓度年际变化分析

    前言 大气空气质量污染物一般为SO2.NO2 .CO.PM10.PM2.5.O3六项污染物.日级别浓度中,除O3使用最大8小时滑动平均浓度外,其他五项污染物均采用日平均浓度. 除CO浓度单位为mg/m ...

  5. 【空气质量数据分析专题八】污染物浓度日变化分析

    前言 对空气质量日级别五年数据进行日变化分析,可以看出污染物浓度逐日变化的特征. 分析流程 对数据进行专题二的预处理后,计算出各污染物全时段的各日平均浓度,最后进行可视化分析.日变化分析方式有多种,这 ...

  6. 【空气质量数据分析专题七】污染物浓度月变化分析

    前言 对空气质量日级别五年数据进行月变化分析,可以看出污染物浓度随月份变化的特征. 分析流程 对数据进行专题二的预处理后,计算出各污染物全时段的各月平均浓度,最后进行可视化分析.月变化分析方式有多种, ...

  7. 基于主动学习和克里金插值的空气质量推测

    基于主动学习和克里金插值的空气质量推测 常慧娟, 於志文, 於志勇, 安琦, 郭斌 西北工业大学计算机学院,陕西 西安 710072 福州大学数学与计算机科学学院,福建 福州 350108    摘要 ...

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

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

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

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

最新文章

  1. php基于数组的分页实现
  2. 一个特殊的List去重问题的解决方案
  3. 活跃在海底隧道的铁路“小蓝人”
  4. 关于maven各种报错
  5. 关于智能手机的基本知识
  6. linux把程序添加到全局环境变量
  7. LLVM各种格式转换图
  8. 开源问卷工具LimeSurvey:1:概要与安装
  9. cglib 动态代理原理详解
  10. 家庭水族馆,智能加热棒解决方案
  11. Android 动态申请相机权限
  12. 复工第一天,马云给湖畔学员的3点建议和1篇荐文:把萧条看作再发展的飞跃台 | 充电...
  13. micro usb接口正负极_关于手机MicroUSB接口数据线,这里有最详细解说
  14. win7计算机不能设置双屏怎么回事,告诉你win7怎么设置双屏显示
  15. js计算日期差;js计算天数差
  16. 炮轰三国服务器维护,炮轰三国小程序-微信炮轰三国小程序小游戏-游戏宝手游网...
  17. 安卓手机屏幕共享给电脑操作的几款软件
  18. 一文读懂什么是CTO、技术VP、技术总监、首席架构师
  19. 一篇文章学会日志logback的使用
  20. 从程序员到项目经理(21):谁都需要成就感

热门文章

  1. ubuntu 16.04 和 18.04 替换apt源为阿里源
  2. openssh linux 下载,OpenSSH 下载与配置
  3. HTML box盒子模型练习校园风光木棉花
  4. 群狼调研开展电器店神秘顾客暗访违规稽核项目
  5. EtherCAT从站 SII结构说明
  6. mysql数据库存储生僻字_mysql 生僻字存储
  7. 上班族是如何预防电脑辐射的
  8. 王晓昀-PowerDesigner与模型驱动开发-UMLChina讲座-音频和幻灯
  9. 企业如何做好邮件归档稽核
  10. Java编程思想第四版读书笔记——第九章 接口