下面是一个实现小程序
import pandas as pd
from scipy.interpolate import lagrange
inputfile = 'catering_sale.xls'
data = pd.read_excel(inputfile)
print data
data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None
print data
def lagrange_cal(s,n,k=5):
y = s[list(range(n-k,n))+list(range(n+1,n+k))]
y = y[y.notnull()]
print "notnull",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]:
print "isnull",data[i].isnull()
data[i][j]=lagrange_cal(data[i],j)
#print data
第一点:lagrange(x,y)得到的是多项式的系数
lagrange(x,y)(n)是n序的差值
notnull(),isnull()返回的是bool类型