版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
python數(shù)據(jù)分析(DOC46頁)
幾年后發(fā)生了。在使用SAS工作超過5年后,我決定走出自己的舒服
區(qū)。作為一個(gè)數(shù)據(jù)科學(xué)家,我查找其他有用的工具的旅程開始了!幸運(yùn)
的是,沒過多久我就決定,Python作為我的開胃菜。
我總是有一個(gè)編寫代碼的傾向。這次我做的是我真正喜愛的。代碼。
原先,寫代碼是如此容易!
我一周內(nèi)學(xué)會了Python基礎(chǔ)。同時(shí),從那時(shí)起,我不僅深度探究了
這門語言,而且也關(guān)心了許多人學(xué)習(xí)這門語言。Python是一種通用語
言。然而,多年來,具有強(qiáng)大的社區(qū)支持,這一語言差不多有了專門的
數(shù)據(jù)分析和推測模型庫。
由于Python缺乏數(shù)據(jù)科學(xué)的資源,我決定寫這篇教程來關(guān)心別人更
快地學(xué)習(xí)在本教程中,我們將講授一點(diǎn)關(guān)于如何使用
PythonoPython
進(jìn)行數(shù)據(jù)分析的信息,咀嚼它,直到我們覺得舒服并能夠自己去實(shí)踐。
名目
1.數(shù)據(jù)分析的Python基礎(chǔ)
。什么緣故學(xué)Python用來數(shù)據(jù)分析
oPython2.7v/s3.4
。如何樣安裝Python
O在Python上運(yùn)行一些簡單程序
2.Python的庫和數(shù)據(jù)結(jié)構(gòu)
。Python的數(shù)據(jù)結(jié)構(gòu)
。Python的迭代和條件結(jié)構(gòu)
oPython庫
3.在Python中使用Pandas進(jìn)行探干脆分析
。序列和數(shù)據(jù)框的簡介
。分析Vidhya數(shù)據(jù)集——貸款的推測問題
4.在Python中使用Pandas進(jìn)行數(shù)據(jù)再加工
5.使用Python中建立推測模型
。邏輯回來
o決策樹
O隨機(jī)森林
讓我們開始吧
L數(shù)據(jù)分析的Python基礎(chǔ)
什么緣故學(xué)Python用來數(shù)據(jù)分析
專門多人都有愛好選擇Python作為數(shù)據(jù)分析語言。這一段時(shí)刻以來,
我有比較過SAS和R。那個(gè)地點(diǎn)有一些緣故來支持學(xué)習(xí)Python:
?開源——免費(fèi)安裝
?極好的在線社區(qū)
?專門容易學(xué)習(xí)
?能夠成為一種通用的語言,用于基于Web的分析產(chǎn)品數(shù)據(jù)科學(xué)和生產(chǎn)中。
不用說,它仍舊有幾個(gè)缺點(diǎn):
?它是一種說明性的語言,而不是編譯的語言,因此可能占用更多的CPU時(shí)刻。然而,
由于它節(jié)約了程序員的時(shí)刻〔由于學(xué)習(xí)的方便〕,它可能仍舊是一個(gè)專門好的選擇。
Python2.7v/s3.4
這是關(guān)于Python的一個(gè)最具爭議的話題。你可能總是不能幸免遇到,
專門是假如你是一個(gè)初學(xué)者。那個(gè)地點(diǎn)沒有正確/錯(cuò)誤的選擇。它完全
取決于具體情形和你的需要。我會嘗試給你一些建議,以關(guān)心你做出明
智的選擇。
什么緣故選擇Python2.7
1.極好的社區(qū)支持!這是你在初期需要的東西。Python2發(fā)行于2000年末,差不多
被使用超過15年。
2.專門多第三方庫!盡管許多庫差不多提供了3.X的支持,但仍舊有大量的模塊只工
作在2.X。假如你打算將Python用于具體的應(yīng)用,如Web開發(fā)這種高度依
靠外部模塊的,你選擇2.7可能會更好。
3.3.X版本的一些特性有向后兼容性,能夠使用2.7版本。
什么緣故選擇Python3.4
1.更整齊和更快!Python開發(fā)者修正了一些固有的問題和小缺點(diǎn),以此為以后建立
一個(gè)強(qiáng)大的基礎(chǔ)。這些可能不是專門相關(guān),但最終會專門重要。
2.這是以后!2.7是2.X族公布的最后一個(gè)版本,同時(shí)最終每個(gè)人都要轉(zhuǎn)移到3.X版
本。Python3在過去5年差不多公布的穩(wěn)固版本,并將連續(xù)。
沒有明確的贏家,但我想,底線是,你應(yīng)該用心于學(xué)習(xí)Python語言。
版本之間的轉(zhuǎn)換應(yīng)該只是一個(gè)時(shí)刻問題。敬請期待,不久的今后一個(gè)專
門對比Python2.X和3X的文章!
如何樣安裝Python
有兩種方法安裝Python
?你能夠直截了當(dāng)從項(xiàng)目網(wǎng)站下載Python,然后單獨(dú)安裝你想要的組件和庫
?或者,你能夠下載并安裝一個(gè)包,它附帶了預(yù)裝的庫。我建議您下載Anaconda.
另一種選擇是
EnthoughtCanopyExpresso
第二種方法提供了一個(gè)幸免苦惱的安裝,因此我會舉薦給初學(xué)者。這種
方法是你必須等待整個(gè)包進(jìn)行升級,即使你只是對一個(gè)單一的庫的
最新版本感愛好。它應(yīng)該不重要,直到和除非,直到和除非,你正在做
的尖端統(tǒng)計(jì)研究。
選擇開發(fā)環(huán)境
一旦你差不多安裝了Python,選擇環(huán)境能夠有專門多種選擇。那個(gè)
地點(diǎn)是3個(gè)最常見的選擇:
?終端/基于Shell
?IDLE(默認(rèn)環(huán)境)
?iPythonnotebook-----類似于R的markdown
箱Python2.7.6Shell一口Kifl
FileEditShellDebugOptionsWindowsHelp
Python2.7.6(default,Nov102013,19:24:24)[MSCv.150064bit(AMD64)]onwin
32
Type"copyright","credits"or"license()nformoreinformation.
?>I
而環(huán)境權(quán)取決于你的需要,我個(gè)人更喜愛iPythonnotebook一點(diǎn)。
它提供了許多良好的功能,編寫代碼的同時(shí)還能夠用于記錄,你能夠選
擇在上面運(yùn)行代碼塊〔而不是一行一行的執(zhí)行〕。
我們在整個(gè)教程中將使用Ipython環(huán)境
熱身:跑第一個(gè)Python程序
你能夠使用Python作為一個(gè)簡單的運(yùn)算器來開始:
:JUpyterMyFirstiPythonNotebookLastCheckpoint:3minutesag(
FileEditViewInsertCellKernelHelp
IS+?t個(gè)*H■CMarkdown▼CellToolbarNone
In[1]:2+3ffFirstprograminiPythonnotebookenvironment
^MultiplelinescanbewrittenhereandtheyMILexectec
Out[l]:5
Thisisanexampleofmarkdowntext.Thisisusefulforaddingcommi
有一些情況需要注意:
?你能夠在你的終端/CMD鍵入''IPythonnotebook"來啟動IPythonnotebook,
這取決于你的工作在操作系統(tǒng)
?你能夠通過簡單地點(diǎn)擊上面截圖中的名字來對IPythonnotebook命名
?界面顯示In[*]代表輸入和Out[*]代表輸出。
?你能夠通過按''Shift+Enter"或''ALT+Enter”來執(zhí)行代碼,假如你后面還想插
入一行。
在我們深入挖掘如何解決問題之前,讓我們退后一步,了解Python
的差不多知識。當(dāng)我們明白數(shù)據(jù)結(jié)構(gòu)和迭代和條件結(jié)構(gòu)是形成任何語言
的關(guān)鍵。在Python中,這些包括列表、字符串、元組、字典、for■循
環(huán),while循環(huán),if-else等等,讓我們來看看下面的因素。
2.在Python上運(yùn)行一些簡單程序
Python的數(shù)據(jù)結(jié)構(gòu)
以下是Python中使用的一些數(shù)據(jù)結(jié)構(gòu)。你應(yīng)該熟悉他們,以便恰當(dāng)
的使用它們。
?歹11表——列表是在Python中最通用的數(shù)據(jù)結(jié)構(gòu)。列表能夠如此簡單的定義:確實(shí)
是在方括號中一系列用逗號來分隔的值。列表可能包含不同類型的項(xiàng),但它們通常
都有相同類型的。Python列表是可變的,列表中的單個(gè)元素是能夠改變的。
那個(gè)地點(diǎn)是一個(gè)快速的例子,定義了一個(gè)列表,然后訪問它:
Lists
Alistcanbesimplydefinedbywritingcommaseparatedvaluesinsquarebrackets.
In[1]:squares_list=[0,1,4,9,16,25]
In[2]:squares_list
Out[2]:(Or1,4,9,1€,25]
Individualelementsofalistcanbeaccessedbywritingtheindexnumberinsquarebracket.Pleasenotethatthefirstindexofalistis0an
In[3]:squaxe3_list[0]^Indexingreturnstheitem
Out[3]:0
Arangeofscriptcanbeaccessedbyhavingfirstindexandlastindex
In[4]:squares^ist[2:4]^Slicingreturnsanevlist
Out[4]:[4,9]
ANegativeindexaccessesthelistfromend
In[5]:3qpiares_list[-2]shouldreturnthesecondlastelement二二tr.elist
Out[5]:16
Afewcommonmethodsapplicabletolistsinclude:append()extend。insert。remove()pop()count()sort()reverse()
?字符串——字符串能夠簡單的使用單引號「〕、雙引號〔"〕或三引號〔’’’〕
來定義。字符串封閉三引號)中能夠跨過多行的代碼,在文檔字符串中是
專門常用的〔記錄功能的Python方式〕。作為一個(gè)轉(zhuǎn)義字符。請注意,Python中
的字符串是不可變的,因此你不能改變字符串的部分。
Strings
Astringcanbesimplydefinedbyusingsingle(*),double(")ortriple(*)quotation
In[6]:greeting=*Hello1
printgreeting[1]#ReturncharacterontheIndex1
printlen(greeting)#Printslengthofstring
printgreeting+'World'#StringConcatenatlon
e
5
HellcWorld
Rawstringscanbeusedtopassonstringasis.Pythoninterpretterdoesnotalterthestring,ifyouspecifyastringtoberaw.Rawsi
string
In[8]:stmt=r*\nisanewlinecharacterbydefault.,
printstmt
\nisanewlinecharacterbydefault.
Pythonstringsareimmutableandhencecanbechanged.Doingsowillresultinanerror
In[9]:greeting[1:]=1i'^TryingtochangeHellotoHi..Shouldresultinanerror
TypeErrorTraceback(mostrecentcalllast)
<ipython-inpu-C-9-2da872e33998>in<module>()
--->1greeting(1:]=1i*^TryingtochangeHellotoHi.Shouldresultinanerror
TypeError:*str'objectdceanotsupportiremassignment
Commonstringmethodsincludelov/er(),upper(),strip(),isdigit(),isspace(),find(),replace(),split()andjoin().Theseareusuallyvery
manipulationsorcleaningontextfields.
?元組——元組由一系列由逗號分隔的值表示。元組是不可變的,輸出的用括號包圍,
目的是嵌套結(jié)構(gòu)能夠被正確處理。此外,盡管元組是不可變的,但它們能夠在必要
是含有可變數(shù)據(jù)。
因?yàn)樵M是不可變的,不可改變的,他們相對列表來說能夠處理的更
快。因此,假如你的清單是不可能改變的,你應(yīng)該使用元組,而不是列
Tuples
Atupleisrepresentedbyanumberofvaluesseparatedbycommas
In[10]:tuple_exaiEple=。,1,4,9,16,25
In[11]:tuple_exanqple/outputvouldbeenclosedinparanthesis
Out[11]:(0f1,4,9,16,25)
In[12]:tuple_exair.ple[2]fSingleelementscanbeaccessedinsimilarfashion
Out[12]:4
In[13]:tuple_exair.ple[2]=6#Tuplesareimmutableandhencethisshouldresulti
TypeErrorTraceback(mostrecentcalllas
<ipyrhon-input-13-6c410e816018>in<module>()
------->1tuple_exainple[2]=6#Tuplesareimmutableandhencethisshould
TypeError:'tuple1objectdoesnotsupportitemassignment
,字典一字典是鍵:值對一個(gè)無序集合,要求鍵是唯獨(dú)的〔在一個(gè)字典里〕。一對
大括號創(chuàng)建一個(gè)空的字典:{}。
Dictionary
Adictionaryisanunorderedsetofkey:valuepairs,withtherequirementthatthekeysareunique(withinonedictior
In[20]:extensions={1Kxmal':9073,'lavish1:9128,"Sunil1:9223,"Nitin,:93
extensions
0ut[20]:{?Kunal*:9073,"Nitin*:9330,'Sunil':9223,?lavish?:9128)
In[22]:extensions[*Idukesh1]=9150
extensions
Out[22]:{?Kunal1:9073,?Mukesh1:9150,?Nitin,:9330,'Sunil,:9223,'lavish*:91
In[23]:extensions.keys
Out[23]:['Sunil',?lavish*,?Kunal',?Mukesh*,'Nitin*]
Python的迭代和條件結(jié)構(gòu)
和大多數(shù)語言一樣,Python也有一個(gè)FOR循環(huán),這是最廣泛使用的
迭代方法。它有一個(gè)簡單的語法:
foriin[PythonIterable]:
expression(i)
那個(gè)地點(diǎn)的''Python的迭代能夠是列表、元組或其他先進(jìn)的數(shù)據(jù)結(jié)
構(gòu),我們將在后面的章節(jié)中探討。讓我們來看看一個(gè)簡單的例子,確定
一個(gè)數(shù)字的因子。
fact=l
foriinrange(l,N+l):
fact*=i
來看看條件語句,它們是用來基于條件執(zhí)行代碼片段。最常用的結(jié)構(gòu)
是if-else,有以下語法:
if[condition]:
_executioniftrue_
else:
_executioniffalse_
例如,假如我們想打印出某個(gè)數(shù)字n是偶數(shù)依舊奇數(shù):
if==0:
print*Even,
else:
print'Odd*
既然你熟悉了Python的基礎(chǔ),我們來更近一步。假如你像完成以下
任務(wù):
1.乘2矩陣
2.求二次方程的根
3.繪制條形圖和直方圖
4.建立統(tǒng)計(jì)模型
5.訪問網(wǎng)頁
假如你想從零開始寫代碼,它將是一場噩夢,你使用Python可不能
超過2天!但不要擔(dān)憂這些。值得慶幸的是,有許多預(yù)定義的庫,我們
能夠直截了當(dāng)導(dǎo)入到我們的代碼,使我們的生活專門容易。
例如,考慮我們剛才看到的因子的例子。我們能夠一步就完成:
math.factorial(N)
因此,為了如此我們需要導(dǎo)入的math庫。讓我們探究下一個(gè)不同的
庫。
Python庫
在開始我們的學(xué)習(xí)Python之旅之前,讓我們先一步,了解一些有用
的python庫。第一步明顯是要學(xué)會將它們導(dǎo)入到我們的環(huán)境中。在
Python中有以下幾種方法:
importmathasm
frommathimport*
在第一種方式中,我們差不多為math庫定義了一個(gè)別名mo現(xiàn)在我
們能夠使用數(shù)學(xué)庫的各種功能〔例如階乘,通過引用別名
m.factorialO)。
第二方式,你需要導(dǎo)入math的整個(gè)命名空間,你能夠直截了當(dāng)使用
factorial(),而不用提到matho
提示:谷歌舉薦您使用第一種方式導(dǎo)入庫,因?yàn)槟鷮⒚靼缀瘮?shù)來自何逅
下面是一個(gè)庫列表,你將在任何科學(xué)運(yùn)算和數(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[IPythonnotebook-PyLab=inline)以此使
用這些繪圖功能的inline。假如你忽略inline選項(xiàng),PyLab會將IPythonnotebook
環(huán)境轉(zhuǎn)換成類似于Matlab的環(huán)境。你也能夠使用Latex命令將math庫添加到您
的繪圖中。
?Pandas關(guān)于結(jié)構(gòu)化數(shù)據(jù)操作和操縱。它廣泛用于數(shù)據(jù)再加工和數(shù)據(jù)預(yù)備。Pandas
說最近一直在推動對PythonPython的使用數(shù)據(jù)科學(xué)家共同體的工具。
?ScikitLearn機(jī)器學(xué)習(xí)庫。建立在NumPy、SciPy和matplotlib的基礎(chǔ)上,那個(gè)
庫包含了機(jī)器學(xué)習(xí)和統(tǒng)計(jì)模型包括分類、回來、聚類和降維等專門多有效的工具。
?Statsmodels用于統(tǒng)計(jì)建模。statsmodels是一個(gè)Python模塊,承諾用戶探究數(shù)
據(jù),估量統(tǒng)計(jì)模型,并進(jìn)行統(tǒng)計(jì)檢驗(yàn)。一個(gè)廣泛的描述性統(tǒng)計(jì),統(tǒng)計(jì)檢驗(yàn)的列表。
繪圖功能,和結(jié)果統(tǒng)計(jì)可用于不同類型的數(shù)據(jù)和每個(gè)估量。
?Seaborn用于統(tǒng)計(jì)數(shù)據(jù)的可視化。Seaborn是Python中用來繪制讓人喜愛的并能
提供大量信息的統(tǒng)計(jì)圖形庫。它是基于matplotlib.Seaborn旨在使可視化成為探
究和明白得數(shù)據(jù)的核心部分。
?Bokeh創(chuàng)建交互式圖、外表盤和現(xiàn)代Web掃瞄器上的數(shù)據(jù)應(yīng)用。它承諾用戶生成
的文雅和簡潔的d3.js風(fēng)格的圖形。此外,在專門大的或流媒體數(shù)據(jù)集上,它具有
高性能的交互性的能力。
?Blaze擴(kuò)展NumPy和Pandas的分布式和流媒體數(shù)據(jù)集。它能夠用來訪問來自多
種來源的數(shù)據(jù),包括bcolz,MongoDB,SQLAIchemy,ApacheSpark,PyTables
等等,結(jié)合Bokeh,Blaze能夠作為一個(gè)專門強(qiáng)大的工具,用于對大規(guī)模數(shù)據(jù)創(chuàng)建
高效的的可視化和外表板。
?Scrapy用于網(wǎng)絡(luò)爬蟲。它是用于獵取特定數(shù)據(jù)模式的一個(gè)專門有用的框架它能
夠通過開始的一個(gè)網(wǎng)站主頁的網(wǎng)址,然后通過挖掘網(wǎng)頁內(nèi)的網(wǎng)站收集信息。
?SymPy用于符號運(yùn)算。它具有廣泛的功能,從差不多的符號運(yùn)算到微積分,代數(shù),
離散數(shù)學(xué)和量子物理學(xué)。另一個(gè)有用的功能是將運(yùn)算的結(jié)果格式化為LaTeX碼的能
力。
?Requests用于訪問網(wǎng)絡(luò)。它的工作原理類似于Python標(biāo)準(zhǔn)庫urllib2,然而更容
易編碼。但關(guān)于初學(xué)者,你會發(fā)覺和urllib2細(xì)微的差別,Requests可能更方便。
其它的庫,你可能需要:
?os用于操作系統(tǒng)文件操作
?networkx和igraph基于數(shù)據(jù)操作繪制圖形
?regularexpressions用于在文本數(shù)據(jù)中查找模式
?BeautifulSoup將探究Web,它不如Scrapy,它一次運(yùn)行將從一個(gè)單一的網(wǎng)頁中
提取信息。
現(xiàn)在我們差不多熟悉Python的基礎(chǔ)和更多的庫,讓我們深入到通過
Python解決問題。是的,我的意思是做一個(gè)推測模型!在那個(gè)過程中,
我們使用了一些強(qiáng)大的庫,也遇到了下一級的數(shù)據(jù)結(jié)構(gòu)。我們將帶你通
過這3個(gè)關(guān)鍵時(shí)期:
1.數(shù)據(jù)探究一從我們所擁有的數(shù)據(jù)中發(fā)覺更多
2.數(shù)據(jù)修改一清理數(shù)據(jù)和并修改它使它更適合用來統(tǒng)計(jì)建模
3.推測建模一運(yùn)行的實(shí)際算法,自得其樂
3.在Python中使用Pandas迸行探干脆分析
為了進(jìn)一步探究我們的數(shù)據(jù),讓我把你介紹給另一種動物〔看起來
Python是不夠的!)—Pandas
Pandas是Python最有用的一種數(shù)據(jù)分析庫的我明白這些名字聽起
來專門驚奇,但堅(jiān)持下去!〕它們關(guān)于增加一直在增加Python在數(shù)據(jù)
科學(xué)界的使用量起了專門大的作用。我們現(xiàn)在將使用Pandas從
AnalyticsVidhya的競賽中讀數(shù)據(jù)集,進(jìn)行探干脆分析,建立我們的第
一個(gè)差不多分類算法來解決這一問題。
在加載數(shù)據(jù)之前,讓我們了解Pandas中的2個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)
序列和數(shù)據(jù)框
序列和數(shù)據(jù)框的簡介
序列能夠被明白得為一個(gè)1維標(biāo)記/索引數(shù)組。你能夠通過這些標(biāo)簽
訪問那個(gè)序列的各個(gè)元素。
一個(gè)數(shù)據(jù)框類似于Excel工作簿-你能夠使用列名來引用列,能夠通過
行號來訪問行數(shù)據(jù),本質(zhì)的區(qū)別是,在數(shù)據(jù)幀中,列名和行號是列和行
的索引。
More:10MinutestoPandas
實(shí)踐數(shù)據(jù)集—貸款推測問題
您能夠從那個(gè)地點(diǎn)下載數(shù)據(jù)集。那個(gè)地點(diǎn)是變量的描述:
VARIABLEDESCRIPTIONS:
VariableDescription
Loan_IDUniqueLoanID
GenderMale/Female
MarriedApplicantmarried(Y/N)
DependentsNumberofdependents
EducationApplicantEducation(Graduate/UnderGraduate)
Self_EmployedSelfemployed(Y/N)
ApplicantincomeApplicantincome
CoapplicantIncomeCoapplicantincome
1,.LoanAmountLoanamountinthousands
iLoan_Amount_TermTermofloaninmonths
1Credit_Historycredithistorymeetsguidelines
IProperty_AreaUrban/SemiUrban/Rural
■Loan_StatusLoanapproved(Y/N)
讓我們從數(shù)據(jù)探究開始
開始,通過在你的你的終端/Windows命令提示符鍵入下面的代碼,
來以InlinePylab模式啟動IPython界面:
ipythonnotebook--pylab=inline
這在PyLab環(huán)境下打開IPythonnotebook,其中有幾個(gè)有用的庫差
不多導(dǎo)入。此外,你將能夠繪制您的數(shù)據(jù)內(nèi)聯(lián),這關(guān)于互動的數(shù)據(jù)分析
是一個(gè)專門好的環(huán)境。你能夠通過鍵入以下命令,檢查環(huán)境是否正確的
加載了〔并獲得如以下圖所示的輸出〕:
plot(arange(5))
我目前在Linux上工作,并已將數(shù)據(jù)集儲備在以下位置:
/home/kunal/Downloads/Loan_Prediction/train.csv
導(dǎo)入庫和數(shù)據(jù)集:
下面是我們將在本教程中使用的庫:
?numpy
?matplotlib
?pandas
請注意,你不需要導(dǎo)入matplotlib和NumPy,因?yàn)槭窃赑yLab環(huán)
境下。但我仍舊在代碼中保留了它們,以防你在不同的環(huán)境中使用代碼。
導(dǎo)入庫以后,你能夠使用read_csv()函數(shù)讀數(shù)據(jù)集。這是直到那個(gè)時(shí)
期的代碼:
importpandasaspd
importnumpyasnp
importmatplotlibaspit
df=pd.read_csv(M/home/kunal/Downloads/Loan_Prediction/train.csvM)#Reading
thedatasetinadatafnameusingPandas
快速數(shù)據(jù)探究
一旦你讀取了數(shù)據(jù),能夠通過使用head。函數(shù)查看一下前幾行的數(shù)
據(jù):
df.head(10)
In(3]:df.head(10)^Printingfirst10rowsofdataset
Out[3]:Loan-lDGenderMarriedDependentsEducationSelf-EmployedApplicantincomeCo;
0LP001002MaleNo0GraduateNo58490
1LP001003MaleYes1GraduateNo458315C
2LP001005Male0GraduateYes30000
Not
3LP001006MaleYes0No2583235
Graduate
4LP001008MaleNo0GraduateNo60000
5LP001011MaleYes2GraduateYes541741S
Not
6LP001013MaleYes0No2333151
Graduate
7LP001014Male3+GraduateNo303625C
8LP001018MateYes2GraduateNo4006152
9LP001020Male一.1GraduateNo1284110S
這應(yīng)該打印10行?;蛘撸材軌蛲ㄟ^打印數(shù)據(jù)集來查看更多的行。
接下來,你能夠使用describe。函數(shù)來查看數(shù)值字段的概要:
df.describe()
In[4]:df.describe()#6etsummaryofnumericaLvariabLe^
Out[4]:ApplicantincomeCoapplicantincomeLoanAmountLoan_Amount_Term
count614.000000614000000592.000000600.00000
mean5403.4592831621.245798146.412162342.00000
std6109.0416732926.24836985,58732565,12041
min150.0000000.0000009.00000012,00000
25%2877.5000000.000000100.000000360.00000
50%3812.5000001188.500000128.000000360.00000
75%57950000002297.25000016800000036000000
max81000.00000041667.000000700.000000480.00000
describe。功能將提供計(jì)數(shù)、平均、標(biāo)準(zhǔn)差〔STD〕,最小值,分位
數(shù)值和最大值〔讀這篇文章來更新差不多統(tǒng)計(jì)數(shù)據(jù)了解人口分布〕
那個(gè)地點(diǎn)有幾個(gè)結(jié)論,你能夠通過查看describe。函數(shù)的輸出得出:
1.LoanAmount有(614-592)22個(gè)缺失值
2.Loan_Amount_Term有(614-600)14個(gè)缺失值
3.Credit_HistoryW(614-564)50個(gè)缺失值
4.我們還能夠看到84%的申請者有credit_history,如何樣,credit_history的均值
為0.84〔記住,credit_history將那些有信用歷史的值設(shè)置為1,沒有的設(shè)置為0]
5.Applicantincome的分布看起來和expectation呈線性關(guān)系,
Coapplicantincome也是。
請注意,我們通過比較的平均值和中位數(shù),即50%位數(shù),來得到偏差
的概念。
關(guān)于非數(shù)值〔例如property_area,credit_history等〕,我們能夠
看看頻率分布,了解他們是否有意義。頻率表能夠通過以下命令打?。?/p>
df[1Property_Area'].value_counts()
同樣地,我們能夠看看信用卡歷史的唯獨(dú)值。注意,dfname
["column_name]是一個(gè)差不多的索引技術(shù),來訪問一個(gè)數(shù)據(jù)框的特
定的列。它也能夠是列的列表。想要了解更多信息,參考上面的
“Pandas10分鐘教程”的資源共享。
分布分析
現(xiàn)在我們熟悉了差不多的數(shù)據(jù)特點(diǎn),讓我們研究不同變量的分布情
形。讓我們從數(shù)字變量開始-即applicantincome和LoanAmount
我們通過繪制applicantincome的直方圖開始,使用下面的命令:
df['Property-Area*].value_counts()
在那個(gè)地點(diǎn),我們觀看到,有幾個(gè)極端值。這也是分箱值為50的緣
故,確實(shí)是為了清晰地描述它的分布。
下一步,我們看箱線圖,了解分布。fare的箱圖能夠使用下面代碼繪
制:
df.boxplot(column="Applicantincome')
90000
80000
70000
60000
50000
40000豐
+
30000
20000
100001
0j
Applicantincome
這證實(shí)了大量的離群值/極值的存在。這能夠歸因于社會上的收入差
距。部分緣故源于如此一個(gè)事實(shí):我們正在查看不同的教育水平的人。
讓我們依照他們所受的教育進(jìn)行分組:
df.boxplot(column=*Applicantincome'by='Education*)
我們能夠看到,研究生和非畢業(yè)生的平均收入之間沒有實(shí)質(zhì)性的區(qū)
別。然而畢業(yè)生中高收入的人群更多,它們顯現(xiàn)在專門值的點(diǎn)中。
現(xiàn)在,讓我們使用下面的命令看看LoanAmount的直方圖和箱線圖:
再次,有一些專門的值。B月顯,applicantincome和LoanAmount
都需要進(jìn)行一定的數(shù)據(jù)處理。LoanAmount有一些缺失值以及一些專
門的值,而applicantincome有一些專門值,需要更深入的了解。我
們將在立即到來的部分完成這些。
分類變量的分析
現(xiàn)在我們了解了applicantincome和loanincome的分布,讓我們
了解更多關(guān)于分類變量的細(xì)節(jié)。我們將使用Excel數(shù)據(jù)透視表和交叉制
表的風(fēng)格。例如,讓我們看看基于信用記錄,能夠獲得貸款的可能性。
這能夠在微軟的Excel上使用一個(gè)透視表實(shí)現(xiàn):
PivotTableFields
Choosefieldstoaddtoreport:
Dragfieldsbetweenareasbelow:
TRLTERSIlliCOLUMNS
=ROWS工VALUES
Credit_History▼AverageofLoan_...▼
注:那個(gè)地點(diǎn)的貸款狀況已被編碼,使用1代表yes,而0代表no,
因此,因此均值代表了獲得貸款的概率。
現(xiàn)在我們將看看使用Python產(chǎn)生類似的成效所需要的步驟。請參考
這篇文章,以使用Pandas獲得不同的數(shù)據(jù)操縱技術(shù)。
tempi=df['Credit_History*].value_counts(ascending=True)
temp2=df,pivot_table(values='Loan_Status',index=['Credit_History*],aggfunc
lambdax:x.map({.mean())
print'FrequencyTableforCreditHistory:'
printtempi
print,\nProbilityofgettingloanforeachCreditHistoryclass:
printtemp2
FrequencyTableforCreditHistory:
089
1475
Name:Credit_History,dtype:int64
ProbilityofgettingloanforeachCreditHistoryclass:
Credit_History
0078652
10.795789
Name:Loan_Status,dtype:float64
現(xiàn)在我們能夠觀看到,我們得到一個(gè)像微軟的的
Excelpivot_tableo
這能夠使用matplotlib庫繪制成條形圖,使用下面的代碼:
importmatplotlib.pyplotaspit
fig=pit.figure(figsize=(8,4))
axl=fig.add_subplot(121)
axl.set_xlabel(*Credit__History*)
axl.set_ylabel(*CountofApplicants')
axl.set_title(MApplicantsbyCredit_HistoryM)
tempi.plot(kind='bar')
ax2=fig.add_subplot(122)
temp2.plot(kind=*bar')
ax2.set_xlabel(*Credit_History')
ax2.set__ylabel(1Probabilityofgettingloan*)
ax2.set_title(MProbabilityofgettingloanbycredithistory1')
ApplicantsbyCreditHistoryloanbycredithistory
7
c。
os
SI-6
o
H306
uU
?205
-10o-£6
d
d(
qD64
jJ
o
O0.。
lo
u3
n2?三
o
oqo
e2
ooq
」6
d1
00
oQo
r-1oi-i
CreditHistoryCreditHistory
這說明,假如申請人有一個(gè)有效的信用記錄,獲得貸款的機(jī)會是沒有
信用記錄的人的八倍。你能夠依照Married,Self-Employed,
Property_Area等繪制類似的圖。
或著,這兩個(gè)圖能夠進(jìn)行組合以后的可視化,使用堆疊圖表示:
temp3=pd.crosstab(df[*Credit_History*],df[,Loan_Status*])
1
temp3.plot(kind='bar',stacked=True.?color=['red'9blue*],grid=False)
QeditHistoiy
你還能夠再上圖中加入性別變量〔類似于Excel中的數(shù)據(jù)透視表〕
(?H(
里
里
B£
E£
B
00
01
U.-)0)
O1
))
Credit_History,Gender
假如你還沒有意識到,我們剛剛在那個(gè)地點(diǎn)創(chuàng)建了兩個(gè)差不多的分類
算法,一個(gè)基于信用歷史,而另一個(gè)基于2個(gè)分類變量〔包括性別〕。
你能夠在AVDatahacks上專門快的編寫代碼來創(chuàng)建首次提交。
我們只看到我們?nèi)绾问褂肞ython中的Pandas做探干脆分析。我期
望你對大熊貓〔動物〕的愛現(xiàn)在增加了——給予一些關(guān)心,那個(gè)庫能夠
為你提供分析數(shù)據(jù)集。
接下來讓我們進(jìn)一步探討叩plicantincome和loanstatus變量,進(jìn)
行數(shù)據(jù)修改和創(chuàng)建一個(gè)數(shù)據(jù)集并應(yīng)用各種建模技術(shù)。我強(qiáng)烈要求你采納
另一個(gè)數(shù)據(jù)集和習(xí)題,并在進(jìn)一步閱讀之前完成一個(gè)獨(dú)立的例子。
在Python中使用Pandas進(jìn)行數(shù)據(jù)再加工
4.數(shù)據(jù)修改闔新的需要
關(guān)于那些一直跟下來的人來說,這時(shí)你必須穿上鞋才能開始跑。
在我們的探究數(shù)據(jù)期間,我們發(fā)覺了數(shù)據(jù)集的一些問題,在數(shù)據(jù)預(yù)備
好建立一個(gè)好的模型之前需要解決。那個(gè)練習(xí)通常被稱為''數(shù)據(jù)修
改”。那個(gè)地點(diǎn)是問題,我們差不多意識到的:
1.在一些變量中有缺失值。我們應(yīng)該基于丟失的值的數(shù)量明智地估量這些值并評估該
變量的重要性。
2.當(dāng)我們查看數(shù)據(jù)的分布時(shí),我們看到,applicantincome和LoanAmount看起來
在兩端都含有極端值。盡管他們可能有直觀的感受,但應(yīng)適當(dāng)處理。
除了數(shù)值領(lǐng)域的這些問題,我們也應(yīng)該看看非數(shù)值領(lǐng)域Gender,
Property_Area,Married,Education和Dependents這些變量,看
看它們是否包含任何有用的信息。
假如你是Pandas的新手,我建議在連續(xù)前進(jìn)之前閱讀這篇文章。它
詳細(xì)介紹了一些有用的數(shù)據(jù)處理技術(shù)。
檢查數(shù)據(jù)集中的缺失值
讓我們看看所有的變量中的缺失值,因?yàn)榇蠖鄶?shù)模型不能處理有缺失
值的數(shù)據(jù),即使他們能夠,輸入它們往往不能關(guān)心更多。因此,讓我們
看看數(shù)據(jù)集中空值/NAN值的數(shù)量:
df.apply(lambdax:sum(x.isnull())^3x15=0)
那個(gè)命令告訴我們每一列中缺失值的數(shù)量,因?yàn)榧偃缰禐槿笔е?/p>
返回
isnull()lo
In[14]:df.apply(lambdax:sum(x.isnull())^axis=0)
Out[14]:Loan_ID0
Gender13
Married3
Dependents15
Education0
Self__Employed32
ApplicantIncome0
Coapplicantincome0
LoanAmount22
Loan__Amount_Term14
Credit_History50
Property_Area0
Loan_Status0
dtype:int64
盡管缺失值數(shù)量不是專門多,但許多變量都有缺失值,它們中的每一
個(gè)都應(yīng)該被估量和補(bǔ)充。通過這篇文章對不同的插值技術(shù)進(jìn)行詳細(xì)了
解。
注記住,缺失值可能并不總是NaN。例如,假如loan_amount_term
是0,它是有意義的或者你認(rèn)為是缺失的?我想你的答案是缺失的,你
是對的。因此我們應(yīng)該檢查那些不切實(shí)際的值。
如何填補(bǔ)LoanAmount的缺失值?
有許多方法來填補(bǔ)價(jià)值貸款金額的缺失值,最簡單的確實(shí)是使用均值
來替換,能夠通過以下代碼實(shí)現(xiàn):
另一個(gè)極端是能夠建立一個(gè)監(jiān)督學(xué)習(xí)模型來基于其他變量推測貸款金
額,然后使用年齡以及其他變量來推測。
既然,現(xiàn)在的目標(biāo)是講述數(shù)據(jù)修改的步驟,我寧愿采取一種方法,它
介于這2個(gè)極端方法之間。一個(gè)關(guān)鍵的假設(shè)是,一個(gè)人是否受教育的或
是否自雇人士能夠結(jié)合起來,提供一個(gè)專門好的貸款金額的估量。
第一,讓我們看看箱線圖看是否有某種趨勢存在:
[Education,SelfEmployed]
因此我們看到在每一組中貸款金額的中位數(shù)的一些變化而這能夠用
來估量值。但第一,我們必須確保每個(gè)self_employed和Education
變量不應(yīng)該有缺失值。
如我們先前所說,self_employed有缺失值。讓我們看看頻率表:
In[40]:df[,Self_Employed'].value_counts
Out[40]:No500
Yes82
Name:Self_Employed?dtype:int64
因?yàn)閪86%的值是、'N。",將缺失值估量為''No”是比較可靠的,
有專門高的成功概率。這能夠用下面的代碼來完成:
df['Self_Employed1].fillna('No'jinplace=True)
現(xiàn)在,我們將創(chuàng)建一個(gè)數(shù)據(jù)透視表,它提供了我們所有Education和
self_employed變量的唯獨(dú)值分組的中位數(shù)。接下來,我們定義了一個(gè)
函數(shù),它返回這些單元格的值,并應(yīng)用它來填充丟失的貸款金額的值:
table=df.pivot_table(values='LoanAmount',index='Self_Employed1,columns=*E
ducation*,aggfunc=np.median)
#Definefunctiontoreturnvalue
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能農(nóng)業(yè)的土地利用規(guī)劃
- 四川電影電視學(xué)院《動畫史與經(jīng)典作品賞析》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《藥用植物學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《食品技術(shù)原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《結(jié)構(gòu)力學(xué)二》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《家庭社會工作》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《房屋建筑學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《自動控制原理》2023-2024學(xué)年期末試卷
- 沈陽理工大學(xué)《商業(yè)攝影》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《建筑實(shí)務(wù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 某集團(tuán)公司戰(zhàn)略地圖
- 《線性代數(shù)》教案完整版教案整本書全書電子教案
- 旅游管理信息系統(tǒng)教材課件匯總完整版ppt全套課件最全教學(xué)教程整本書電子教案全書教案合集最新課件匯編
- 三年級下冊美術(shù)課件-第4課 瓜果飄香丨贛美版
- 綠電制綠氫及其綜合利用技術(shù)PPT
- JJG646-2006移液器檢定規(guī)程-(高清現(xiàn)行)
- 【課題研究】-《普通高中英語閱讀課文教學(xué)研究》結(jié)題報(bào)告
- 嚴(yán)重精神障礙管理工作規(guī)范課件(PPT 39頁)
- 羊常見普通病類型和防治
- 梁板柱同時(shí)澆筑及方案
- 溝槽開挖支護(hù)專項(xiàng)施工方案(46頁)
評論
0/150
提交評論