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程序設計有所幫助。
總結
以上是生活随笔為你收集整理的python拉格朗日插值法_Python实现的拉格朗日插值法示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试最全面试题,了解一下
- 下一篇: 【SIKI学院】愤怒的小鸟创建过程-1