標籤:list range index inter pytho otn input port tput
#拉格朗日插值代碼import pandas as pd #匯入資料分析庫Pandasfrom scipy.interpolate import lagrange #匯入拉格朗日插值函數inputfile = ‘../data/catering_sale.xls‘ #銷量資料路徑outputfile = ‘../tmp/sales.xls‘ #輸出資料路徑data = pd.read_excel(inputfile) #讀入資料data[u‘銷量‘][(data[u‘銷量‘] < 400)][(data[u‘銷量‘] > 5000)]= None #過濾異常值,將其變為空白值#print(data)#自訂欄向量插值函數#s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5def ployinterp_column(s, n, k=5): s1=s.copy() y = s1[list(range(n-k, n))+list(range(n+1, n+1+k))]#取數 y = y[y.notnull()] #剔除空值 return lagrange(y.index, list(y))(n) #插值並返回插值結果#逐個元素判斷是否需要插值 data[i].isnull()返回布爾數組# 0 False# 1 False# 2 False# 3 False# 4 Falsefor i in data.columns: for j in range(len(data)): if (data[i].isnull())[j]: #如果為空白即插值。 data[i][j] = ployinterp_column(data[i], j) print(data[i][j])data.to_excel(outputfile) #輸出結果,寫入檔案
python拉格朗日插值