前言

大气空气质量污染物一般为SO2、NO2 、CO、PM10、PM2.5、O3六项污染物。日级别浓度中,除O3使用最大8小时滑动平均浓度外,其他五项污染物均采用日平均浓度。
除CO浓度单位为mg/m3外,其他五项污染物浓度单位均为μg/m3,各污染物浓度对应的级别见《环境空气质量标准》(GB 3095—2012)。

分析流程

对数据进行专题二的预处理后,计算出各污染物各年的年均浓度,最后进行可视化分析。

核心代码

(1)计算各污染物各年年均浓度(需要注意的是,求某指标某时段的均值时,要用该指标该时段的综合除以总记录数,不能分段平均再平均,分段平均再平均只能适用于分段方式为等长度分段

@staticmethod
def each_year_concentration_cal(dft):"""计算某年均浓度:param dft: 该年全年数据:return: 该年各污染物浓度年均值"""return round(np.mean(dft['PM10']), 2), round(np.mean(dft['PM2.5']), 2), round(np.mean(dft['SO2']), 2), \round(np.mean(dft['NO2']), 2), round(np.mean(dft['CO']), 2), round(np.mean(dft['O3']), 2)

(2)可视化分析

def year_trend_analysis(self, df_station, year_list):"""日级别数据年变化分析:param df_station: 站点数据:param year_list: 年份列表:return: None"""all_year_pollutes = list()for year in year_list:df_station_year = df_station[df_station['year'] == year]if len(df_station_year.index) != 0:all_year_pollutes.append(list(self.each_year_concentration_cal(df_station_year)))else:all_year_pollutes.append([np.NAN] * 6)logger.info(df_station['station'].values[0] + '污染物浓度为: ' + str(all_year_pollutes))co_arr = list()for i in range(len(all_year_pollutes)):co_arr.append(all_year_pollutes[i].pop(4))bar_width = 0.1index_pm10 = np.arange(len(all_year_pollutes))index_pm2_5 = index_pm10 + 1.5 * bar_widthindex_so2 = index_pm2_5 + 1.5 * bar_width  # 年份INDEXindex_no2 = index_so2 + 1.5 * bar_widthindex_o3 = index_no2 + 1.5 * bar_widthx_ticks = [str(x) + "年" for x in year_list]fig = plt.figure()ax1 = fig.add_subplot(111)plt.bar(index_pm10, height=[k[0] for k in all_year_pollutes], width=bar_width, label='PM$_{10}$')plt.bar(index_pm2_5, height=[k[1] for k in all_year_pollutes], width=bar_width, label='PM$_{2.5}$')plt.bar(index_so2, height=[k[2] for k in all_year_pollutes], width=bar_width, label='SO$_{2}$')plt.bar(index_no2, height=[k[3] for k in all_year_pollutes], width=bar_width, label='NO$_{2}$')plt.bar(index_o3, height=[k[4] for k in all_year_pollutes], width=bar_width, label='O$_{3}$')ax1.set_ylim(0, 100)ax1.set_yticks(np.linspace(0, 100, 6))plt.legend(ncol=1, loc='upper left', fontsize=8)  # 显示图例plt.ylabel('污染物浓度(${μg}$/m${^3}$)')  # 纵坐标轴标题ax2 = ax1.twinx()ax2.plot(index_pm10 + bar_width * 3, co_arr, label='CO浓度', color='black', marker='o', markerfacecolor='red',markersize=4)plt.ylabel('CO浓度(mg/m${^3}$)')plt.xticks(index_pm10 + bar_width * 3, x_ticks)plt.legend(loc='upper right', fontsize=8)ax2.set_yticks(np.linspace(0, 1.5, 6))plt.grid(axis='y', ls='--')pic_loc0 = Path(self.cf_info['output']['picture']).joinpath(df_station['city'].values[0])pic_loc = pic_loc0.joinpath('污染物年变化特征')if not os.path.exists(pic_loc):os.mkdir(pic_loc)plt.savefig(pic_loc / (df_station['station'].values[0] + str(year_list[0]) + '-' + str(year_list[-1]) + '年各污染物浓度变化.png'),dpi=1200, bbox_inches='tight')plt.show()

结果展示与分析

结果如下图所示,从该图可以看出各污染物年均浓度的变化趋势,有利于对该地区空气质量的变化情况有直观了解。

(图片右键新标签页打开会很清晰)

预告

下期进行污染物浓度季节变化的分析。

以下是本人独自运营的微信公众号,用于分享个人学习及工作生活趣事,大佬们可以关注一波。

【空气质量数据分析专题五】污染物浓度年际变化分析相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 制造业如何进行质量数据分析?附教程,内含大量分析图表!

    目前很多制造型企业拥有了MES.ERP.SPC等业务系统,获得了大量的数据.然而在跨工厂.跨系统的异构数据中,如何找到生产各个环节的规律和异常,如何获得优化见解,是制造型企业面临的关键挑战.通过数据分 ...

  7. Matplotlib空气质量数据分析(附数据集下载)

    使用JupyterLab进行的数据分析 数据集下载 import pandas as pd import numpy as np from pandas import Series, DataFram ...

  8. matlab波形反白,基于MATLAB的海岸污染物浓度扩散实验分析

    海岸污染物图像序列隐含丰富的物质输移扩散的重要特征,通过CCD图片得到所需要的信息具有广泛的应用价值.传统的接触式和单点式测量方法很难全面高效地得到需要的实验结果,而利用CCD等摄像设备进行测量记录, ...

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

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

最新文章

  1. xyplorer保存设置失败_XYplorer设置中文步骤详解教程
  2. Android安全加密:对称加密
  3. 【正一专栏】欧冠决赛点评——只服齐达内,送别布冯
  4. oracle 分表和分区哪个好_互联网大厂有哪些分库分表的思路和技巧?
  5. 蚂蚁金服测试开发工程师面试
  6. 01英语语法-基本句型及补语
  7. PLC可编程控制器实验箱QY-JXSY31
  8. C++算法——字幕校对问题
  9. macOS Monterey 12.3 (21E230) 正式版 ISO、IPSW、PKG 下载
  10. 中南民族大学计算机科学学院转专业好吗,2021年中南民族大学大一新生转专业及入学考试相关规定...
  11. html调用js自动播放音乐,使用html js实现点击文本和播放音乐的功能
  12. js 百分比计算公式,图形填充的百分比
  13. 从MWC 2016看手机发展
  14. discuz论坛网站更换域名的方法及步骤
  15. html img路径 404,webpack css背景图片无法现实,图片路径404
  16. 订单(一)——准备订单数据
  17. node用mongodb还是mysql,Node 操作 mongoDB 数据库和 mySQL数据库
  18. 移动端登录页样式错乱_Web前端导致页面css样式混乱的原因问题,我和小伙伴们惊呆了...
  19. MATLAB 求任意一个数的所有因子
  20. 1455: C语言实验题――数字串求和

热门文章

  1. oracle----过程(procedure)介绍和使用
  2. Xbox One游戏欣赏:Forza 5 我的GT86(头文字D中那辆)
  3. linux hexdump显示格式c数组,linux hexdump使用
  4. 中国元宇宙第一人最早元宇宙布道者元宇宙先驱高泽龙的观点集锦
  5. ups计算软件_在线式和后备式UPS电源的选择和购买(弱电干货)
  6. js获取应用服务器时间,JavaScript获取服务器端时间的方法
  7. 上计算机专业的梦想与目标,坚定升学目标,放飞大学梦想 ——计算机专业部召开强化班战前动员会...
  8. 构建智能家居的神器HomeAssistant
  9. Matlab:叠加阶梯图和线图
  10. java-net-php-python-04海信集团售后管理系统计算机毕业设计程序