2021华为杯数学建模B题“空气质量预报二次建模” 预处理思路+Python代码

本文详细介绍了2021年华为杯数学建模B题“空气质量预报二次建模”的数据预处理,涉及监测点A、A1、A2、A3的缺失值处理(前后均值填充、随机森林插值、反距离权重插值)和异常值处理(3西格玛原则、非负数据变为0)。数据预处理包括观测点预报数据和实测数据的清洗,旨在为二次建模提供干净的数据集。
摘要由CSDN通过智能技术生成

简介

前阵子和小伙伴做了2021年华为杯研赛的B题“空气质量预报二次建模”,发现数据预处理一块挺有意思的,涵盖了常规的缺失值(随机缺失、指标缺失/列缺失、条目缺失/行缺失)、异常值(偏离正态分布、非负数据为负),以及不常规的协同处理等,一直想着有机会整理一下。

【注】只想看协同处理部分,即“4. 监测点A、A1、A2、A3数据预处理”的可直接转到:[Python] 反距离权重插值案例及代码_的博客-CSDN博客

目录

1. 赛题及数据

1.1 竞赛试题

1.2 数据集预览

2. 监测点A数据预处理

2.1 监测点A一次预报数据处理

2.1.1 缺失值处理

2.1.2 异常值处理

2.2 监测点A实测时数据处理

2.2.1 整行数据缺失:删失处理

2.2.2 缺失值填补法1:前后均值填充

2.2.3?缺失值填补法2:随机森林插值

2.2.4?异常值处理step1:3西格玛原则

2.2.5?异常值处理step2:非负数据变成0

2.3 监测点A实测日数据处理

2.3.1 缺失值填补:用时数据均值填补

2.3.2 异常值处理step1:用时数据均值替换

2.3.3 异常值处理step2:3西格玛原则

2.3.4 异常值处理step3:非负数据变成0

3. 监测点B、C数据预处理?

4. 监测点A1、A2、A3数据预处理?

4.1 监测点A1、A2、A3一次预报数据

?4.2 监测点A1、A2、A3实测时数据处理

4.2.1 缺失值处理step1:反距离权重插值(IDW)

4.2.2 缺失值处理step2:随机森林插补

?4.2.3 异常值处理:3西格玛+非负数据处理

4.3 监测点A1、A2、A3实测日数据处理


1. 赛题及数据

赛题及数据大家可自行前往“中国研究生创新实践系列大赛管理平台”下载,或者直接在网上搜索。

1.1 竞赛试题

2021年B题题目为“空气质量预报二次建模”,简而言之,核心任务是让你用已有的基于WRF-CMAQ模型得到的一次预报数据(包含6个污染物浓度指标和15个气象指标),加上提供的实测数据(6个污染物浓度指标和5个气象指标),在一次预报模型之上,建立一套比它更优的模型,因此叫二次建模。
更优的标准是,使用二次建模预测结果中**“空气质量指数AQI”预报值的最大相对误差应尽量小,且“首要污染物”他预测准确度**尽量高。

1.2 数据集预览

官方提供数据集如下。
附件1 监测点A空气质量预报基础数据
附件2 监测点B、C空气质量预报基础数据
附件3监测点A1、A2、A3空气质量预报基础数据

从附件名字可以推测数据集的内部结构应该基本一致,只是监测点不同而已。事实也是如此,因此下面主要概述监测点A的数据,其他同理。

时间那里有点乱,其实不难理解,重点关注“结束时间”就好,大家的结束日期都是2021年7月13日。
怎么理解呢?
首先,题目对时间表达有一个设定,即7:00代表的时点段为7:00-8:00,23:00代表的时间段是23:00-24:00。在此基础上:
(1)sheet1是预报的数据,题目设定是可以往后预报三天(当天+后两天),因此它站在7月13号预测,可以预测到7月15号。
(2)sheet2是实测时数据,题目设定每天预报的时间是早上七点,也就是说在7月13号做预报时,七点及之前所有真实的数据是可以获取的,因此“实测时数据”截止到7月13号7:00。
◆按道理,“7:00”代表7-8点,那么早上七点预测,“7:00”的数据应该是不可以用的,只能用到6:00(代表6-7点),但是题目自己设定可用,就不给自己增加难度啦~
(3)sheet3是实测日数据,经初步的验证,除O3外(后面会讲),发现“实测日数据≈实测时数据的24h平均”,7月13日时间数据只到早上七点,那它当然没有当天的日数据啦,所以只到7月12号。


2. 监测点A数据预处理

数据预处理一般包括缺失值处理和异常值处理。

缺失值处理十分灵活,通常还要考虑数据实际含义;而且缺失值填补结果的优劣对后续的分析也有较大影响,本文大篇幅也是在进行缺失值的处理。

异常值处理相对而言较为简单,一般分两类异常。一是数据形态的异常,可用3西格玛原则处理;二是逻辑异常,比如数据集出现“非负数值为负”的情况;其他情况需根据具体案例判断是否存在异常。

以下数据处理均在Spyder3.7中进行。

import os
import pandas as pd
import nu
  • 13
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值