python数据分析架构_Python数据分析
引言:本文重點是用十分鐘的時間幫讀者建立Python數(shù)據(jù)分析的邏輯框架。其次,講解“如何通過Python 函數(shù)或代碼和統(tǒng)計學知識來實現(xiàn)數(shù)據(jù)分析”。
本次介紹的建模框架圖分為六大版塊,依次為導入數(shù)據(jù),數(shù)據(jù)探索,數(shù)據(jù)處理,建模,模型評估,模型調優(yōu)(完整的邏輯框架圖請看文章末尾處)。
在實際商業(yè)項目中,建模前的工作占據(jù)整個項目70%左右的時間。讀者可能會問你既然是模型預測,為什么不把更多時間放在模型和調參上?因為巧婦難為無米之炊,數(shù)據(jù)本身決定了模型預測的上限,而模型或算法只是無限逼近這個上限而已。正所謂兵馬未動糧草先行,數(shù)據(jù)探索和數(shù)據(jù)處理能為之后建模打下堅實基礎,因此團隊做項目時會把大量時間投放在這兩個部分,目的在于提高數(shù)據(jù)質量,發(fā)現(xiàn)變量間關系,選取恰當特征變量。下面我會依次介紹這六個版塊,但詳解數(shù)據(jù)探索和數(shù)據(jù)處理版塊。
一 導入數(shù)據(jù)
Python數(shù)據(jù)分析的第一步是要把數(shù)據(jù)導入到Python中。導入數(shù)據(jù)需要做兩件事,第一,告訴Python 你的文件格式,常用的格式有:.csv,.jason, .xlsx, .hdf。第二,告訴Python 你的文件路徑。
舉例:假如文件格式為.csv, 文件路徑為:path =“C:Windows...desktopmydata.csv”
通過df.read_csv(path)函數(shù),即可將數(shù)據(jù)導入Python。
二 數(shù)據(jù)探索
數(shù)據(jù)探索版塊主要涉及描述性統(tǒng)計,數(shù)據(jù)分組,關聯(lián)分析,方差分析。會涉及一些Python函數(shù)和統(tǒng)計學知識,筆者依次介紹。
描述性統(tǒng)計
? 基本描述
通過df.describe()函數(shù)可對數(shù)據(jù)有一個基本了解,比如平均值、標準差、四分位數(shù)、最大最小值等
? 數(shù)據(jù)類型
通過df.dtypes 函數(shù),可知變量的數(shù)據(jù)類型,比如object型,int型,float型(為后面的數(shù)據(jù)處理做準備)
? 分組統(tǒng)計
通過value_counts(),可統(tǒng)計分類變量里不同組的數(shù)量
? 箱形圖
通過sns.boxplot(x,y,data=df),可將數(shù)據(jù)以‘箱形’展示出來,查看數(shù)據(jù)分布情況,識別離散值
? 散點圖
通過plt.scatter(x,y),可發(fā)現(xiàn)兩組變量間的關系(正相關、負相關、不相關)
數(shù)據(jù)分組
數(shù)據(jù)分組部分主要介紹三個函數(shù),分別為groupby(),pivot(), pcolor(),可視化效果依次提高,有助于快速發(fā)現(xiàn)不同組間的關系。
? 函數(shù)groupby(),可對一個或多個分類變量進行分組
? 函數(shù)pivot(), 能提高groupby()分組后的數(shù)據(jù)的可視化程度,實現(xiàn)更清晰的展示
? 函數(shù)pcolor(), 能把pivot table()處理后的數(shù)據(jù)轉換成熱圖,更易發(fā)現(xiàn)不同組間關系
關聯(lián)分析
? 通過df.corr(), 可得到所有變量間的相關系數(shù)
? 通過pearsonr(x,y),可得到皮爾森相關系數(shù)和P值,以此判斷兩個變量間的關聯(lián)強度
· 皮爾森系數(shù)接近于1時,正相關;接近于-1時負相關;接近于0時,不相關
· P值,用來判斷發(fā)生的可能性大小、原假設是否正確。若P<0.05, 有理由拒絕原假設。
方差分析
? f_oneway()實現(xiàn)方差分析,得到F-testscore 和P 值
? F-testscore 越大,關聯(lián)越強; F-testscore 越小,關聯(lián)越弱。
? P值,同上(參見關聯(lián)分析P值)
筆者總結出(二)數(shù)據(jù)探索版塊的邏輯框架圖,見下圖。
三 數(shù)據(jù)處理
數(shù)據(jù)處理版塊主要涉及處理缺失值,數(shù)據(jù)類型轉換,格式轉換,數(shù)據(jù)正態(tài)化,數(shù)據(jù)分箱,獨熱碼。會涉及Python代碼和統(tǒng)計學知識,筆者依次介紹。
處理缺失值
? 查看數(shù)據(jù)源
直接查看數(shù)據(jù)源頭,看能否把缺失的數(shù)據(jù)找回
? 刪除缺失值
通過函數(shù)dataframe.dropna(),可將缺失的數(shù)據(jù)刪除
? 替換缺失值
通過函數(shù)data.replace(missing_value,new_value),可將缺失的數(shù)據(jù)替換為平均值或眾數(shù)
數(shù)據(jù)類型轉換
? 通過astype()函數(shù),能把錯誤的數(shù)據(jù)類型轉換為正確的數(shù)據(jù)類型
? 舉例:若變量‘price’的數(shù)據(jù)類型為object型時,通過代碼:df[‘price’]= df[‘price’].astype(‘int’),將變量‘price’轉換為 int型。
格式轉換
不同部門(比如市場部、物流部、IT部)通常會有不同的儲存格式,需要對數(shù)據(jù)統(tǒng)一格式、單位轉換,才可建模。
??統(tǒng)一格式
舉例:BeiJing的書寫格式有多種,比如BeiJing, BEIJING, BJ, B.J, 需要統(tǒng)一為一種格式。
? 單位轉換
· 對同一特征變量,要用統(tǒng)一的單位,舉例:在評比汽車耗油量時經常用到兩種單位,每加侖多少英里(mpg)和每百公里多少升(L/100km),在數(shù)據(jù)分析時需將其統(tǒng)一。
· 例子:通過函數(shù)df[‘city-mpg’]= 235/df[‘city-mpg’] 實現(xiàn)mpg 和 L/100km 單位間的轉換(其實就是加減乘除),再通過df.rename()對變化后的列名進行修改
數(shù)據(jù)正態(tài)化
某些特征變量需要進行數(shù)據(jù)正態(tài)化,正態(tài)化后的特征變量才能對模型有相對公平的影響(若沒懂,請看特征縮放中的例子)。常用的數(shù)據(jù)正態(tài)化的方法有三種:特征縮放,最大最小值,Z分數(shù)。
??特征縮放:Xnew=Xold/Xmax
舉例:變量‘age’的范圍20 – 100 ,變量‘income’ 的范圍20000 – 500000,由于數(shù)值大小的差距,變量‘age’和‘income’對模型的影響是完全不同和不公平的。經過特征縮放運算后,兩個變量會擁有相似的取值范圍,也因此對模型影響的程度會變得較為公平合理,代碼見上圖。
? 最大值最小值:Xnew=(Xold-Xnew)/(Xmax-Xmin), 代碼見上圖
? Z分數(shù):?Xnew?=?(Xold-μ)/σ, 代碼見上圖
數(shù)據(jù)分箱
數(shù)據(jù)分箱能對數(shù)據(jù)進行更明了的展示,可把數(shù)值變量轉換為分類變量,通過cut()函數(shù)可對數(shù)據(jù)進行分箱,代碼見下圖。
舉例:cut()函數(shù)能將變量‘price’的所有數(shù)值放入3個箱子中,將變量‘price’的數(shù)值變量轉換為分類變量,運行結果見下圖。
獨熱碼
模型訓練通常是不會接收object 或 string型,只能接收數(shù)值型,但獨熱碼能將分類變量的object 或 string型轉換為定量變量的數(shù)值型。
? 函數(shù):get_dummies()
? 舉例:‘fuel’ 有gas和dissel兩類,通過pd.get_dummies(df[‘fuel’])將gas 和dissel 重新賦值0或1,將分類變量‘fuel’轉換為數(shù)值型,結果見下圖
筆者總結出(三)數(shù)據(jù)處理版塊的邏輯框架圖,見下圖。
四 建模
本文涉及線性回歸和多項式回歸算法,其他眾多算法比如神經網絡、隨機森林、支持向量機、時間序列等,不在此介紹。
五 模型評估
評判模型準確度時經常用到的兩個指標, R方檢驗(R2)和均方誤差檢(MSE)。
? R2的值越接近于1,擬合效果越好,R2的值越接近于0,擬合效果越差
? MSE能反應出真實值與預計值間的誤差,MSE越小,模型準確性越高
六 模型調優(yōu)
模型調參能夠優(yōu)化模型的準確性,調參指調整參數(shù),那如何找到最佳的參數(shù)組合呢? 有如下如下方法:
? 嶺回歸, 函數(shù): Ridge(alpha),解決過擬合現(xiàn)象
? 網格搜索:用窮舉法遍歷所有不同的參數(shù)組合,篩選出模型效果最好的一組參數(shù)組合。函數(shù): GridSearchCV(Ridge(), parameters, cv), cv指交叉驗證次數(shù)。
結尾
至此,筆者已介紹如何導數(shù)到Python、如何探索和處理數(shù)據(jù)、如何建模、如何評估模型、如何調參。完整的邏輯框架會讓讀者對‘Python數(shù)據(jù)分析’有一個全面的認識,快速達到俯瞰全局的高度。最后筆者搭建出完整的邏輯框架圖送給讀者,希望對你們有幫助。
總結
以上是生活随笔為你收集整理的python数据分析架构_Python数据分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux判断是否文件夹(linux判断
- 下一篇: python遗传算法工具箱的使用_遗传算