數據處理過程
一般步驟
- 定義所要解決的問題,針對該問題得到一些基礎的想法
- 查閱與問題相關的文獻,找到適合解決問題的幾種方法
- 然後改進這些方法以適合自己的要求
瞭解數據
- 理解問題:查看數據的每一個變量,並對其進行簡單分析,把認爲最重要的幾個挑出來
- 單因素分析:關注因變量,並對其深入分析
- 多因素研究:分析因變量與自變量之間的關係
- 數據清洗:處缺失數據和異常值
- 檢驗假設:檢查數據是否和多元分析方法的假設達到一致
準備工作
- 變量:變量的名字
- 變量類型:數值或者類別
- 劃分:按種類劃分變量
- 期望:我們所期望變量所達到的對自變量的影響程度
- 結論:對該變量得出的重要結論,最好與期望一致
Python數據描述與處理
因變量數據描述
#繪製直方圖
sns.distplot(df['Dependent variable']);
#數據偏度和峯度
print("Skewness: %f"%df['Dependent variable'].skew())
print("Kurtosis: %f"%df['Dependent variable'].kurt())
相關性變量分析
#因變量與數值型變量關係
#繪製散點圖,查看與變量的關係
df.plot.scatter(x=var,y=depvar)
#因變量與類別型變量關係
#繪製箱線圖,查看趨勢
sns.boxplot(x= ,y= ,data= )
#相關係數矩陣
corrmat = df.corr()
#熱圖
sns.heatmap(corrmat)
#因變量以及相關變量彼此之間的散點圖
sns.set()
cols=[var......]
sns.pairplot(df[cols])
plt.show()
缺失數據處理
缺失數據是否具有普遍性?
缺失數據是否有律可循?
我們需要保證缺失數據的處理不會出現偏離或者隱藏任何難以忽視的真相
#將每個變量的缺失佔比排序
total = df.isnull().sum().sort_values(ascending=False)
percent = (df.isnull().sum()/df.isnull.count).sort_values(ascending=False)
missing_data = pd.concat([tol,percent],axis=1,keys=['Total','Percent'])
print(missing_data.head(number))
#當有15%的數據缺失時,應該刪除改變量,並認爲該變量應該不存在
單因素分析
單因素分析的關鍵是建立閾值,定義一個觀察者爲異常值。我們對數據進行正態化,均值爲0,方差爲1。
scaled = StandardScaler().fit_transform(df['Dependent variable'][:,np.newaxis]#標準化
low_range = scaled[scaled[:,0].argsort()[:k]#取前k個
high_range = scaled[scaled[:,0].argsort()[-k:]#取後k個
雙變量分析
畫出散點圖,查看離羣值,刪除它
data.plot.scatter(x=var, y='dependent variable');
應用多元技術
- 正態性
- 同方差性
- 線性
- 相關錯誤缺失
1.正態性:
#直方圖——峯值和偏度
#正態概率圖——數據分佈應緊密跟隨正態分佈對角線
sns.distplot(df['dependent variable'],fit=norm)
res = stats.probplot(df['dependent variable'],plot=plt)
#可用對數變化解決不不跟隨正太分佈對角線的問題
df['dependent variable'] = np.log(df['dependent variable'])
2.同方差性:
#繪製散點圖查看
plt.scatter(df_train['var'],df_train['dependent variable']);
3.虛擬變量
#將類別型變量轉化爲虛擬變量
df = pd.get_dummies(df)
這主要是多元技術的應用,數據處理可以有很多種方法,博主也正在努力學習中。