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实现Tab自动补全和历史命令管理的方法
Mar 12 Python
python中循环语句while用法实例
May 16 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
tensorflow 获取变量&amp;打印权值的实例讲解
Jun 14 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
python pandas dataframe 去重函数的具体使用
Jul 20 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
php自定义session示例分享
2014/04/22 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php实现网页端验证码功能
2017/07/11 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
python在不同层级目录import模块的方法
2016/01/31 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
Python如何生成树形图案
2018/01/03 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
string = null 和string = ''的区别
2013/04/28 面试题
党校培训思想汇报
2014/01/03 职场文书
家长评语大全
2014/01/22 职场文书
药店主任岗位责任制
2014/02/10 职场文书
运动会获奖感言
2014/02/11 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
实习证明格式范文
2014/10/14 职场文书
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server