关于问题一中的异常值处理,我选取了拉格朗日插值的方法,但是上篇博客写的模糊,这里写一下:

导入需要的包:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

导入我们的数据集:

data_285=pd.read_excel('附件三:285号和313号样本原始数据.xlsx',sheet_name='操作变量285')
data_285=data_285.iloc[:,1:]
data_285

data_313=pd.read_excel('附件三:285号和313号样本原始数据.xlsx',sheet_name='操作变量313')
data_313=data_313.iloc[:,1:]
data_313


我们检查不符合3σ\sigmaσ原则的数据,并标记为空值:

def three_sigma(data_input):for i in range(data_input.shape[0]):for j in range(data_input.shape[1]):mean=data_input.iloc[:,j].mean()std=data_input.iloc[:,j].std()if abs(data_input.iloc[i,j]-mean)>3*std:data_input.iloc[i,j]=np.nanelse:continuereturn data_input
three_sigma(data_285)


我们检查一下是否存在空值:

data_285.isnull().sum()[data_285.isnull().sum()>0]


我们看一下313的数据集:

data_313_2=three_sigma(data_313)
data_313_2

data_313_2.isnull().sum()[data_313_2.isnull().sum()>0]


我们检查一下空值的位置:

isnull=[]
for i in data_313_2.columns:for j in data_313_2.index:if data_313_2.isnull().loc[j,i]:isnull.append((j,i))
isnull,len(isnull)


第一列为索引位置!

我们测试一下其中的一个值:

data_313_2.loc[37,'S-ZORB.FC_2801.PV']
nan

我们计算计算拉格朗日插值:

from scipy.interpolate import lagrange
#传入存在缺失值的列,缺失值所在0轴坐标index,按前后k个数来计算拉格朗日插值,返回index的拉格朗日插值
def lag_fill(df,i,k):r=0 if (i-k)<0 else (i-k) # python的三目运算符较为特殊l=len(df.index) if (i+1+k)>len(df.index) else (i+1+k)y=df.loc[list(range(r,i))+list(range(i+1,l))] #取index前后k个数据作为y代入拉格朗日函数进行拟合for j in y.index:if y.isnull().loc[j]:y.drop(index=j,inplace=True)x=y.indexlag=lagrange(x.values,y.values)return lag(i)
for i in isnull:fnum=lag_fill(data_313_2.loc[:,i[1]],i[0],1)data_313_2.loc[i[0],i[1]]=fnum
data_313_2


我们看一下上个位置的数据:

data_313_2.loc[37,'S-ZORB.FC_2801.PV']
859.8040999999996

我们检验一下新数据据是否合适:

data_313_2_new=three_sigma(data_313_2)
data_313_2_new

data_313_2_new.isnull().sum()[data_313_2_new.isnull().sum()>0]

isnull_2=[]
for i in data_313_2_new.columns:for j in data_313_2_new.index:if data_313_2_new.isnull().loc[j,i]:isnull_2.append((j,i))
isnull_2,len(isnull_2)

for j in isnull_2:fnum_1=lag_fill(data_313_2_new.loc[:,j[1]],j[0],1)data_313_2_new.loc[j[0],j[1]]=fnum_1
data_313_2_new.isnull().sum()[data_313_2_new.isnull().sum()>0]
Series([], dtype: int64)

再次检查:

data_313_2_new_2=three_sigma(data_313_2_new)
data_313_2_new_2.isnull().sum()[data_313_2_new_2.isnull().sum()>0]

isnull_3=[]
for i in data_313_2_new_2.columns:for j in data_313_2_new_2.index:if data_313_2_new_2.isnull().loc[j,i]:isnull_3.append((j,i))
isnull_3,len(isnull_3)

for m in isnull_3:fnum_2=lag_fill(data_313_2_new_2.loc[:,m[1]],m[0],1)data_313_2_new_2.loc[m[0],m[1]]=fnum_2
data_313_2_new_3=three_sigma(data_313_2_new_2)
data_313_2_new_3

isnull_4=[]
for i in data_313_2_new_3.columns:for j in data_313_2_new_3.index:if data_313_2_new_3.isnull().loc[j,i]:isnull_4.append((j,i))
isnull_4,len(isnull_4)

for n in isnull_4:fnum_3=lag_fill(data_313_2_new_3.loc[:,n[1]],n[0],1)data_313_2_new_3.loc[n[0],n[1]]=fnum_3
data_313_2_new_4=three_sigma(data_313_2_new_3)
data_313_2_new_4.isnull().sum()[data_313_2_new_4.isnull().sum()>0]

我们的结果为:

Series([], dtype: int64)

此时,我们的数据不再有异常值,处理完成!

