#-*- coding: utf-8 -*- #拉格朗日插值 import pandas as pd from scipy.interpolate import lagrange inputfile = '../data/missing_data.xls' #輸入數據路徑,須要使用Excel格式; outputfile = '../tmp/missing_data_processed.xls' #輸出數據路徑,須要使用Excel格式 data = pd.read_excel(inputfile) #讀入數據 #自定義列向量插值函數 #s爲列向量,n爲被插值的位置,k爲取值先後的數據個數,暫定爲5 def ployinterp_column(s,n,k=5): y = s.reindex(list(range(n-k,n))+list(range(n+1,n+1+k))) #取數 y = y[y.notnull()] #剔除空值
#y = y.dropna() # print(y);exit(); return lagrange(y.index,list(y))(n) #插值並返回插值結果 #逐個元素判斷是否須要插值 for i in data.columns: for j in range(len(data)): # print(data) # exit() if(data[i].isnull())[j]: #若是爲空就插值 data[i].isnull()返回true/false結果矩陣 # print(data[i].isnull());exit(); # data[i][j] = ployinterp_column(data[i],j) data.to_excel(outputfile,header=None,index=False)
處理Series(仍是以爲叫一維數組順),dropna(),返回非空數據和索引值的series數組
處理DataFrame(二維數組),dropna()函數一樣會丟掉全部含有空元素的數據(行內有一個空值,整行去除),默認how='any',能夠指定how='all',行裏數據全爲空纔會刪除。若是相以一樣的方式刪除列上的數據,傳入axis=1函數
isnull()和notnull(),都是返回true/false結果矩陣spa