目录

缺失值处理

拉格朗日差值法的理论基础

拉格朗日插值法代码实现

其他数据预处理方法


缺失值处理

处理缺失值常用的办法可分为三类:删除记录、数据插补、不处理。

其中常见的数据插补法有:

如果通过删除小部分的数据就可以达到既定的目标,且不会影响结果的准确性,那么这无疑是最简单有效的。但是,在不了解情况的时候还是不要这样冒险比较好,因为删除数据是所有老板最不愿意看见的,不但浪费了很大的资源,也丢弃了大量有可能隐藏在缺失值记录中的信息。

这里我们主要说一说拉格朗日插值法,主要讲这个方法,是因为大学数值分析课上,认为这个方法最好,哈哈,其他方法有兴趣的同学也可以试一试。除了拉格朗日插值法,还有牛顿插值法、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代码相关推荐

  1. 拉格朗日插值法——python代码实现

    一.拉格朗日的基本思想: 二.线性插值 三.多个点 四.代码实现 def lagrange(xx,y):l=len(y)l_n = 0for k in range(l):xxx=xx.copy()x_ ...

  2. 解读 拉格朗日插值法python,保你学明白

    文章目录 概述拉格朗日插值法 什么是插值法 拉格朗日插值法的原理 拉格朗日公式 拉格朗日插值法的代码实现 Python 进行拉格朗日插值的主要知识点 Polyfit 函数 Polyval 函数 Lin ...

  3. 拉格朗日插值python代码_Python实现的拉格朗日插值法示例

    本文实例讲述了Python实现的拉格朗日插值法.分享给大家供大家参考,具体如下: 拉格朗日插值简单介绍 拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法. 许多实际问题中都 ...

  4. 拉格朗日插值法--python

    数据分析 数据清洗:缺失值处理.1删除记录 2数据插补 3不处理 数据 链接:https://pan.baidu.com/s/1jiIOoselsqVQR4P_EaS3pA 提取码:t970 常见插补 ...

  5. 拉格朗日插值法+python实现

    拉格朗日插值法 1.数学原理 1.1 线性插值 1.2二次插值 1.3 n次拉格朗日插值多项式 2.Python实现 本文将介绍拉格朗日插值法得数学原理,并用Python实现. 1.数学原理 首先我们 ...

  6. 拉格朗日插值法python实现

    目录 1.原理 2.涉及的Python库 3.例子 1.原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: L(x)=∑j= ...

  7. python必备基础代码-机器学习算法基础(使用Python代码)

    介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...

  8. 机器学习算法基础(使用Python代码)

    介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...

  9. 机器学习算法基础之使用python代码

    介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...

最新文章

  1. Spring MVC常用注解说明
  2. perl 对ENV环境变量的使用
  3. 如此火爆的ZooKeeper,到底如何选主?
  4. python popen函数讲解_Python常用模块函数代码汇总解析
  5. OpenGL使用深度剥离命令获得独立的透明度
  6. session与cokkie区别
  7. JMeter:生成漂亮的多维度的HTML报告
  8. mysql基础之mariadb galera集群(多主)
  9. CSS——淘宝-产品详情的制作
  10. ideaIU--2018.2.2安装教程
  11. 自助缴费终端无线联网方案
  12. 关于错误“未能加载文件或程序集”的错误的若干处理办法——对GAC的简单应用
  13. 2023辽宁安全员(B证)模拟考试试卷
  14. elementUI上传图片后删除
  15. Python ABC(抽象基类)
  16. 制作移动端手机网站过程中的SEO优化方法技巧
  17. Java如何使用直接内存?
  18. 江工网:江苏省公务员一年能考几次
  19. 最优化理论—单纯形法的C++实现(大M法)
  20. 人机交互-广州DACAI触摸屏开发中遇到的一些(屏幕和编程)问题

热门文章

  1. ASP.NET获取路径的方法
  2. 将枚举的键值绑定到下拉列表框
  3. Angular2学习笔记——在子组件中拿到路由参数
  4. linux tar order
  5. jq-实战之表格筛选
  6. HDU 3605Escape(缩点+网络流之最大流)
  7. QT事件的接受与忽略
  8. 有人知道 I3C 吗?
  9. 计算机专业的学生该选择日后的人生道路?继续从事IT还是考公务员……
  10. dns 320 linux,linux 下 dns服务器(三 配置篇)