【实战练习】汽油辛烷值优化建模(三)(问题一关于插值方法的补充)相关推荐

  1. 【实战练习】汽油辛烷值优化建模(一)(题目+数据集)

    先放上题目和数据集: 链接:https://pan.baidu.com/s/15_iDC9Wdx49rUe_Qt2b_Uw 提取码:6666 一.题目 1.背景 汽油是小型车辆的主要燃料,汽油燃烧产生 ...

  2. “华为杯”研究生数学建模竞赛2020年-【华为杯】B题:汽油辛烷值优化建模(附获奖论文和python代码实现)

    目录 摘 要: 1 问题重述 1.1 问题背景 1.2 问题重述 2 模型假设 3 符号说明

  3. “华为杯”研究生数学建模竞赛2020年-【华为杯】B题:汽油辛烷值优化建模(附优秀论文)

    目录 摘 要: 1. 问题重述 1 . 1 问题背景 1 . 2 问题的提出 2. 问题分析 2 . 1 针对问题

  4. 2020研究生数学建模B题——汽油辛烷值优化——获奖论文思路分享

    B题--汽油辛烷值优化 作者序言 B题当时比赛时选的人非常多,可以说占据了近一般的参赛队伍,但是这题蕴含很多小问题,诸多选手也是叫苦连天. 我们队伍利用3天的时间完成这道赛题,最终获得全国一等奖(1. ...

  5. “华为杯”研究生数学建模竞赛2020年-【华为杯】B题:基于数据挖掘技术的汽油辛烷值优化研究(附获奖论文和python代码实现)

    目录 摘 要: 一.问题重述 1.1 研究背景 1.2 问题的提出 二.问题分析

  6. 2020研究生数学建模B题——汽油辛烷值建模 每一问的解决思路与实验结果展示

    ----------------------2021.10.18更新------------------------------           已恢复下载,同时更新论文的 百度网盘的方式下载 链 ...

  7. 2020年第十七届中国研究生数学建模竞赛B题 汽油辛烷值建模

    降低汽油精制过程中的辛烷值损失模型 一.背景 汽油是小型车辆的主要燃料,汽油燃烧产生的尾气排放对大气环境有重要影响.为此,世界各国都制定了日益严格的汽油质量标准(见下表).汽油清洁化重点是降低汽油中的 ...

  8. (最优化理论与方法)第三章优化建模-第一节:优化建模和常见建模技术

    文章目录 一:优化建模概述 二:目标函数的设计 (1)最小二乘法 (2)正则化 (3)最大似然估计 (4)代价.损失.收益函数 (5)泛函.变分 (6)松弛 三:约束的设计 (1)问题本身的物理性质 ...

  9. 2020年第十七届数模竞赛F题 飞行器质心平衡供油策略优化 建模【分享交流】

    飞行器质心平衡供油策略优化 导航不迷路 2020研究生华为杯数学建模比赛题目 题目A:芯片相噪算法 题目B:汽油辛烷值建模 题目C:面向康复工程的脑信号分析和判别建模 题目D:无人机集群协同对抗 题目 ...

最新文章

  1. 皮一皮:原来程序员也是要看天赋的...
  2. Nebula3 渲染系统
  3. PHP 函数调用跟踪
  4. 转行人工智能,不得不温故的数学基础知识
  5. Python中代码书写规范与基本使用
  6. 使用ASP.NET Core MVC的Vue.Js
  7. (译)C++11中的Move语义和右值引用
  8. 斯坦福大学深度学习公开课cs231n学习笔记(9)softmax分类和神经网络分类代码实现
  9. mysql职业要求_运维职业要求
  10. python程序填空_pygame实现成语填空游戏
  11. 南华大学计算机学院团学会成员,【计算机科学与技术学院】计算机学院第九届研究生团学会换届选举会议圆满结束...
  12. 网络安全审计之CMS代码审计
  13. 别翻了,Lambda 表达式入门,看这篇就够了
  14. File类的基本方法实现
  15. 数字化引领LED照明的未来
  16. knif4j 访问不了
  17. 分享Oracle 11G OCP电子版教材(051,052,053)
  18. Faststone 仅3.5 M的截图录屏软件,还有多少惊喜等着我们去挖掘?
  19. Matplotlib进阶:利用rcParams控制图形属性
  20. 线性判别准则和线性分类算法

热门文章

  1. Part14:Pandas批量拆分与合并Excel文件
  2. 43. DDR2内存初始化代码分析-6
  3. 实现 Vue 服务端渲染(Vue SSR)
  4. 统计字符串中每个英文字母的个数
  5. 这五个编程谬论值得大家注意
  6. NIO详解Channel、Buffer、Selector看这一篇就够了
  7. 基于单片机的停车场车位管理系统设计(#0430)
  8. 到底适不适合学习3D建模?这5点少1个都不行
  9. 企业知识管理难?选对系统可解决90%的问题
  10. linux启动ib驱动命令,linux安装IB驱动方法