數據的預處理app
使用固定值 | 將缺失值的屬性值,用一個常量替換.如廣州一個工廠普通外來務工人員的"基本工資"屬性的空缺值能夠用2015年廣州市普通外來務工人員工資標準1895元/月,該方法就是使用固定值來填補 |
迴歸方法 | 對帶有缺失值的變量,根據已有的數據和其餘的有關的其餘變量(因變量)的數據創建擬合模型來預測缺失值的屬性值 |
均值/中位數/衆數補插 | 根據屬性值的類型,用該屬性取值的平均數/中位數/衆數進行插補 |
插值法 | 插值法是利用已知點創建合適的插值函數f(x),未知值由對應點xi求出的函數值,f(xi)近似代替 |
最近鄰插補 | 在記錄中找到缺失值與卻只樣本最接近的樣本的該屬性值插補 |
import pandas as pd # 導入數據分析庫pandas from scipy.interpolate import lagrange # 導入拉個朗日插值函數 data = pd.read_csv("./restaurant_sale.csv") # 讀入數據 print data print data["sales"] data["sales"][(data["sales"] < 400) | (data["sales"] > 5000)] = None # 過濾異常值,將其變爲空值 # 自定義列向量插值函數 # s爲列向量,n爲被插值的位置,k爲取先後的數據個數,默認爲5 def ployinterp_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: print i # 拿到的是表格的title for j in range(len(data)): print j # 拿到的是每個title對應的數據 if (data[i].isnull())[j]: # 若是爲空即插值 print data[i] data[i][j] = ployinterp_column(data[i], j) # 執行自定義的拉格朗日插值函數 # 輸出結果到文件中 data.to_csv("./sales.csv")
異常值處理方法
|
方法描述
|
---|---|
不處理 | 直接在具備異常值的數據集上進行挖掘建模 |
刪除含有異常值的記錄 | 直接將含有異常值的記錄刪除 |
平均值修正 | 可用先後兩個觀測值的平均值修正該異常值 |
視爲缺失值 | 將異常值視爲缺失值,利用缺失值處理的方法進行處理函數 |
數據集成spa