python 数据预处理(采用拉格朗日插值法处理缺失值)

在数据挖掘中,数据每每会存在不完整的状况,本文主要采用拉格朗日插值法处理缺失值。python

拉格朗日插值法函数

定义:对于某个多项式函数,已知有给定的K+1个取值点:3d


其中x对应自变量的位置,y对应这函数在这个位置(每个y值都不等于0)的取值。excel

解设任意两个不一样的Xj都互不相同,对应的拉格朗日插值所获得的拉格朗日插值多项式为:code



下面采用拉格朗日插值对缺失值进行插补,数据的形式以下:blog


从图片能够看出16的位置为空缺值,程序代码以下:图片

#coding:utf-8
import pandas as pd
from scipy.interpolate import lagrange#拉格朗日函数
data=pd.read_excel('data/catering_sale.xls')
#自定义列向量插值函数
def ploy(s,n,k=6):
    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]=ploy(data[i],j)
data.to_excel('data/1.xls')

使用缺失值先后6个未缺失的数据进行建模,结果以下:ip