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

本文实例讲述了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程序设计有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值