Python实现的拉格朗日插值法示例


Posted in Python onJanuary 08, 2019

本文实例讲述了Python实现的拉格朗日插值法。分享给大家供大家参考,具体如下:

拉格朗日插值简单介绍

拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。

许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个简单函数,其恰好在各个现测的点取到观测到的值,这个函数可以是代数多项式,三角多项式等。

完整Python示例:

# -*- coding:utf-8 -*-
#拉格朗日插值代码
import pandas as pd #导入数据分析库Pandas
from scipy.interpolate import lagrange #导入拉格朗日插值函数
inputfile = 'catering_sale.xls' #销量数据路径
data = pd.read_excel(inputfile) #读入数据
data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None #过滤异常值,将其变为空值
#自定义列向量插值函数
#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):
 y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数
 y = y[y.notnull()] #剔除空值
 return lagrange(y.index, list(y))(n) #插值并返回插值结果
#逐个元素判断是否需要插值
for i in data.columns:
 for j in range(len(data)):
  if data[i].isnull()[j]: #如果为空即插值。
   data[i][j] = ployinterp_column(data[i], j)
print(data)

运行结果:

            日期           销量
0   2015-03-01  -291.400000
1   2015-02-28  2618.200000
2   2015-02-27  2608.400000
3   2015-02-26  2651.900000
4   2015-02-25  3442.100000
5   2015-02-24  3393.100000
6   2015-02-23  3136.600000
7   2015-02-22  3744.100000
8   2015-02-21  4275.254762
9   2015-02-20  4060.300000
10  2015-02-19  3614.700000
11  2015-02-18  3295.500000
12  2015-02-16  2332.100000
13  2015-02-15  2699.300000
14  2015-02-14  4156.860423
15  2015-02-13  3036.800000
16  2015-02-12   865.000000
17  2015-02-11  3014.300000
18  2015-02-10  2742.800000
19  2015-02-09  2173.500000
20  2015-02-08  3161.800000
21  2015-02-07  3023.800000
22  2015-02-06  2998.100000
23  2015-02-05  2805.900000
24  2015-02-04  2383.400000
25  2015-02-03  2620.200000
26  2015-02-02  2600.000000
27  2015-02-01  2358.600000
28  2015-01-31  2682.200000
29  2015-01-30  2766.800000
..         ...          ...
171 2014-08-31  3494.700000
172 2014-08-30  3691.900000
173 2014-08-29  2929.500000
174 2014-08-28  2760.600000
175 2014-08-27  2593.700000
176 2014-08-26  2884.400000
177 2014-08-25  2591.300000
178 2014-08-24  3022.600000
179 2014-08-23  3052.100000
180 2014-08-22  2789.200000
181 2014-08-21  2909.800000
182 2014-08-20  2326.800000
183 2014-08-19  2453.100000
184 2014-08-18  2351.200000
185 2014-08-17  3279.100000
186 2014-08-16  3381.900000
187 2014-08-15  2988.100000
188 2014-08-14  2577.700000
189 2014-08-13  2332.300000
190 2014-08-12  2518.600000
191 2014-08-11  2697.500000
192 2014-08-10  3244.700000
193 2014-08-09  3346.700000
194 2014-08-08  2900.600000
195 2014-08-07  2759.100000
196 2014-08-06  2915.800000
197 2014-08-05  2618.100000
198 2014-08-04  2993.000000
199 2014-08-03  3436.400000
200 2014-08-02  2261.700000

[201 rows x 2 columns]

附:catering_sale.xls点击此处本站下载

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
定制FileField中的上传文件名称实例
Aug 23 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
Python 分享10个PyCharm技巧
Jul 13 Python
解决Django layui {{}}冲突的问题
Aug 29 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
Python 实现一个计时器
Jul 28 Python
python 两种方法删除空文件夹
Sep 29 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 #Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 #Python
Django之模型层多表操作的实现
Jan 08 #Python
对python mayavi三维绘图的实现详解
Jan 08 #Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 #Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 #Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 #Python
You might like
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
python合并文本文件示例
2014/02/07 Python
Django Highcharts制作图表
2016/08/27 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
python如何导入依赖包
2020/07/13 Python
python如何支持并发方法详解
2020/07/25 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
办公室文员工作职责
2014/01/31 职场文书
工程承诺书怎么写
2014/05/24 职场文书
高考学习决心书
2015/02/04 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
初中重阳节活动总结
2015/05/05 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
Python机器学习之基础概述
2021/05/19 Python
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS