




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
python數(shù)據(jù)分析(DOC46頁)
幾年后發(fā)生了。在使用SAS工作超過5年后,我決定走出自己的舒服
區(qū)。作為一個數(shù)據(jù)科學(xué)家,我查找其他有用的工具的旅程開始了!幸運
的是,沒過多久我就決定,Python作為我的開胃菜。
我總是有一個編寫代碼的傾向。這次我做的是我真正喜愛的。代碼。
原先,寫代碼是如此容易!
我一周內(nèi)學(xué)會了Python基礎(chǔ)。同時,從那時起,我不僅深度探究了
這門語言,而且也關(guān)心了許多人學(xué)習(xí)這門語言。Python是一種通用語
言。然而,多年來,具有強大的社區(qū)支持,這一語言差不多有了專門的
數(shù)據(jù)分析和推測模型庫。
由于Python缺乏數(shù)據(jù)科學(xué)的資源,我決定寫這篇教程來關(guān)心別人更
快地學(xué)習(xí)在本教程中,我們將講授一點關(guān)于如何使用
PythonoPython
進(jìn)行數(shù)據(jù)分析的信息,咀嚼它,直到我們覺得舒服并能夠自己去實踐。
名目
1.數(shù)據(jù)分析的Python基礎(chǔ)
。什么緣故學(xué)Python用來數(shù)據(jù)分析
oPython2.7v/s3.4
。如何樣安裝Python
O在Python上運行一些簡單程序
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隨機森林
讓我們開始吧
L數(shù)據(jù)分析的Python基礎(chǔ)
什么緣故學(xué)Python用來數(shù)據(jù)分析
專門多人都有愛好選擇Python作為數(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é)者。那個地點沒有正確/錯誤的選擇。它完全
取決于具體情形和你的需要。我會嘗試給你一些建議,以關(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ā)者修正了一些固有的問題和小缺點,以此為以后建立
一個強大的基礎(chǔ)。這些可能不是專門相關(guān),但最終會專門重要。
2.這是以后!2.7是2.X族公布的最后一個版本,同時最終每個人都要轉(zhuǎn)移到3.X版
本。Python3在過去5年差不多公布的穩(wěn)固版本,并將連續(xù)。
沒有明確的贏家,但我想,底線是,你應(yīng)該用心于學(xué)習(xí)Python語言。
版本之間的轉(zhuǎn)換應(yīng)該只是一個時刻問題。敬請期待,不久的今后一個專
門對比Python2.X和3X的文章!
如何樣安裝Python
有兩種方法安裝Python
?你能夠直截了當(dāng)從項目網(wǎng)站下載Python,然后單獨安裝你想要的組件和庫
?或者,你能夠下載并安裝一個包,它附帶了預(yù)裝的庫。我建議您下載Anaconda.
另一種選擇是
EnthoughtCanopyExpresso
第二種方法提供了一個幸免苦惱的安裝,因此我會舉薦給初學(xué)者。這種
方法是你必須等待整個包進(jìn)行升級,即使你只是對一個單一的庫的
最新版本感愛好。它應(yīng)該不重要,直到和除非,直到和除非,你正在做
的尖端統(tǒng)計研究。
選擇開發(fā)環(huán)境
一旦你差不多安裝了Python,選擇環(huán)境能夠有專門多種選擇。那個
地點是3個最常見的選擇:
?終端/基于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)取決于你的需要,我個人更喜愛iPythonnotebook一點。
它提供了許多良好的功能,編寫代碼的同時還能夠用于記錄,你能夠選
擇在上面運行代碼塊〔而不是一行一行的執(zhí)行〕。
我們在整個教程中將使用Ipython環(huán)境
熱身:跑第一個Python程序
你能夠使用Python作為一個簡單的運算器來開始:
:JUpyterMyFirstiPythonNotebookLastCheckpoint:3minutesag(
FileEditViewInsertCellKernelHelp
IS+?t個*H■CMarkdown▼CellToolbarNone
In[1]:2+3ffFirstprograminiPythonnotebookenvironment
^MultiplelinescanbewrittenhereandtheyMILexectec
Out[l]:5
Thisisanexampleofmarkdowntext.Thisisusefulforaddingcommi
有一些情況需要注意:
?你能夠在你的終端/CMD鍵入''IPythonnotebook"來啟動IPythonnotebook,
這取決于你的工作在操作系統(tǒng)
?你能夠通過簡單地點擊上面截圖中的名字來對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上運行一些簡單程序
Python的數(shù)據(jù)結(jié)構(gòu)
以下是Python中使用的一些數(shù)據(jù)結(jié)構(gòu)。你應(yīng)該熟悉他們,以便恰當(dāng)
的使用它們。
?歹11表——列表是在Python中最通用的數(shù)據(jù)結(jié)構(gòu)。列表能夠如此簡單的定義:確實
是在方括號中一系列用逗號來分隔的值。列表可能包含不同類型的項,但它們通常
都有相同類型的。Python列表是可變的,列表中的單個元素是能夠改變的。
那個地點是一個快速的例子,定義了一個列表,然后訪問它:
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方式〕。作為一個轉(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ī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
,字典一字典是鍵:值對一個無序集合,要求鍵是唯獨的〔在一個字典里〕。一對
大括號創(chuàng)建一個空的字典:{}。
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也有一個FOR循環(huán),這是最廣泛使用的
迭代方法。它有一個簡單的語法:
foriin[PythonIterable]:
expression(i)
那個地點的''Python的迭代能夠是列表、元組或其他先進(jìn)的數(shù)據(jù)結(jié)
構(gòu),我們將在后面的章節(jié)中探討。讓我們來看看一個簡單的例子,確定
一個數(shù)字的因子。
fact=l
foriinrange(l,N+l):
fact*=i
來看看條件語句,它們是用來基于條件執(zhí)行代碼片段。最常用的結(jié)構(gòu)
是if-else,有以下語法:
if[condition]:
_executioniftrue_
else:
_executioniffalse_
例如,假如我們想打印出某個數(shù)字n是偶數(shù)依舊奇數(shù):
if==0:
print*Even,
else:
print'Odd*
既然你熟悉了Python的基礎(chǔ),我們來更近一步。假如你像完成以下
任務(wù):
1.乘2矩陣
2.求二次方程的根
3.繪制條形圖和直方圖
4.建立統(tǒng)計模型
5.訪問網(wǎng)頁
假如你想從零開始寫代碼,它將是一場噩夢,你使用Python可不能
超過2天!但不要擔(dān)憂這些。值得慶幸的是,有許多預(yù)定義的庫,我們
能夠直截了當(dāng)導(dǎo)入到我們的代碼,使我們的生活專門容易。
例如,考慮我們剛才看到的因子的例子。我們能夠一步就完成:
math.factorial(N)
因此,為了如此我們需要導(dǎo)入的math庫。讓我們探究下一個不同的
庫。
Python庫
在開始我們的學(xué)習(xí)Python之旅之前,讓我們先一步,了解一些有用
的python庫。第一步明顯是要學(xué)會將它們導(dǎo)入到我們的環(huán)境中。在
Python中有以下幾種方法:
importmathasm
frommathimport*
在第一種方式中,我們差不多為math庫定義了一個別名mo現(xiàn)在我
們能夠使用數(shù)學(xué)庫的各種功能〔例如階乘,通過引用別名
m.factorialO)。
第二方式,你需要導(dǎo)入math的整個命名空間,你能夠直截了當(dāng)使用
factorial(),而不用提到matho
提示:谷歌舉薦您使用第一種方式導(dǎo)入庫,因為您將明白函數(shù)來自何逅
下面是一個庫列表,你將在任何科學(xué)運算和數(shù)據(jù)分析中用到:
?NumPy代表數(shù)值Python.NumPy最強大的功能是n維數(shù)組。該庫還包含差不多
的線性代數(shù)函數(shù),傅里葉變換,高級的隨機數(shù)功能,以及集成其他低級語言如
Fortran,C和C++的工具。
?SciPy代表科學(xué)的Python.SciPy是基于NumPy的。它是最有用的庫之一,具有
各種高層次的科學(xué)和工程模塊,如離散傅立葉變換,線性代數(shù),優(yōu)化和稀疏矩陣。
?Matplotlib用于繪制各種各樣的圖表,從直方圖到線圖,再到熱圖。你能夠在
IPythonnotebook中使用PyLab[IPythonnotebook-PyLab=inline)以此使
用這些繪圖功能的inline。假如你忽略inline選項,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機器學(xué)習(xí)庫。建立在NumPy、SciPy和matplotlib的基礎(chǔ)上,那個
庫包含了機器學(xué)習(xí)和統(tǒng)計模型包括分類、回來、聚類和降維等專門多有效的工具。
?Statsmodels用于統(tǒng)計建模。statsmodels是一個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)用。它承諾用戶生成
的文雅和簡潔的d3.js風(fēng)格的圖形。此外,在專門大的或流媒體數(shù)據(jù)集上,它具有
高性能的交互性的能力。
?Blaze擴展NumPy和Pandas的分布式和流媒體數(shù)據(jù)集。它能夠用來訪問來自多
種來源的數(shù)據(jù),包括bcolz,MongoDB,SQLAIchemy,ApacheSpark,PyTables
等等,結(jié)合Bokeh,Blaze能夠作為一個專門強大的工具,用于對大規(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)庫urllib2,然而更容
易編碼。但關(guān)于初學(xué)者,你會發(fā)覺和urllib2細(xì)微的差別,Requests可能更方便。
其它的庫,你可能需要:
?os用于操作系統(tǒng)文件操作
?networkx和igraph基于數(shù)據(jù)操作繪制圖形
?regularexpressions用于在文本數(shù)據(jù)中查找模式
?BeautifulSoup將探究Web,它不如Scrapy,它一次運行將從一個單一的網(wǎng)頁中
提取信息。
現(xiàn)在我們差不多熟悉Python的基礎(chǔ)和更多的庫,讓我們深入到通過
Python解決問題。是的,我的意思是做一個推測模型!在那個過程中,
我們使用了一些強大的庫,也遇到了下一級的數(shù)據(jù)結(jié)構(gòu)。我們將帶你通
過這3個關(guān)鍵時期:
1.數(shù)據(jù)探究一從我們所擁有的數(shù)據(jù)中發(fā)覺更多
2.數(shù)據(jù)修改一清理數(shù)據(jù)和并修改它使它更適合用來統(tǒng)計建模
3.推測建模一運行的實際算法,自得其樂
3.在Python中使用Pandas迸行探干脆分析
為了進(jìn)一步探究我們的數(shù)據(jù),讓我把你介紹給另一種動物〔看起來
Python是不夠的!)—Pandas
Pandas是Python最有用的一種數(shù)據(jù)分析庫的我明白這些名字聽起
來專門驚奇,但堅持下去!〕它們關(guān)于增加一直在增加Python在數(shù)據(jù)
科學(xué)界的使用量起了專門大的作用。我們現(xiàn)在將使用Pandas從
AnalyticsVidhya的競賽中讀數(shù)據(jù)集,進(jìn)行探干脆分析,建立我們的第
一個差不多分類算法來解決這一問題。
在加載數(shù)據(jù)之前,讓我們了解Pandas中的2個關(guān)鍵的數(shù)據(jù)結(jié)構(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ù)集—貸款推測問題
您能夠從那個地點下載數(shù)據(jù)集。那個地點是變量的描述:
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,其中有幾個有用的庫差
不多導(dǎo)入。此外,你將能夠繪制您的數(shù)據(jù)內(nèi)聯(lián),這關(guān)于互動的數(shù)據(jù)分析
是一個專門好的環(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,因為是在PyLab環(huán)
境下。但我仍舊在代碼中保留了它們,以防你在不同的環(huán)境中使用代碼。
導(dǎo)入庫以后,你能夠使用read_csv()函數(shù)讀數(shù)據(jù)集。這是直到那個時
期的代碼:
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。功能將提供計數(shù)、平均、標(biāo)準(zhǔn)差〔STD〕,最小值,分位
數(shù)值和最大值〔讀這篇文章來更新差不多統(tǒng)計數(shù)據(jù)了解人口分布〕
那個地點有幾個結(jié)論,你能夠通過查看describe。函數(shù)的輸出得出:
1.LoanAmount有(614-592)22個缺失值
2.Loan_Amount_Term有(614-600)14個缺失值
3.Credit_HistoryW(614-564)50個缺失值
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()
同樣地,我們能夠看看信用卡歷史的唯獨值。注意,dfname
["column_name]是一個差不多的索引技術(shù),來訪問一個數(shù)據(jù)框的特
定的列。它也能夠是列的列表。想要了解更多信息,參考上面的
“Pandas10分鐘教程”的資源共享。
分布分析
現(xiàn)在我們熟悉了差不多的數(shù)據(jù)特點,讓我們研究不同變量的分布情
形。讓我們從數(shù)字變量開始-即applicantincome和LoanAmount
我們通過繪制applicantincome的直方圖開始,使用下面的命令:
df['Property-Area*].value_counts()
在那個地點,我們觀看到,有幾個極端值。這也是分箱值為50的緣
故,確實是為了清晰地描述它的分布。
下一步,我們看箱線圖,了解分布。fare的箱圖能夠使用下面代碼繪
制:
df.boxplot(column="Applicantincome')
90000
80000
70000
60000
50000
40000豐
+
30000
20000
100001
0j
Applicantincome
這證實了大量的離群值/極值的存在。這能夠歸因于社會上的收入差
距。部分緣故源于如此一個事實:我們正在查看不同的教育水平的人。
讓我們依照他們所受的教育進(jìn)行分組:
df.boxplot(column=*Applicantincome'by='Education*)
我們能夠看到,研究生和非畢業(yè)生的平均收入之間沒有實質(zhì)性的區(qū)
別。然而畢業(yè)生中高收入的人群更多,它們顯現(xià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上使用一個透視表實現(xiàn):
PivotTableFields
Choosefieldstoaddtoreport:
Dragfieldsbetweenareasbelow:
TRLTERSIlliCOLUMNS
=ROWS工VALUES
Credit_History▼AverageofLoan_...▼
注:那個地點的貸款狀況已被編碼,使用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)在我們能夠觀看到,我們得到一個像微軟的的
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
這說明,假如申請人有一個有效的信用記錄,獲得貸款的機會是沒有
信用記錄的人的八倍。你能夠依照Married,Self-Employed,
Property_Area等繪制類似的圖。
或著,這兩個圖能夠進(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
假如你還沒有意識到,我們剛剛在那個地點創(chuàng)建了兩個差不多的分類
算法,一個基于信用歷史,而另一個基于2個分類變量〔包括性別〕。
你能夠在AVDatahacks上專門快的編寫代碼來創(chuàng)建首次提交。
我們只看到我們?nèi)绾问褂肞ython中的Pandas做探干脆分析。我期
望你對大熊貓〔動物〕的愛現(xiàn)在增加了——給予一些關(guān)心,那個庫能夠
為你提供分析數(shù)據(jù)集。
接下來讓我們進(jìn)一步探討叩plicantincome和loanstatus變量,進(jìn)
行數(shù)據(jù)修改和創(chuàng)建一個數(shù)據(jù)集并應(yīng)用各種建模技術(shù)。我強烈要求你采納
另一個數(shù)據(jù)集和習(xí)題,并在進(jìn)一步閱讀之前完成一個獨立的例子。
在Python中使用Pandas進(jìn)行數(shù)據(jù)再加工
4.數(shù)據(jù)修改闔新的需要
關(guān)于那些一直跟下來的人來說,這時你必須穿上鞋才能開始跑。
在我們的探究數(shù)據(jù)期間,我們發(fā)覺了數(shù)據(jù)集的一些問題,在數(shù)據(jù)預(yù)備
好建立一個好的模型之前需要解決。那個練習(xí)通常被稱為''數(shù)據(jù)修
改”。那個地點是問題,我們差不多意識到的:
1.在一些變量中有缺失值。我們應(yīng)該基于丟失的值的數(shù)量明智地估量這些值并評估該
變量的重要性。
2.當(dāng)我們查看數(shù)據(jù)的分布時,我們看到,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ù)集中的缺失值
讓我們看看所有的變量中的缺失值,因為大多數(shù)模型不能處理有缺失
值的數(shù)據(jù),即使他們能夠,輸入它們往往不能關(guān)心更多。因此,讓我們
看看數(shù)據(jù)集中空值/NAN值的數(shù)量:
df.apply(lambdax:sum(x.isnull())^3x15=0)
那個命令告訴我們每一列中缺失值的數(shù)量,因為假如值為缺失值
返回
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ù)量不是專門多,但許多變量都有缺失值,它們中的每一
個都應(yīng)該被估量和補充。通過這篇文章對不同的插值技術(shù)進(jìn)行詳細(xì)了
解。
注記住,缺失值可能并不總是NaN。例如,假如loan_amount_term
是0,它是有意義的或者你認(rèn)為是缺失的?我想你的答案是缺失的,你
是對的。因此我們應(yīng)該檢查那些不切實際的值。
如何填補LoanAmount的缺失值?
有許多方法來填補價值貸款金額的缺失值,最簡單的確實是使用均值
來替換,能夠通過以下代碼實現(xiàn):
另一個極端是能夠建立一個監(jiān)督學(xué)習(xí)模型來基于其他變量推測貸款金
額,然后使用年齡以及其他變量來推測。
既然,現(xiàn)在的目標(biāo)是講述數(shù)據(jù)修改的步驟,我寧愿采取一種方法,它
介于這2個極端方法之間。一個關(guān)鍵的假設(shè)是,一個人是否受教育的或
是否自雇人士能夠結(jié)合起來,提供一個專門好的貸款金額的估量。
第一,讓我們看看箱線圖看是否有某種趨勢存在:
[Education,SelfEmployed]
因此我們看到在每一組中貸款金額的中位數(shù)的一些變化而這能夠用
來估量值。但第一,我們必須確保每個self_employed和Education
變量不應(yīng)該有缺失值。
如我們先前所說,self_employed有缺失值。讓我們看看頻率表:
In[40]:df[,Self_Employed'].value_counts
Out[40]:No500
Yes82
Name:Self_Employed?dtype:int64
因為~86%的值是、'N。",將缺失值估量為''No”是比較可靠的,
有專門高的成功概率。這能夠用下面的代碼來完成:
df['Self_Employed1].fillna('No'jinplace=True)
現(xiàn)在,我們將創(chuàng)建一個數(shù)據(jù)透視表,它提供了我們所有Education和
self_employed變量的唯獨值分組的中位數(shù)。接下來,我們定義了一個
函數(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 4301-5:2025 EN Cranes - Classification - Part 5: Bridge and gantry cranes
- 2025年度玉石雕刻設(shè)計與銷售服務(wù)合同
- 2024年12月份新能源汽車行業(yè)月報
- 2025年綠色建筑節(jié)能改造工程房地產(chǎn)聯(lián)合開發(fā)協(xié)議書
- 探索班級中的責(zé)任與擔(dān)當(dāng)計劃
- 加強保安服務(wù)宣傳的重要性計劃
- 生物教育游戲化學(xué)習(xí)實踐計劃
- 秋季學(xué)期公益項目與社會服務(wù)計劃
- 會計人員年度工作總結(jié)與展望計劃
- 心靈啟迪幼兒園教學(xué)工作計劃文檔
- 光纜線路施工安全協(xié)議書范本
- 《我國國有企業(yè)股權(quán)融資效率實證研究》相關(guān)概念及國內(nèi)外文獻(xiàn)綜述2600字
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 成本合約規(guī)劃培訓(xùn)
- 山東省濟(jì)寧市2025屆高三歷史一輪復(fù)習(xí)高考仿真試卷 含答案
- 五年級數(shù)學(xué)(小數(shù)乘法)計算題專項練習(xí)及答案
- 交通法規(guī)教育課件
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 6S管理知識培訓(xùn)課件
- TSGD7002-2023-壓力管道元件型式試驗規(guī)則
- 教師讀書分享《給教師的建議》課件
評論
0/150
提交評論