[Python數據挖掘]第4章、數據預處理

數據預處理主要包括數據清洗、數據集成、數據變換和數據規約,處理過程如圖所示。

1、數據清洗

 1.缺失值處理:刪除、插補、不處理

                 

 ## 拉格朗日插值代碼(使用缺失值先後各5個未缺失的數據建模)函數

import pandas as pd #導入數據分析庫Pandas
from 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 #過濾異常值,將其變爲空值

#自定義列向量插值函數
#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:
  for j in range(len(data)):
    if (data[i].isnull())[j]: #若是爲空即插值。
      data[i][j] = ployinterp_column(data[i], j)

data.to_excel(outputfile) #輸出結果,寫入文件

 2.異常值處理

 3.數據變換

1)函數變換:將不具備正態分佈的數據變換成正態分佈的數據spa

2)規範化/歸一化:消除不一樣量綱的影響3d

    

零-均值規範化使用最多excel

 3)連續屬性離散化:連續屬性->分類屬性code

以「醫學中中醫證型的相關數據」爲例blog

 4)屬性構造:利用已有屬性構造新的屬性ip

以線損率爲例ci

 4.數據規約

1)屬性規約(縱向):屬性合併、刪除無關屬性input

2)數值規約(橫向):選擇替代的、嬌小的數據來減小數據量,包括有參方法和無參方法數據分析

 5.Python主要數據預處理函數

相關文章
相關標籤/搜索