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获取豆瓣电影简介代码分享
Jan 16 Python
python数组过滤实现方法
Jul 27 Python
对Python的Django框架中的项目进行单元测试的方法
Apr 11 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
python实现自动发送邮件
Jun 20 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
解决PySide+Python子线程更新UI线程的问题
Jan 11 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 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
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
php cli 小技巧
2013/06/03 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python and、or以及and-or语法总结
2015/04/14 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python实现图片中文字分割效果
2019/07/22 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
python中类与对象之间的关系详解
2020/12/16 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
判断单链表中是否存在环
2012/07/16 面试题
教师实习自我鉴定
2013/12/18 职场文书
教学器材管理制度
2014/01/26 职场文书
个人求职信范文
2014/05/24 职场文书
四风自我剖析材料
2014/09/30 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
学生安全责任协议书
2016/03/22 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python