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