讀取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 等包...