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读写Excel文件的实例
Nov 01 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
零基础写python爬虫之打包生成exe文件
Nov 06 Python
用tensorflow搭建CNN的方法
Mar 05 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
利用nohup来开启python文件的方法
Jan 14 Python
深入理解Django-Signals信号量
Feb 19 Python
Python3模拟登录操作实例分析
Mar 12 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
python实现LRU热点缓存及原理
Oct 29 Python
python如何使用socketserver模块实现并发聊天
Dec 14 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 和 MySQL 基础教程(四)
2006/10/09 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
PHP实现搜索相似图片
2015/09/22 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
php数组指针操作详解
2017/02/14 PHP
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
MySQL最常见的操作语句小结
2015/05/07 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
python版百度语音识别功能
2019/07/09 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
垃圾回收的优点和原理
2014/05/16 面试题
宿舍保安职务说明书
2014/02/25 职场文书
政治表现评语
2014/05/04 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技
MySQL新手入门进阶语句汇总
2022/09/23 MySQL