




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、引言幾年后發(fā)生了。在使用SAS工作超過5年后,我決定走出自己的舒適區(qū)。作為一個數(shù)據(jù)科學(xué)家,我尋找其他有用的工具的旅程開始了!幸運的是,沒過多久我就決定,Python作為我的開胃菜。我總是有一個編寫代碼的傾向。這次我做的是我真正喜歡的。代碼。原來,寫代碼是如此容易!我一周內(nèi)學(xué)會了Python基礎(chǔ)。并且,從那時起,我不僅深度探索了這門語言,而且也幫助了許多人學(xué)習(xí)這門語言。Python是一種通用語言。但是,多年來,具有強(qiáng)大的社區(qū)支持,這一語言已經(jīng)有了專門的數(shù)據(jù)分析和預(yù)測模型庫。由于Python缺乏數(shù)據(jù)科學(xué)的資源,我決定寫這篇教程來幫助別人更快地學(xué)習(xí)Python。在本教程中,我們將講授一點關(guān)于如何使用
2、Python進(jìn)行數(shù)據(jù)分析的信息,咀嚼它,直到我們覺得舒適并可以自己去實踐。O為什么學(xué)Python用來數(shù)據(jù)分析oPython2.7v/s3.4o怎樣安裝Pythono在Python上運行一些簡單程序2.Python的庫和數(shù)據(jù)結(jié)構(gòu)oPython的數(shù)據(jù)結(jié)構(gòu)oPython的迭代和條件結(jié)構(gòu)oPython庫3.在Python中使用Pandas進(jìn)行探索性分析o序列和數(shù)據(jù)框的簡介O分析Vidhya數(shù)據(jù)集貸款的預(yù)測問題在Python中使用Pandas進(jìn)行數(shù)據(jù)再加工使用Python中建立預(yù)測模型o邏輯回歸o決策樹o隨機(jī)森林讓我們開始吧1數(shù)據(jù)分析的Python基礎(chǔ)為什么學(xué)Python用來數(shù)據(jù)分析很多人都有興趣選擇P
3、ython作為數(shù)據(jù)分析語言。這一段時間以來,我有比較過SAS和R。這里有一些原因來支持學(xué)習(xí)Python:開源免費安裝極好的在線社區(qū)很容易學(xué)習(xí)可以成為一種通用的語言,用于基于Web的分析產(chǎn)品數(shù)據(jù)科學(xué)和生產(chǎn)中。不用說,它仍然有幾個缺點:它是一種解釋性的語言而不是編譯的語言,因此可能占用更多的CPU時間。然而,由于它節(jié)省了程序員的時間(由于學(xué)習(xí)的方便),它可能仍然是一個很好的選擇。Python2.7v/s3.4這是關(guān)于Python的一個最具爭議的話題。你可能總是不能避免遇到,尤其是如果你是一個初學(xué)者。這里沒有正確/錯誤的選擇。它完全取決于具體情況和你的需要。我會嘗試給你一些建議,以幫助你做出明智的選
4、擇。為什么選擇Python2.7極好的社區(qū)支持!這是你在初期需要的東西。Python2發(fā)行于2000年末,已經(jīng)被使用超過15年。很多第三方庫!雖然許多庫已經(jīng)提供了3.X的支持,但仍然有大量的模塊只工作在2.X。如果你計劃將Python用于具體的應(yīng)用,如Web開發(fā)這種高度依賴外部模塊的,你選擇2.7可能會更好。3.X版本的一些特性有向后兼容性,可以使用2.7版本。為什么選擇Python3.4更整齊和更快!Python開發(fā)者修正了一些固有的問題和小缺點,以此為未來建立一個強(qiáng)大的基礎(chǔ)。這些可能不是很相關(guān),但最終會很重要。這是未來!2.7是2.X族發(fā)布的最后一個版本,并且最終每個人都要轉(zhuǎn)移到3.X版本
5、。Python3在過去5年已經(jīng)發(fā)布的穩(wěn)定版本,并將繼續(xù)。沒有明確的贏家,旦我想,底線是,爾應(yīng)該專注于學(xué)習(xí)Python語言。版本之間的轉(zhuǎn)換應(yīng)該只是一個時間問題。敬請期待,不久的將來一個專門對比Python2.X和3X的文章!怎樣安裝Python有兩種方法安裝Python你可以直接從項目網(wǎng)站下載Python,然后單獨安裝你想要的組件和庫或者,你可以下載并安裝一個包,它附帶了預(yù)裝的庫。我建議您下載Anaconda。另一種選擇是EnthoughtCanopyExpress。第二種方法提供了一個避免麻煩的安裝,因此我會推薦給初學(xué)者。這種方法是你必須等待整個包進(jìn)行升級,即使你只是對一個單一的庫的最新版本感
6、興趣。它應(yīng)該不重要,直到和除非,直到和除非,你正在做的尖端統(tǒng)計研究。選擇開發(fā)環(huán)境旦你已經(jīng)安裝了Python,選擇環(huán)境可以有很多種選擇。這里是3個最常見的選擇:終端/基于ShellXIDLE(默認(rèn)環(huán)境)iPythonnotebook類似于R的markdown張Python2.7.6ShellFileEditShellDebugOptionsWindowsHelpPytnon2.7.6(default.Nav102013f19:24:24)M5Cv.1500五4tit(AMD64)onwin32TypecopyrigAtnfpcreditsparlicense(nfarinjareinfarmat
7、ion.l而環(huán)境權(quán)取決于你的需要我個人更喜歡iPythonnotebook點。它提供了許多良好的功能,編寫代碼的同時還可以用于記錄,你可以選擇在上面運行代碼塊(而不是一行一行的執(zhí)行)。我們在整個教程中將使用Ipython環(huán)境熱身:跑第一個Python程序你可以使用Python作為一個簡單的計算器來開始:jupyterMyFirstiPythonNotebookLastCheckpoint:3minutesFileEditViewInsertCellKemeSHelp+抿血邑f+HCMarkdownTCellToolbarNoneIInfl:2+3#FirstprograminiPythmnot
8、ebookenvironntentffuLtipLelinescanbewrittenhereandtheyexecteiOutlr5Thisisanexampleofmarkdowntext.Thisisusefulforaddingcomm(在我們深入挖掘如何解決問題之前,讓我們退后一步,了解Python的基本知識。當(dāng)我們知道數(shù)據(jù)結(jié)構(gòu)和迭代和條件結(jié)構(gòu)是形成任何語言的關(guān)鍵。在Python中,這些包括列表、字符串、元組、字典、for循環(huán),while循環(huán),if-else等等,讓我們來看看下面的因素。2.在Python上運行一些簡單程序Python的數(shù)據(jù)結(jié)構(gòu)以下是Python中使用的一些數(shù)據(jù)結(jié)構(gòu)。
9、你應(yīng)該熟悉他們,以便恰當(dāng)?shù)氖褂盟鼈儭A斜砹斜硎窃赑ython中最通用的數(shù)據(jù)結(jié)構(gòu)。列表可以這樣簡單的定義:就是在方括號中一系列用逗號來分隔的值。列表可能包含不同類型的項,但它們通常都有相同類型的。Python列表是可變的,列表中的單個元素是可以改變的。這里是一個快速的例子,定義了一個列表,然后訪問它:ListsAlistcanbesimplydefin&dbywr:ingcommas-eparatedvaluesinsquare-brackets.In1:3quates_li3=01.4r9r1r2EIn2:sqiiare3_li5tOu七:OrLr4r1名2IndividLaleIemerit
10、scfalistc日nbeaccessedbywritingtheindexnumberinsquaretrackt.PleasenetsthatthsfirstindexcfalistisCanIn3:squareg_listtfljsedejilizg1r-eius:tieiteiziOizt:3:0Arangscfscriptcanbeaccc5&dbyhavingfirstindexandlastindexIn4!s=7Li3E&g_list2:4車1二5冬連匕ufz呂rsevli51Out4:4.3ANegstiveindexaccesses,thelistfromendIn3:sq
11、i_LaEeslisfc-2#Jisiaoizldtiies&and.2asteleiziers上zntfoelistOut5z1-cAfewcommonmethodsapflicatle1clistsinclude:3|:FEndOe3ctend()inssrtOremoieipopQecuntECirtOrev&rssO字符串字符串可以簡單的使用單引號(”)、雙引號(”)或三引號()來定義。字符串封閉三引號()中可以跨越多行的代碼,在文檔字符串中是很常用的(記錄功能的Python方式)。作為一個轉(zhuǎn)義字符。請注意Fython中的字符串是不可變的,所以你不能改變字符串的部分。StringsAs
12、tringcanbesimplydefinedbyu&ingsingle(),-double()ortriple(quotationIn創(chuàng)二greeting=Hello1printgreeting1printlenigEeetingj#FjzjstslerEjti耳七工三眾耳printgreeting+WorldStringConsatf2atianjffHeturncijaractBrontfiezncSeji1oHelloUcTldRavi*stringscanbeuseidtcpassonsiringasis,Pythuninterpretterijoe-snetalterthestri
13、ng,ifyouspecifastringtobera?/.Raws-stringIn8zstmt=z1Xnis叵neulinecharacterbydefault.1printsxmt*口anewlinecharacterbyiefaul七.Pythcmstringsareimmutable-andhence-canbechanged.DoingsowillresultinanerrorIn.9igizeeting11=1i1#Tr-yingtosharzgeH&2l-otoHz.Sfeouldrissi-zl上znanTjgeErrcrIrBcebaclc(mostrecentcallls
14、t)isi(J1greeting1=ri1Tcying匸口chsngeHell口匸口Hi.ShcuLlresultinsn旨匚匸口匸Tj-rpeErrcE::rstrrcbjsctdesgsi口tauppcsEtitemagaigniEientCcmmonstringmethadsiricluijelove-rQ,upperO,stripij,isdigitij,isspaceC),findQ,replac&Q,呂卩l(xiāng)it)andjainQ.The-seareusuallymanipulationsocleaningcmtextfields.元組元組由一系列由逗號分隔的值表示。元組是不可變的,
15、俞出的用括號包圍,目的是嵌套結(jié)構(gòu)可以被正確處理。此外,盡管元組是不可變的,但它們可以在必要是含有可變數(shù)據(jù)。因為元組是不可變的,不可改變的,他們相對列表來說可以處理的更快。因此,如果你的清單是不可能改變的,你應(yīng)該使用元組,而不是列TuplesAtupleisrepresente-dbyanumberofvaluesseparate-dbycommas二二;10:t.jpL_xaiapL=Qfr_t匕l(fā)Ef25-T.11:t-jp1KS.rr.p1&oLitputtfouldbeenclosednpar3nthesisst二二:(afLf匕ief25):t-jpl&Karr.ple2#ing-le
16、elementscanbeaccessedinsimiiaz?fashionIn13:t-jple_eKair.ple2=6#TuplesareijEmutsbleandhencethisshouldresultiryp&5:rrcrTr-aceback(mostrecentcall二且呂二二(iLt.j.ple_exainpLe2=6TjplesareinnuuitatLeand二亡二匚亡Zr.Ls已二匸:二二3ryperrcr:1tup_s1口匕:乞口匚3乞已n匸已門丘丘二匸二匚亡iu已曰曰二gnm亡n匸字典字典是鍵:值對一個無序集合,要求鍵是唯一的(在一個字典里)。一對大括號創(chuàng)建一個空的
17、字典:。DictionaryAdi-ctionaryisanunorderedsetofkey:valuepairs,withtherequirementthatthekeysareunique(withino-nedictiarIn20:exteLSioLS=Kunal:9073r工且vish:912S,Sunil:9223,EJitin:93皀xterzscrzsCJt:-nal-:9073r兇二匸二二:9333r-弓二二二二:5223r二且P二耳二:5125:二二22_exte.SLzm311Mukesr:1;=9153巳兀匸erzm二二二已::-na.1.r:3Q73rMakes二;5
18、L5DfH二匸二二;5332,Vh二,;5223,二且二5二:91二二;2o;:乞陀匸乞二已二門匸已K亡了已j;:15uni_R,二丹二呂宀fMakes?;pf四二匸二:Python的迭代和條件結(jié)構(gòu)和大多數(shù)語言一樣,Python也有一個FOR循環(huán),這是最廣泛使用的迭代方法。它有一個簡單的語法:foriinPythonItenable:IIeKprE55ian(i)這里的“Python的迭代可以是列表、元組或其他先進(jìn)的數(shù)據(jù)結(jié)構(gòu),我們將在后面的章節(jié)中探討。讓我們來看看一個簡單的例子,確定一個數(shù)字的因子。fact=lforiinrange(1jN-l-1;fact*=i來看看條件語句,它們是用來基于
19、條件執(zhí)行代碼片段。最常用的結(jié)構(gòu)是if-else,有以下語法:ifconditia-n:_eMecutla-ntrue_else:EKecutio-niffalse例如,如果我們想打印出某個數(shù)字n是偶數(shù)還是奇數(shù):if匾2=9:print1E/en1else:printOdd既然你熟悉了Python的基礎(chǔ),我們來更近一步。如果你像完成以下任務(wù):乘2矩陣求二次方程的根繪制條形圖和直方圖建立統(tǒng)計模型訪問網(wǎng)頁如果你想從零開始寫代碼,它將是一場噩夢,你使用Python不會超過2天!但不要擔(dān)心這些。值得慶幸的是,有許多預(yù)定義的庫,我們可以直接導(dǎo)入到我們的代碼,使我們的生活很容易。例如,考慮我們剛才看到的因子
20、的例子。我們可以一步就完成:math.factorial(N)當(dāng)然,為了這樣我們需要導(dǎo)入的math庫。讓我們探索下一個不同的庫。Python庫在開始我們的學(xué)習(xí)Python之旅之前,讓我們先一步,了解一些有用的python庫。第一步顯然是要學(xué)會將它們導(dǎo)入到我們的環(huán)境中。在Python中有以下幾種方法:-Froinnnthimportimportmathasm在第一種方式中,我們已經(jīng)為math庫定義了一個別名m?,F(xiàn)在我們可以使用數(shù)學(xué)庫的各種功能(例如階乘通過引用別名m.factorial()。第二方式,你需要導(dǎo)入math的整個命名空間,你可以直接使用factorial。,而不用提到math。提示:
21、谷歌推薦您使用第一種方式導(dǎo)入庫,因為您將知道函數(shù)來自何處。下面是一個庫列表,你將在任何科學(xué)計算和數(shù)據(jù)分析中用到:NumPy代表數(shù)值Python。NumPy最強(qiáng)大的功能是n維數(shù)組。該庫還包含基本的線性代數(shù)函數(shù)傅里葉變換高級的隨機(jī)數(shù)功能以及集成其他低級語言如Fortran,C和C+的工具。SciPy代表科學(xué)的Python。SciPy是基于NumPy的。它是最有用的庫之一,具有各種高層次的科學(xué)和工程模塊,如離散傅立葉變換,線性代數(shù),優(yōu)化和稀疏矩陣。Matplotlib用于繪制各種各樣的圖表,從直方圖到線圖,再到熱圖。你可以在IPythonnotebook中使用PyLab(IPythonnoteboo
22、k-PyLab=inline)以此使用這些繪圖功能的inline。如果你忽略inline選項,PyLab會將IPythonnotebook環(huán)境轉(zhuǎn)換成類似于Matlab的環(huán)境。你也可以使用Latex命令將math庫添加到您的繪圖中。Pandas對于結(jié)構(gòu)化數(shù)據(jù)操作和控制。它廣泛用于數(shù)據(jù)再加工和數(shù)據(jù)準(zhǔn)備。Pandas說最近一直在推動對PythonPython的使用數(shù)據(jù)科學(xué)家共同體的工具。ScikitLearn機(jī)器學(xué)習(xí)庫。建立在NumPy、SciPy和matplotlib的基礎(chǔ)上,這個庫包含了機(jī)器學(xué)習(xí)和統(tǒng)計模型包括分類、回歸、聚類和降維等很多有效的工具。Statsmodels用于統(tǒng)計建模。statsm
23、odels是一個Python模塊,允許用戶探索數(shù)據(jù),估計統(tǒng)計模型,并進(jìn)行統(tǒng)計檢驗。一個廣泛的描述性統(tǒng)計,統(tǒng)計檢驗的列表。繪圖功能,和結(jié)果統(tǒng)計可用于不同類型的數(shù)據(jù)和每個估計。Seaborn用于統(tǒng)計數(shù)據(jù)的可視化。Seaborn是Python中用來繪制讓人喜歡的并能提供大量信息的統(tǒng)計圖形庫。它是基于matplotlib。Seaborn旨在使可視化成為探索和理解數(shù)據(jù)的核心部分。Bokeh創(chuàng)建交互式圖、儀表盤和現(xiàn)代Web瀏覽器上的數(shù)據(jù)應(yīng)用。它允許用戶生成的優(yōu)雅和簡潔的d3.js風(fēng)格的圖形。此外,在非常大的或流媒體數(shù)據(jù)集上,它具有高性能的交互性的能力。Blaze擴(kuò)展NumPy和Pandas的分布式和流媒體
24、數(shù)據(jù)集。它可以用來訪問來自多種來源的數(shù)據(jù),包括bcolz,MongoDB,SQLAlchemy,ApacheSpark,PyTables等等,結(jié)合Bokeh,Blaze可以作為一個非常強(qiáng)大的工具,用于對大規(guī)模數(shù)據(jù)創(chuàng)建高效的的可視化和儀表板。Scrapy用于網(wǎng)絡(luò)爬蟲。它是用于獲取特定數(shù)據(jù)模式的一個非常有用的框架,它可以通過開始的一個網(wǎng)站主頁的網(wǎng)址,然后通過挖掘網(wǎng)頁內(nèi)的網(wǎng)站收集信息。SymPy用于符號計算。它具有廣泛的功能,從基本的符號運算到微積分,代數(shù),離散數(shù)學(xué)和量子物理學(xué)。另一個有用的功能是將計算的結(jié)果格式化為LaTeX碼的能力。Requests用于訪問網(wǎng)絡(luò)。它的工作原理類似于Python標(biāo)準(zhǔn)
25、庫urllib2,但是更容易編碼。但對于初學(xué)者,你會發(fā)現(xiàn)和urllib2細(xì)微的差別,Requests可能更方便。其它的庫,你可能需要:os用于操作系統(tǒng)和文件操作networkx和igraph基于數(shù)據(jù)操作繪制圖形regularexpressions用于在文本數(shù)據(jù)中查找模式BeautifulSoup將探索Web。它不如Scrapy,它一次運行將從一個單一的網(wǎng)頁中提取信息?,F(xiàn)在我們已經(jīng)熟悉Python的基礎(chǔ)和更多的庫,讓我們深入到通過Python解決問題。是的,我的意思是做一個預(yù)測模型!在這個過程中,我們使用了一些強(qiáng)大的庫,也遇到了下一級的數(shù)據(jù)結(jié)構(gòu)。我們將帶你通過這3個關(guān)鍵階段:數(shù)據(jù)探索一從我們所擁
26、有的數(shù)據(jù)中發(fā)現(xiàn)更多數(shù)據(jù)修改一清理數(shù)據(jù)和并修改它使它更適合用來統(tǒng)計建模預(yù)測建模一運行的實際算法,自得其樂3.在Python中使用Pandas進(jìn)行探索性分析為了進(jìn)一步探索我們的數(shù)據(jù),讓我把你介紹給另一種動物(好像Python是不夠的?。┮籔andasPandas是Python最有用的一種數(shù)據(jù)分析庫的我知道這些名字聽起來很奇怪,但堅持下去?。┧鼈儗τ谠黾右恢痹谠黾覲ython在數(shù)據(jù)科學(xué)界的使用量起了很大的作用。我們現(xiàn)在將使用Pandas從AnalyticsVidhya的競賽中讀數(shù)據(jù)集,進(jìn)行探索性分析,建立我們的第一個基本分類算法來解決這一問題。在加載數(shù)據(jù)之前讓我們了解Pandas中的2個關(guān)鍵的數(shù)據(jù)結(jié)
27、構(gòu)序列和數(shù)據(jù)框序列和數(shù)據(jù)框的簡介序列可以被理解為一個1維標(biāo)記/索引數(shù)組。你可以通過這些標(biāo)簽訪問這個序列的各個元素。個數(shù)據(jù)框類似于Excel工作簿-你可以使用列名來引用列可以通過行號來訪問行數(shù)據(jù),本質(zhì)的區(qū)別是,在數(shù)據(jù)幀中,列名和行號是列和行的索引。More:10MinutestoPandas實踐數(shù)據(jù)集一一貸款預(yù)測問題您可以從這里下載數(shù)據(jù)集。這里是變量的描述:VARIABLEDESCRIPTIONS:/ariableDes匚廠iptionLoanIVUniqueLoanIDGenderMale/FemaleMarriedApplicantmarried(Y/UDependentsNumberofd
28、ependentEducationApplicantEducation(Graduate/UnderGraduate)Self_EmployedSelf&mployed(/N)AppliicantrnconieAppli匚已ri七in匚omeCoapplicantln匚oneCoapplic目rrtincomeLoanamountinthousandsLoanAmountLoanAraiountTerm匚edit_Hi5to-rycredithistorym亡亡tzsguid亡LintsUrban/SemiUrban/RuralPropeLoanapproved(Z/IN)Termoflcam
29、iinrmonths讓我們從數(shù)據(jù)探索開始開始,通過在你的你的終端/Windows命令提示符鍵入下面的代碼,來以InlinePylab模式啟動IPython界面:ipythonnotebook-pylat=inline這在PyLab環(huán)境下打開IPythonnotebook,其中有幾個有用的庫已經(jīng)導(dǎo)入。此外,你將能夠繪制您的數(shù)據(jù)內(nèi)聯(lián),這對于互動的數(shù)據(jù)分析是一個非常好的環(huán)境。你可以通過鍵入以下命令,檢查環(huán)境是否正確的加載了(并獲得如下圖所示的輸出):plot(arange(5)我目前在Linux上工作,并已將數(shù)據(jù)集存儲在以下位置:/home/kunal/Downloads/Loan_Predicti
30、on/train.csv導(dǎo)入庫和數(shù)據(jù)集:下面是我們將在本教程中使用的庫:numpymatplotlibpandas請注意,你不需要導(dǎo)入matplotlib和NumPy,因為是在PyLab環(huán)境下。但我仍然在代碼中保留了它們以防你在不同的環(huán)境中使用代碼。導(dǎo)入庫以后,你可以使用read_csv()函數(shù)讀數(shù)據(jù)集。這是直到這個階段的代碼:impotp日nd日5aspdimportnuvnpymmnp-importmatplotlitipitdf=pd.r亡日d_匚冷#R亡曰din呂thedatasetinadatafraineusingPandas快速數(shù)據(jù)探索旦你讀取了數(shù)據(jù),可以通過使用head()函數(shù)
31、查看一下前幾行的數(shù)據(jù):df.head(10)In3):df.head(1&)tfPrijitingfi.rst10-o站d/datas-etLoan_IDGenderMarriedEducationSlf_EmployedApplicintlnccrnCa;0LPOO-100MaleNoaGraduateNo5S491LP001003MateYes1GraduateNo458315C2LP001005MaleYes0GraduteYe&300003LP001006MaleVesaNotGraduateNd-2583234LPD0WQ9bhleNooGrdualeNO6DCa5LPOD-1O11
32、MateYg2GraduateYes54174U$LP00W13MateYes老NotGraduateNa2333t517LP001D14MaleYes3-hGraduateNo3D3fi25CSLP00101&MaleVes2GraduateNo40CS9LPDOiMOMaleVestGraduateNo12041-1這應(yīng)該打印10行?;蛘?,您也可以通過打印數(shù)據(jù)集來查看更多的行。接下來,你可以使用describe。函數(shù)來查看數(shù)值字段的概要:df.describE()In4;0ut4:ApplicantlncomeCoapplicantlncomeLo-anAmoumLoan_Amount_T
33、ermcount614.000000614.000000592.000000600.00000mean5403.4592831621.245798146.412162342.00000std6109.0416732926.24836985.58732565.12041min150.0000000.0000009.00000012.0000025%2877.500000O.OOOO&O10&.000&00360.0000050%3812.5000001188.50000012&.000000360.0000075%5795.0000002297.250000168.000000360.00000
34、max81000.00000041667.000000700.000000480.00000df-describef)stinrtrtaryofnumeri-cfft恫口describe。功能將提供計數(shù)、平均、標(biāo)準(zhǔn)差(STD),最小值,分位數(shù)值和最大值(讀這篇文章來更新基本統(tǒng)計數(shù)據(jù)了解人口分布)這里有幾個結(jié)論,你可以通過查看describe()函數(shù)的輸出得出:LoanAmount有(614-592)22個缺失值Loan_Amount_Term有(614-600)14個缺失值Credit_History有(614-564)50個缺失值我們還可以看到84%的申請者有credit_history,怎
35、么樣,credit_history的均值為0.84(記住,credit_history將那些有信用歷史的值設(shè)置為1,沒有的設(shè)置為0)Applicantlncome的分布似乎和expectation呈線性關(guān)系,Coapplicantlncome也是。請注意,我們通過比較的平均值和中位數(shù),即50%位數(shù),來得到偏差的概念。對于非數(shù)值(例如property_area,credit_history等),我們可以看看頻率分布,了解他們是否有意義。頻率表可以通過以下命令打?。篸fFropertyr亡日.valu亡_:ciun)同樣地,我們可以看看信用卡歷史的唯一值。注意,dfnamecolumn_name是
36、一個基本的索引技術(shù),來訪問一個數(shù)據(jù)框的特定的列。它也可以是列的列表。想要了解更多信息,參考上面的Pandas10分鐘教程”的資源共享。分布分析現(xiàn)在我們熟悉了基本的數(shù)據(jù)特征,讓我們研究不同變量的分布情況。讓我們從數(shù)字變量開始-即applicantincome和LoanAmount我們通過繪制applicantincome的直方圖開始,使用下面的命令:dfProp亡irty_Ar亡日.value_coun)在這里,我們觀察到,有幾個極端值。這也是分箱值為50的原因,就是為了清楚地描述它的分布。下一步,我們看箱線圖,了解分布。fare的箱圖可以使用下面代碼繪制:df.bouplotcolumnsAp
37、plicantIncome)這證實了大量的離群值/極值的存在。這可以歸因于社會上的收入差距。部分原因源于這樣一個事實:我們正在查看不同的教育水平的人。讓我們根據(jù)他們所受的教育進(jìn)行分組:我們可以看到,研究生和非畢業(yè)生的平均收入之間沒有實質(zhì)性的區(qū)別。但是畢業(yè)生中高收入的人群更多,它們出現(xiàn)在異常值的點中。現(xiàn)在,上我們使用下面的命令看看LoanAmount的直方圖和箱線圖:再次,有一些異常的值。顯然,applicantincome和LoanAmount都需要進(jìn)行一定的數(shù)據(jù)處理。LoanAmount有一些缺失值以及一些異常的值,而applicantincome有一些異常值,需要更深入的了解。我們將在即將
38、到來的部分完成這些。分類變量的分析現(xiàn)在我們了解了applicantincome和loanincome的分布,讓我們了解更多關(guān)于分類變量的細(xì)節(jié)。我們將使用Excel數(shù)據(jù)透視表和交叉制表的風(fēng)格。例如,讓我們看看基于信用記錄,可以獲得貸款的可能性。這可以在微軟的Excel上使用一個透視表實現(xiàn):PivotTableFieldsChoosefieldstoaddtoreport:TALTERSIlliCOLUMNS=KQW5SVALU凸Credit,HistoryAverageofLoan,.,TDragfieldsbetweenareatbelow:注:這里的貸款狀況已被編碼,使用1代表yes,而0代
39、表no,因此,所以均值代表了獲得貸款的概率?,F(xiàn)在我們將看看使用Python產(chǎn)生類似的效果所需要的步驟。請參考這篇文章,以使用Pandas獲得不同的數(shù)據(jù)操縱技術(shù)。七eripl=-d1C弓七0甘._匚oun七(2弓匸已口二門呂=1|-11亡)temp2=-d.pivot_table(val亡呂=Loan_5tatus1,index=Credit_History,aggfi.nc=Lambdax:w.map(Y:1?.iriean()print1Fr亡qurnuyTbleTar匸廠亡ditHistory;1printtemplprintnProbilityof呂亡ttin耳loafor亡已匚h匚ed
40、itIi5tciyclassprinttemp2FrequencyTab-le-forCrilitHistory:9891475Name:Cr&dit-History,dtype:int64ProbiLityofgettingloan-foreachCredizHistoryclass:Credit_Histor/00.07S6S210.7957S9Name:Loanttiisfdty:flo白上應(yīng)牟現(xiàn)在我們可以觀察到我們得到一個像微軟的Excel的pivot_table。這可以使用matplotlib庫繪制成條形圖,使用下面的代碼:importmatplotliL*.pypltaspitfi
41、g=plt”fi召ur已(fig#j.:zE=Es斗)axl=fig.add_subp-lotf121Ja?(工.set_Mlabel(C-edit_|-istary)ajcl.匚a”rutcfexl.set_ti-tle(ApplicantsbyCreditHistDrytempi.plot(kind=bar)5x2=fig,add_sutiplDtteap2.plot(kind=barsx2.se七_(dá)*131:|呂.(Credi_Fistory1)ax2.5et_ylabel(Probiibilit/ofgettinglaan5x2.5et_ti-tle(Pro-babilityofget
42、tingloanbycredithistary1)Credit_Histor7CreditHistory這表明,如果申請人有一個有效的信用記錄,獲得貸款的機(jī)會是沒有信用記錄的人的八倍。你可以根據(jù)Married,Self-Employed,Property_Area等繪制類似的圖?;蛑@兩個圖可以進(jìn)行組合以后的可視化,使用堆疊圖表示:7軟崑葉B曲傘青d図工蜃眄宙刃丑咽咽莊聒謨聲早欲俱沏畜皿J5pLId巳Q04列H一屯卩彳町FpF-bhib一(峯驗望郢糜曲出|Rxm壬沏葉)書歪昭斗YDC出園丁呈旳也俱沏cq-S!H_=lPOKg(ssjEi-|=pi:dSBsnjq1尸BpmjB=jq|_O3f
43、snjj=pa5|:它了5:ff(jeq(=pur|)o_dlfduiq.(,n24S_u?oiLJ-Pc.AJ-osi-i-Tpaj,j.p)qp-OJirpcl=eduia個基于信用歷史,而另一個基于2個分類變量(包括性別)。你可以在AVDatahacks上很快的編寫代碼來創(chuàng)建首次提交。我們只看到我們?nèi)绾问褂肞ython中的Pandas做探索性分析。我希望你對大熊貓(動物)的愛現(xiàn)在增加了給予一些幫助,這個庫可以為你提供分析數(shù)據(jù)集。接下來讓我們進(jìn)一步探討applicantincome和loanstatus變量,進(jìn)行數(shù)據(jù)修改和創(chuàng)建一個數(shù)據(jù)集并應(yīng)用各種建模技術(shù)。我強(qiáng)烈要求你采用另一個數(shù)據(jù)集和習(xí)題
44、,并在進(jìn)一步閱讀之前完成一個獨立的例子。在Python中使用Pandas進(jìn)行數(shù)據(jù)再加工4數(shù)據(jù)修改-新的需要對于那些一直跟下來的人來說,這時你必須穿上鞋才能開始跑。在我們的探索數(shù)據(jù)期間,我們發(fā)現(xiàn)了數(shù)據(jù)集的一些問題,在數(shù)據(jù)準(zhǔn)備好建立一個好的模型之前需要解決。這個練習(xí)通常被稱為數(shù)據(jù)修改”這里是問題,我們已經(jīng)意識到的:在一些變量中有缺失值。我們應(yīng)該基于丟失的值的數(shù)量明智地估計這些值并評估該變量的重要性。當(dāng)我們查看數(shù)據(jù)的分布時,我們看到,applicantincome和LoanAmount似乎在兩端都含有極端值。雖然他們可能有直觀的感覺,但應(yīng)適當(dāng)處理。除了數(shù)值領(lǐng)域的這些問題,我們也應(yīng)該看看非數(shù)值領(lǐng)域Ge
45、nder,Property_Area,Married,Education和Dependents這些變量,看看它們是否包含任何有用的信息。如果你是Pandas的新手,我建議在繼續(xù)前進(jìn)之前閱讀這篇文章。它詳細(xì)介紹了一些有用的數(shù)據(jù)處理技術(shù)。檢查數(shù)據(jù)集中的缺失值讓我們看看所有的變量中的缺失值,因為大多數(shù)模型不能處理有缺失值的數(shù)據(jù),即使他們可以,輸入它們往往不能幫助更多。所以,讓我們看看數(shù)據(jù)集中空值/NAN值的數(shù)量:df.apply(Lambdak:.isnull()這個命令告訴我們每一列中缺失值的數(shù)量,因為如果值為缺失值isnull()返回1。apply(lambda*x;5um(K)jaxi5=0)
46、Loan_IIDeGender13Married3Dependent515EducationeSel-F_Eirip2cyeclApplicantInc&mee匚oapplicntIncome0LoanAmount22LQan_Amcunt_Term14Credit_HistoryseProperty_Area尅Loan_5tatusdtype:irit64雖然缺失值數(shù)量不是很多,但許多變量都有缺失值,它們中的每一個In14:Out14;都應(yīng)該被估計和補(bǔ)充。通過這篇文章對不同的插值技術(shù)進(jìn)行詳細(xì)了解。注:記住,缺失值可能并不總是NaN。例如如果loan_amount_term是0,它是有意義的或
47、者你認(rèn)為是缺失的?我想你的答案是缺失的,你是對的。所以我們應(yīng)該檢查那些不切實際的值。如何填補(bǔ)LoanAmount的缺失值?有許多方法來填補(bǔ)價值貸款金額的缺失值,最簡單的就是使用均值來替換,可以通過以下代碼實現(xiàn):另一個極端是可以建立一個監(jiān)督學(xué)習(xí)模型來基于其他變量預(yù)測貸款金額,然后使用年齡以及其他變量來預(yù)測。既然,現(xiàn)在的目標(biāo)是講述數(shù)據(jù)修改的步驟,我寧愿采取一種方法,它介于這2個極端方法之間。一個關(guān)鍵的假設(shè)是,一個人是否受教育的或是否自雇人士可以結(jié)合起來,提供一個很好的貸款金額的估計。首先,讓我們看看箱線圖看是否有某種趨勢存在:700600500let-groupedSeliEmployed300因
48、此我們看到在每一組中貸款金額的中位數(shù)的一些變化而這可以用2000瀘Educationelf_Em|plciyed來估計值。但首先,我們必須確保每個self_employed和Education變量不應(yīng)該有缺失值。如我們先前所說,self_employed有缺失值。讓我們看看頻率表:In43dfSelf_Emp2oyed.value_counts因為86%的值是“No”,將缺失值估計為“No”是比較可靠的,Out40:Ido500Yes82Uame:Self_Emp2oyed,dtype:irit64有很高的成功概率。這可以用下面的代碼來完成:dfl-_zmploy&d1.fill-iai;No
49、jiriplaceIrue)現(xiàn)在,我們將創(chuàng)建一個數(shù)據(jù)透視表,它提供了我們所有Education和self_employed變量的唯一值分組的中位數(shù)。接下來,我們定義了一個函數(shù),它返回這些單元格的值,并應(yīng)用它來填充丟失的貸款金額的值:table=dfpivo1:_1:01?.亡(2日丄11亡$=LoanAmou門t,ind亡?t=y亡d,CQlumn5=Educationaggfunc=np.medial)#Definefunctiontc?rei:urrvalueofthispivot_tabledsffage(x):returntable.1ock1Self_Employed,)t1Educ
50、ation卄Repla匚emissingvaluesdfLoanAmount.fUlna(dfdfLoanAnnount1.isnull().apply(faKL5=l)inplace=Tlie)這應(yīng)該給你提供了一個估計貸款金額的缺失值好方法。如何處理在LoanAmount和applicantincome分布中的極值?讓我們先分析LoanAmount。由于極端值可能是現(xiàn)實的的,即一些人可能會由于特定的需求,申請高額的貸款,。所以,不把它們當(dāng)做離群點對待,讓我們嘗試對數(shù)據(jù)轉(zhuǎn)換從而發(fā)揮它們的作用:再看直方圖:16D現(xiàn)在的分布看起來更接近標(biāo)準(zhǔn)的,極端值的影響已經(jīng)顯著消退。來看看applicantin
51、come。一種直覺可以是一些申請人有較低的收入,但有一個有力的支持,共同申請者。所以將兩者的收入結(jié)合起來作為總收入可能是一個好主意,并采取相同的對數(shù)變換。d-f1To七日11|1亡0111己_0呂=np.logdff1TotaHrcome)dfLoanAmount_logn.hist(bin=20)16D現(xiàn)在我們看到,分布比以前好多了。我會把Gender,Married,Dependents,Loan_Amount_Term,Credit_History等缺失值的估計留給你。此外,我鼓勵你考慮可能的額外的信息,可以來自數(shù)據(jù)。例如,創(chuàng)建一個LoanAmount/Totallncome列可能會有意
52、義,因為它能給你個關(guān)于申請人如何償還他的貸款的好想法。下一步,我們將研究預(yù)測模型。5.使用Python中建立預(yù)測模型之后,我們已經(jīng)使數(shù)據(jù)可以用于建模,現(xiàn)在讓我們來看看Python代碼,來在我們的數(shù)據(jù)集上創(chuàng)建一個預(yù)測模型。Skicit-kearn(sklearn)是Python中最常用于此目的的庫,我們將跟隨這條小徑。我建議你通過這篇文章來復(fù)習(xí)進(jìn)修sklearn。因為,sklearn要求所有輸入都是數(shù)字,我們應(yīng)該通過編碼類別將我們所有的分類變量轉(zhuǎn)換為數(shù)值型。這可以用下面的代碼來完成:二remsklear.prepro匚Emwii呂import_abelEn匚odrrvar_inod=Gende-1sMar-ied,1Dependents,=cl,匚tior35elf_E:mpl(?yed丄rProperty_ALoan_5tatusl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 碼頭貨物運輸合同
- 工程熱力學(xué)模擬試答題
- 企業(yè)內(nèi)部年度財務(wù)分析報告
- 寓言故事烏鴉喝水的啟示讀后感
- 企業(yè)知識產(chǎn)權(quán)保護(hù)及維權(quán)服務(wù)協(xié)議
- 年度目標(biāo)達(dá)成報告
- 大數(shù)據(jù)挖掘在輿情監(jiān)控中的應(yīng)用實踐指南
- 如何正確使用辦公軟件提高效率
- 太陽能光伏發(fā)電系統(tǒng)安裝合同
- 人與自然紀(jì)錄片評析和諧共生的啟示
- 八年級語文上冊第六單元作業(yè)設(shè)計 品格與志趣
- 鐵道游擊隊測試題6.1總1文檔資料
- 電機(jī)與電氣控制技術(shù)(第2版)全套完整教學(xué)課件
- 掘進(jìn)機(jī)液壓培訓(xùn)課件
- 農(nóng)產(chǎn)品質(zhì)量安全風(fēng)險防范措施
- 麻醉科臨床技術(shù)操作規(guī)范2022版
- 奉賢東部分區(qū)單元(FX3)地質(zhì)災(zāi)害危險性評估報告
- 現(xiàn)代企業(yè)管理專業(yè)實踐考核試題
- 支氣管鏡吸痰操作考核評分標(biāo)準(zhǔn)
- 2023年病歷書寫基本規(guī)范文
- 《中小學(xué)心理健康教育指導(dǎo)綱要(2012年修訂)》
評論
0/150
提交評論