数据获取

空气质量数据来源于空气质量监测系统,各地区均有官方的该系统可以获取数据。

数据说明

日级别数据表头如下图所示,包含站点信息、空气质量六项污染物浓度及分指数(IAQI)、空气质量指数(AQI)、首要污染物以及空气质量指数级别。

小时级别数据表头如下表所示,包含指标与日级别数据相比仅少了编码一列,其他完全相同。

无论是日级别数据还是小时级别数据,本系列专题不分析其IAQI,编码及AQI级别颜色也忽略。

数据预处理

数据预处理方式比较简单,主要有以下几个处理方法:

  • AQI出现异常值则删除整条记录
  • AQI出现空值则删除整条记录
  • 出现重复记录时保留第一条记录
  • 对删除的记录使用线性插值填充
df = df[pd.notna(df['AQI'])]
df = df[df['AQI'] > 0]
df =df.drop_duplicates(keep='first').interpolate(method='linear')

空气质量监测数据一般是经过审核的,所以只需要简单的处理即可,关键的地方是如何巧妙地将需要的所有数据整合在一起,使程序自动处理,文末附上日报及实时报数据通用的处理代码。

def data_combine(self, folder_path, year_list, is_daily):"""原始数据整合及预处理:param folder_path: 数据所在文件夹路径:param year_list: 年份列表:param is_daily: 是否是日级别(目前仅有日级别数据和时级别数据):return: 整合后的数据"""try:if is_daily:data_type = '日报'else:data_type = '实时报'if len(year_list) == 0:logger.info('要分析的年份数为0,分析程序终止!')return 0else:same_file_name = folder_path.joinpath(os.path.basename(folder_path) + str(year_list[0]) + '年AQI' + data_type + '数据.xls')df = pd.read_excel(io=same_file_name, skiprows=5, header=None)if len(year_list) > 1:for year in year_list[1:]:full_file_name = folder_path.joinpath(os.path.basename(folder_path) + str(year) + '年AQI' + data_type + '数据.xls')dfx = pd.read_excel(io=full_file_name, skiprows=5, header=None)df = pd.concat([df, dfx])if is_daily:df = df.loc[:, [0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 17, 18]]else:df = df.loc[:, [0, 1, 2, 3, 5, 7, 9, 11, 13, 15, 16, 17]]df.columns = ['date', 'city', 'station', 'SO2', 'NO2', 'PM10', 'CO', 'O3', 'PM2.5', 'AQI', 'MP','AQI_LEVEL']df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')df.set_index('date', inplace=True)df['year'] = df.index.yeardf['month'] = df.index.monthdf['day'] = df.index.dayif not is_daily:df['hour'] = df.index.hourdf = df[pd.notna(df['AQI'])]df = df[df['AQI'] > 0]df = df.drop_duplicates(keep='first').interpolate(method='linear')df['AQI_LEVEL'] = df['AQI'].map(self.number_to_flag)logger.info(os.path.basename(folder_path) + data_type + "数据时间范围:" + str(df.index[0]) + " ~ " + str(df.index[-1]))return df.drop_duplicates(keep='first')except Exception as e:logger.error(e)return 0

后记

以上处理过程难度不大,但是需要勤加练习,能熟练写出数据处理部分的代码。下期进行空气质量数据年变化分析。

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

【空气质量数据分析专题二】数据获取及预处理相关推荐

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

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

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

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

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

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

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

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

  5. 数据分析(二)数据预处理

    数据分析(二)数据预处理 缺失值处理 删除法 填补法 异常值检测 基于统计 基于距离 错误发现与修复 变量离散化 无监督离散化:根据数据本身的分布特征 有监督离散化:根据真实的数据类别信息 变量标准化 ...

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

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

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

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

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

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

  9. python晋江文学城数据分析(二)——数据预处理

    晋江文学城数据分析(一)--爬虫(BeautifulSoup正则)_kpl_22b的博客-CSDN博客 承接上文,将爬好的数据用python和jupyter进行处理分析. 目录 1初步探索 2数据清洗 ...

  10. 2021年全国研究生数学建模竞赛华为杯B题空气质量预报二次建模求解全过程文档及程序

    2021年全国研究生数学建模竞赛华为杯 B题 空气质量预报二次建模 原题再现:   大气污染系指由于人类活动或自然过程引起某些物质进入大气中,呈现足够的浓度,达到了足够的时间,并因此危害了人体的舒适. ...

最新文章

  1. 集锦 | 新冠图像数据分析论文集合
  2. DNS,edns,httpdns杂谈
  3. python自带的shell是什么-python shell是什么东西
  4. 性能测试应该怎么做?
  5. OpenCV3 Java 机器学习使用方法汇总
  6. zipkin brave mysql_zipkin mysql表结构
  7. objective-c block 旧版详解
  8. 是单向链表吗_一步一步教你从零开始写C语言链表
  9. eclipse php 代码风格,关于更改Zend Studio/Eclipse代码风格主题的介绍
  10. 图解操作系统系列-概述
  11. Initial Audio Trap Phantom Heatup3 Expansion for mac(Heatup3扩展预设)
  12. android五中布局 四大组件,Android 四大组件五大布局
  13. 添加内核驱动模块(2)(mydriver.c+ Konfig+Makefile )
  14. TCL语言中的执行顺序
  15. Allegro 17.4 PCB设计流程与经验
  16. double转int方法为 去尾法
  17. 运维就是一场没有硝烟的战争
  18. chrome无法访问商店,打不开网页怎么办,五步轻松解决
  19. 大型剪纸艺术——美到惊奇
  20. 力扣1024视频拼接

热门文章

  1. 尚硅谷周阳老师 - Docker课程学习
  2. LCD LVDS的一些术语定义
  3. 猿创征文|我的技术成长之路C++
  4. 手把手教您:iOS 6.1~6.12 完美越狱教程
  5. 计算机网络(自顶向下方法)-应用层
  6. 计算文件的md5值(Vue)
  7. 自动驾驶上的三种感知传感器(激光、毫米波雷达和摄像头)优缺点比较
  8. 第四周作业part1
  9. 小学C++编程入门书籍及相关资料介绍(一)
  10. 使用pandas的merge出现Empty DataFrame 和 Index: []