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