缺失值处理 - 拉格朗日插值法 - Python代码
目录
缺失值处理
拉格朗日差值法的理论基础
拉格朗日插值法代码实现
其他数据预处理方法
缺失值处理
处理缺失值常用的办法可分为三类:删除记录、数据插补、不处理。
其中常见的数据插补法有:
如果通过删除小部分的数据就可以达到既定的目标,且不会影响结果的准确性,那么这无疑是最简单有效的。但是,在不了解情况的时候还是不要这样冒险比较好,因为删除数据是所有老板最不愿意看见的,不但浪费了很大的资源,也丢弃了大量有可能隐藏在缺失值记录中的信息。
这里我们主要说一说拉格朗日插值法,主要讲这个方法,是因为大学数值分析课上,认为这个方法最好,哈哈,其他方法有兴趣的同学也可以试一试。除了拉格朗日插值法,还有牛顿插值法、Hermite插值法、分段插值法和样条插值法。
拉格朗日插值法在理论分析中很方便,因为他的公式结构紧凑。但是在实际应用中,如果存在差值节点经常增减变化时,拉格朗日插值法的插值多项式也需要随之变化,遇见数据源比较大的时候,这难免有些浪费时间,这个时候,其实牛顿插值法更加适用。
拉格朗日差值法的理论基础
偷懒不愿敲公式,所以直接抛了一个截图,见谅见谅。
拉格朗日插值法代码实现
数据源大概是这样的:
time | count |
2018/5/1 | 106684 |
2018/5/2 | 106644 |
2018/5/3 | 176520 |
2018/5/4 | 152311 |
2018/5/5 | 160264 |
2018/5/6 | |
2018/5/7 | 182263 |
2018/5/8 | 172887 |
2018/5/9 | 160264 |
2018/5/10 | 152704 |
2018/5/11 | 110049 |
2018/5/12 | 136951 |
2018/5/13 | |
2018/5/14 | 143165 |
2018/5/15 | 136951 |
2018/5/16 | |
2018/5/17 | 135287 |
黄色部分是缺失值,需要通过其前后的数据进行插补,下面是代码实现了。
# -*- coding: utf-8 -*-
#拉格朗日法插补空缺值import pandas as pd #导入pandas库
from scipy.interpolate import lagrange #导入拉格朗日函数inputfile = u'E:\\pythondata\\cjm5.xlsx'
outputfile = u'E:\\pythondata\\cjm5_1.xlsx'data= pd.read_excel(inputfile)
data[u'count'][(data[u'count']<100000) | (data[u'count']>200000)] = None #将异常值清空def ployinterp_column(s,n,k=2): #k=2表示用空值的前后两个数值来拟合曲线,从而预测空值y = s[list(range(n-k,n)) + list(range(n+1,n+1-k))] #取值,range函数返回一个左闭右开([left,right))的序列数y = y[y.notnull()]#取上一行中取出数值列表中的非空值,保证y的每行都有数值,便于拟合函数return lagrange(y.index,list(y))(n) #调用拉格朗日函数,并添加索引for i in data.columns: #如果i在data的列名中,data.columns生成的是data的全部列名for j in range(len(data)): #len(data)返回了data的长度,若此长度为5,则range(5)会产生从0开始计数的整数列表if (data[i].isnull())[j]:#如果data[i][j]为空,则调用函数ployinterp_column为其插值data[i][j] = ployinterp_column(data[i],j)data.to_excel(outputfile) #将完成插值后的data写入excel
print("拉格朗日法插补完成,插补后的文件位于:"+str(outputfile))
代码运行结束后会将插补完成的excel文件存在既定的位置(代码中outputfile的位置),我们通过k的值来表示通过缺失值前多少个数值来插补,下面是通过k=2和k=3插补的结果,我们把它画在一个折线图中,直观的判断哪一个k值是更加符合业务实际情况的。
其他数据预处理方法
连续数据离散化(等宽、等频、聚类离散)
清洗重复数据
数据预处理 - 归一化与标准化
缺失值处理 - 拉格朗日插值法 - Python代码相关推荐
- 拉格朗日插值法——python代码实现
一.拉格朗日的基本思想: 二.线性插值 三.多个点 四.代码实现 def lagrange(xx,y):l=len(y)l_n = 0for k in range(l):xxx=xx.copy()x_ ...
- 解读 拉格朗日插值法python,保你学明白
文章目录 概述拉格朗日插值法 什么是插值法 拉格朗日插值法的原理 拉格朗日公式 拉格朗日插值法的代码实现 Python 进行拉格朗日插值的主要知识点 Polyfit 函数 Polyval 函数 Lin ...
- 拉格朗日插值python代码_Python实现的拉格朗日插值法示例
本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...
- 拉格朗日插值法--python
数据分析 数据清洗:缺失值处理.1删除记录 2数据插补 3不处理 数据 链接:https://pan.baidu.com/s/1jiIOoselsqVQR4P_EaS3pA 提取码:t970 常见插补 ...
- 拉格朗日插值法+python实现
拉格朗日插值法 1.数学原理 1.1 线性插值 1.2二次插值 1.3 n次拉格朗日插值多项式 2.Python实现 本文将介绍拉格朗日插值法得数学原理,并用Python实现. 1.数学原理 首先我们 ...
- 拉格朗日插值法python实现
目录 1.原理 2.涉及的Python库 3.例子 1.原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: L(x)=∑j= ...
- python必备基础代码-机器学习算法基础(使用Python代码)
介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...
- 机器学习算法基础(使用Python代码)
介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...
- 机器学习算法基础之使用python代码
介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...
最新文章
- Spring MVC常用注解说明
- perl 对ENV环境变量的使用
- 如此火爆的ZooKeeper,到底如何选主?
- python popen函数讲解_Python常用模块函数代码汇总解析
- OpenGL使用深度剥离命令获得独立的透明度
- session与cokkie区别
- JMeter:生成漂亮的多维度的HTML报告
- mysql基础之mariadb galera集群(多主)
- CSS——淘宝-产品详情的制作
- ideaIU--2018.2.2安装教程
- 自助缴费终端无线联网方案
- 关于错误“未能加载文件或程序集”的错误的若干处理办法——对GAC的简单应用
- 2023辽宁安全员(B证)模拟考试试卷
- elementUI上传图片后删除
- Python ABC(抽象基类)
- 制作移动端手机网站过程中的SEO优化方法技巧
- Java如何使用直接内存?
- 江工网:江苏省公务员一年能考几次
- 最优化理论—单纯形法的C++实现(大M法)
- 人机交互-广州DACAI触摸屏开发中遇到的一些(屏幕和编程)问题