實訓1 拉格朗日法插補使用者用電量資料缺失值

2021-10-18 12:30:35 字數 1339 閱讀 2058

讀取missing_data.csv表

查詢缺失值位置

3.使用scipy庫中的interpolate模組下的lagrange對資料進行拉格朗日插值

使用資料檢視是否存在缺失值,不存在則說明插值成功

isnull=

for i in df.columns:

for j in df.index:

if df.isnull(

).loc[j,i]

:(j,i)

)isnull

輸出結果:

[(5

,'a'),

(12,'a'),

(3,'b'),

(10,'b'),

(19,'b'),

(20,'b'),

(4,'c'),

(7,'c'),

(10,'c'),

(16,'c'

)]

#傳入存在缺失值的列,缺失值所在0軸座標index,按前後k個數來計算拉格朗日插值,返回index的拉格朗日插值

deflagfill

(df,i,k)

: r=0if

(i-k)

<

0else

(i-k)

#python的三目運算子較為特殊

l=len(df.index)

if(i+

1+k)

>

len(df.index)

else

(i+1

+k) y=df.loc[

list

(range

(r,i))+

list

(range

(i+1

,l))

]#取index前後k個資料作為y代入拉格朗日函式進行擬合

for j in y.index:

if y.isnull(

).loc[j]

: y.drop(index=j,inplace=

true

) x=y.index

lag=lagrange(x.values,y.values)

return lag(i)

呼叫自定義插值函式

for i in isnull:

fnum=lagfill(df.loc[

:,i[1]

],i[0]

,5) df.loc[i[0]

,i[1]]

=fnum

這樣df的缺失值就全部被插補了!

拉格朗日插值法

拉格朗日插值法 拉格朗日插值法可以幫助我們解決以下的問題 已知x取值0,1,1,2時,f取值2,2,0,6 求x 3時f的值。示例1 intxs intys f 3 intval lagrangepolynomial 3,xs,ys staticint lagrangepolynomial intx...

拉格朗日插值法

模板題 給出n nn個點 xi yi x i,y i xi y i 讓你確定這個n 1 n 1n 1次方程並代入求值 這個有三種求法 第一種是差分法,只適用於xi ix i i xi i的情況,就是不斷做差分直到序列變成乙個定值就可以求出所有項的係數,複雜度o n 2 o n 2 o n2 第二種是...

拉格朗日插值法

function p lagrange x,y p lagrange x,y 其中x和y是向量,p是返回的多項式向量 m獲取x的個數 m length x for k 1 1 m 表示乙個插值函式的起始值 v 1 for i 1 1 m if k i 注意 以後凡是在遇到乙個在數學上是 x 1 等包...