import pandas as pd
from scipy.interpolate import lagrange
inputfile ='g:/data/catering_sale.xls'
outputfile ='g:/data/sales.xls'
data = pd.read_excel(inputfile)
data[u'销量'][(data[u'销量']<400)|(data[u'销量']>5000)]=None# s为列向量,为空值列的向量,n为需要插值的位置,k为取多少个点进行拉格朗日多项式计算defployinterp_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 inrange(len(data)):# pandas判断缺失值一般采用 isnull(),然而生成的却是所有数据的true/false矩阵if(data[i].isnull())[j]:
data[i][j]= ployinterp_column(data[i], j)#写入本地文件
data.to_excel(outputfile)