版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章Python數(shù)據(jù)分析簡介22-7月-241Python使用入門目錄搭建Python開發(fā)平臺(tái)2Python數(shù)據(jù)分析工具3小結(jié)4Python是一門簡單易學(xué)且功能強(qiáng)大的編程語言。它擁有高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),并且能夠用簡單而又高效的方式進(jìn)行面向?qū)ο缶幊?。Python優(yōu)雅的語法和動(dòng)態(tài)類型,再結(jié)合它的解釋性,使其在大多數(shù)平臺(tái)的許多領(lǐng)域成為編寫腳本或開發(fā)應(yīng)用程序的理想語言。要認(rèn)識(shí)Python,首先得明確一點(diǎn),Python是一門編程語言!這就意味著,至少原則上來說,它能夠完成Matlab能夠做的所有事情(因?yàn)榇蟛涣藦念^開始編寫),而且大多數(shù)情況下,同樣功能的Python代碼會(huì)比Matlab代碼更加簡潔、易懂;而另一方面,因?yàn)樗且婚T編程語言,所以它能夠完成很多Matlab不能做的事情,比如開發(fā)網(wǎng)頁、開發(fā)游戲、編寫爬蟲來采集數(shù)據(jù)等。Python簡介Python的簡介Python以開發(fā)效率著稱,也就是說它致力于以最短的代碼完成同一個(gè)任務(wù)。Python通常為人詬病的是它的運(yùn)行效率,而Python還被稱為“膠水語言”,它允許我們把耗時(shí)的核心部分用C/C++等更高效率的語言編寫,然后由它來“黏合”,這很大程度上已經(jīng)解決了Python的運(yùn)行效率問題。事實(shí)上,在大多數(shù)數(shù)據(jù)任務(wù)上,Python的運(yùn)行效率已經(jīng)可以媲美C/C++語言。Python簡介Python的簡介Python簡介TIOBE編程語言排行榜Python簡介編程語言的趨勢圖Python的官網(wǎng):/本書使用Python3.6版本,本書的代碼盡可能地同時(shí)兼容2.x和3.x,包括在各種第三方庫也使用兩個(gè)版本都兼容的擴(kuò)展庫。Python是跨平臺(tái)的語言,因此腳本可以跨平臺(tái)運(yùn)行,然而不同的平臺(tái)運(yùn)行效率不一樣,一般來說Linux下的速度會(huì)比Windows快,而且是對(duì)于數(shù)據(jù)分析和挖掘任務(wù)。此外,在Linux下搭建Python環(huán)境相對(duì)來說容易一些,很多Linux發(fā)行版自帶了Python程序,并且在Linux下更容易解決第三方庫的依賴問題。當(dāng)然,Linux的操作門檻較高,入門的讀者可以先在Windows熟悉,然后再考慮遷移到Linux下。搭建Python開發(fā)平臺(tái)Python版本及操作系統(tǒng)選擇在Windows下安裝Python比較容易,直接到官方網(wǎng)站下載相應(yīng)的msi安裝包安裝即可,和一般軟件的安裝無異,在此不贅述。安裝包還分32位和64位版本,請(qǐng)讀者自行選擇適合的版本。大多數(shù)Linux發(fā)行版,如CentOs、Debian、Ubuntu等,都已經(jīng)自帶了Python2.x的主程序,但Python3.x版本的主程序需要自行另外安裝。安裝Python核心程序只是第一步,為了實(shí)現(xiàn)更豐富的科學(xué)計(jì)算功能,還需要安裝一些第三方的擴(kuò)展庫,這對(duì)于一般的讀者來說可能顯得比較麻煩,尤其是在Windows下還可能出現(xiàn)各種錯(cuò)誤。幸好,已經(jīng)有人專門將科學(xué)計(jì)算所需要的模塊都編譯好,然后打包以發(fā)行版的形式供用戶使用,Anaconda就是其中一個(gè)常用的科學(xué)計(jì)算發(fā)行版。搭建Python開發(fā)平臺(tái)Python的安裝Anaconda的特點(diǎn):1、包含了眾多流行的科學(xué)、數(shù)學(xué)、工程、數(shù)據(jù)分析的Python包2、完全開源和免費(fèi)3、額外的加速、優(yōu)化是收費(fèi)的,但對(duì)于學(xué)術(shù)用途可以申請(qǐng)免費(fèi)的License4、全平臺(tái)支持:Linux、Windows、Mac;支持Python2.6、2.7、3.3、3.4,可自由切換因此,推薦初級(jí)讀者(尤其是Windows下的讀者)安裝此Python發(fā)行版。讀者只需要到官方網(wǎng)站下載安裝包安裝:http://continuum.io/downloads搭建Python開發(fā)平臺(tái)Python的安裝搭建Python開發(fā)平臺(tái)Python啟動(dòng)界面1Python使用入門目錄搭建Python開發(fā)平臺(tái)2Python數(shù)據(jù)分析工具3小結(jié)4運(yùn)行方式運(yùn)行Python代碼有兩種方式,一種方式是啟動(dòng)Python,然后在命令窗口下直接輸入相應(yīng)的命令;另外就是將完整的代碼寫成.py腳本,如hello.py,然后通過pythonhello.py執(zhí)行?;久罨具\(yùn)算認(rèn)識(shí)Python的第一步,是可以把它當(dāng)作一個(gè)方便的計(jì)算器來看待。a=2a*2a**2以上是Python幾個(gè)基本的運(yùn)算,第一個(gè)是賦值運(yùn)算,第二是乘法,最后是一個(gè)是冪(即a2),這些基本上是所有編程語言通用的。不過Python支持多重賦值:a,b,c=2,3,4基本命令基本運(yùn)算不過Python支持多重賦值:a,b,c=2,3,4這句命令相當(dāng)于:a=2b=3c=4基本命令基本運(yùn)算
Python支持對(duì)字符串的靈活操作:基本命令判斷與循環(huán)判斷和循環(huán)是所有編程語言的基本命令,Python的判斷語句如下:需要特別指出的是,Python一般不用花括號(hào){},也沒有end語句,它是用縮進(jìn)對(duì)齊作為語句的層次標(biāo)記。同一層次的縮進(jìn)量要一一對(duì)應(yīng),否則報(bào)錯(cuò)。if條件1:
語句2elif條件3:
語句4else:
語句5基本命令判斷與循環(huán)
Python的循環(huán)也相應(yīng)地有for循環(huán)和while循環(huán),如while循環(huán):
以及for循環(huán):s,k=0whilek<101:#該循環(huán)過程就是求1+2+3+...+100k=k+1s=s+kprintss=0forkinrange(101):#該循環(huán)過程也是求1+2+3+...+100s=s+kprints基本命令判斷與循環(huán)
in是一個(gè)非常方便、而且非常直觀的語法,用來判斷一個(gè)元素是否在列表/元組中,range用來生成連續(xù)的序列,一般語法為range(a,b,c),表示以a為首項(xiàng)、c為公差且不超過b-1的等差數(shù)列,如:s=0ifsinrange(4):printu's在0,1,2,3中'ifsnotinrange(1,4,1):printu's不在1,2,3中'基本命令函數(shù)
Python用def來自定義函數(shù):Python的函數(shù)返回值可以是各種形式,比如返回列表,甚至返回多個(gè)值:defadd2(x):returnx+2printadd2(1)#輸出結(jié)果為3defadd2(x=0,y=0):#定義函數(shù),同時(shí)定義參數(shù)的默認(rèn)值return[x+2,y+2]#返回值是一個(gè)列表defadd3(x,y):returnx+3,y+3#雙重返回a,b=add3(1,2)#此時(shí)a=4,b=5基本命令函數(shù)
Python支持用lambda對(duì)簡單的功能定義“行內(nèi)函數(shù)”,這有點(diǎn)像Matlab中的“匿名函數(shù)”:f=lambdax:x+2#定義函數(shù)f(x)=x+2g=lambdax,y:x+y#定義函數(shù)g(x,y)=x+y數(shù)據(jù)結(jié)構(gòu)Python有四個(gè)內(nèi)建的數(shù)據(jù)結(jié)構(gòu)——List(列表)、Tuple(元組)、Dictionary(字典)以及Set(集合),它們可以統(tǒng)稱為容器(container),因?yàn)樗鼈儗?shí)際上是一些“東西”的組合而成的結(jié)構(gòu),而這些“東西”,可以是數(shù)字、字符甚至是列表,或者是它們之間幾種的組合。通俗地講,容器里邊是什么都行,而且容器里邊的元素類型不要求相同。數(shù)據(jù)結(jié)構(gòu)列表/元組從外形上看,列表與元組的區(qū)別是,列表是用方括號(hào)標(biāo)記的,如a=[1,2,3],而元組是用圓括號(hào)標(biāo)記的,如b=(4,5,6),訪問列表和元組中的元素的方式都是一樣的,如a[0]等于1,b[2]等于6,等等。c=[1,'abc',[1,2]]'''c是一個(gè)列表,列表的第一個(gè)元素是整型1,第二個(gè)是字符串'abc',第三個(gè)是列表[1,2]'''數(shù)據(jù)結(jié)構(gòu)列表/元組從功能上看,列表與元組不同的區(qū)別是,列表可以被修改,而元組不可以。比如,對(duì)于a=[1,2,3],那么語句a[0]=0,就會(huì)將列表a修改為[0,2,3],而對(duì)于元組b=(4,5,6),語句b[0]=1就會(huì)報(bào)錯(cuò)。要注意的是,如果已經(jīng)有了一個(gè)列表a,同時(shí)想復(fù)制a,命名為變量b,那么b=a是無效的,這時(shí)候b僅僅是a的別名(或者說引用),修改b也會(huì)修改a的。正確的復(fù)制方法應(yīng)該是b=a[:]。跟列表有關(guān)的函數(shù)是list,跟元組有關(guān)的函數(shù)是tuple,它們的用法和功能幾乎一樣,都是將某個(gè)對(duì)象轉(zhuǎn)換為列表/元組,如list('ab')的結(jié)果是['a','b'],tuple([1,2])的結(jié)果是(1,2)。數(shù)據(jù)結(jié)構(gòu)列表/元組一些常見的與列表/元組相關(guān)的函數(shù):數(shù)據(jù)結(jié)構(gòu)列表/元組作為對(duì)象來說,列表本身自帶了很多實(shí)用的方法:數(shù)據(jù)結(jié)構(gòu)字典特別地,Python引入了“字典”這一方便的概念。從數(shù)學(xué)上來講,它實(shí)際上是一個(gè)映射。通俗來講,它也相當(dāng)于一個(gè)列表,然而它的“下標(biāo)”不再是以0開頭的數(shù)字,而是自己定義的“鍵”(Key)。創(chuàng)建一個(gè)字典的基本方法為:這里的'today'、'tomorrow'就是字典的鍵,它在整個(gè)字典中必須是唯一的,而20、30就是鍵對(duì)應(yīng)的值。d={'today':20,'tomorrow':30}數(shù)據(jù)結(jié)構(gòu)字典還有其他一些比較方便的方法來創(chuàng)建一個(gè)字典,如通過dict()函數(shù)轉(zhuǎn)換,或者通過dict.fromkeys來創(chuàng)建:dict([['today',20],['tomorrow',30]])#也相當(dāng)于{'today':20,'tomorrow':30}dict.fromkeys(['today','tomorrow'],20)#相當(dāng)于{'today':20,'tomorrow':20}數(shù)據(jù)結(jié)構(gòu)集合Python內(nèi)置了集合這一數(shù)據(jù)結(jié)構(gòu),跟數(shù)學(xué)上的集合概念基本上是一致的,它跟列表的區(qū)別在于:1、它的元素的不重復(fù)的,而且是無序的;2、它不支持索引。一般我們通過花括號(hào){}或者set()函數(shù)來創(chuàng)建一個(gè)集合:s={1,2,2,3}#注意2會(huì)自動(dòng)去重,得到{1,2,3}s=set([1,2,2,3])#同樣地,它將列表轉(zhuǎn)換為集合,得到{1,2,3}數(shù)據(jù)結(jié)構(gòu)集合由于集合的特殊性(特別是無序性),因此集合有一些特別的運(yùn)算:a=t|s#t和s的并集
b=t&s#t和s的交集
c=t–s#求差集(項(xiàng)在t中,但不在s中)
d=t^s#對(duì)稱差集(項(xiàng)在t或s中,但不會(huì)同時(shí)出現(xiàn)在二者中)數(shù)據(jù)結(jié)構(gòu)函數(shù)式編程函數(shù)式編程(Functionalprogramming)或者函數(shù)程序設(shè)計(jì),又稱泛函編程,是一種編程范型,它將計(jì)算機(jī)運(yùn)算視為數(shù)學(xué)上的函數(shù)計(jì)算,并且避免使用程序狀態(tài)以及易變對(duì)象。簡單來講,函數(shù)式編程是一種“廣播式”的編程,一般來說結(jié)合前面提到過的lambda定義函數(shù),用于科學(xué)計(jì)算中,會(huì)顯得特別簡潔方便。在Python中,函數(shù)是編程主要有幾個(gè)函數(shù)的使用構(gòu)成:lambda、map、reduce、filter,其中l(wèi)ambda前面已經(jīng)介紹過,主要用來自定義“行內(nèi)函數(shù)”,所以現(xiàn)在我們逐一介紹后三個(gè)。數(shù)據(jù)結(jié)構(gòu)函數(shù)式編程首先map函數(shù)。假設(shè)我們有一個(gè)列表a=[1,2,3],我要給列表中的每個(gè)元素都加2得到一個(gè)新列表,利用前面已經(jīng)談及過的“列表解析”,我們可以這樣寫:而利用map函數(shù)我們可以這樣寫:我們首先定義一個(gè)函數(shù),然后再用map命令將函數(shù)逐一應(yīng)用到(map)列表中的每個(gè)元素,最后返回一個(gè)數(shù)組。b=[i+2foriina]b=map(lambdax:x+2,a)b=list(b)#結(jié)果是[3,4,5]數(shù)據(jù)結(jié)構(gòu)函數(shù)式編程接著是reduce,它有點(diǎn)像map,但map用于逐一遍歷,而是reduce用于遞歸計(jì)算。先給出一個(gè)例子,這個(gè)例子可以算出n的階乘:其中range(1,n+1)相當(dāng)于給出了一個(gè)列表,元素是1~n這n個(gè)整數(shù)。lambdax,y:x*y構(gòu)造了一個(gè)二元函數(shù),返回兩個(gè)參數(shù)的乘積。reduce命令首先將列表的頭兩個(gè)元素作為函數(shù)的參數(shù)進(jìn)行運(yùn)算,然后將運(yùn)算結(jié)果與第三個(gè)數(shù)字作為函數(shù)的參數(shù),然后再將運(yùn)算結(jié)果與第四個(gè)數(shù)字作為函數(shù)的參數(shù)…依此遞推,直到列表結(jié)束,返回最終結(jié)果。reduce(lambdax,y:x*y,range(1,n+1))數(shù)據(jù)結(jié)構(gòu)函數(shù)式編程最后是filter,顧名思義,它是一個(gè)過濾器,用來篩選出列表中符合條件的元素,如:使用filter首先需要一個(gè)返回值為bool型的函數(shù),如上述的lambdax:x>5andx<8定義了一個(gè)函數(shù),判斷x是否大于5且小于8,然后將這個(gè)函數(shù)作用到range(10)的每個(gè)元素中,如果為True,則“挑出”那個(gè)元素,最后將滿足條件的所有元素組成一個(gè)列表返回。b=filter(lambdax:x>5andx<8,range(10))b=list(b)#結(jié)果是[6,7]庫的導(dǎo)入與添加庫的導(dǎo)入Python本身內(nèi)置了很多強(qiáng)大的庫,如數(shù)學(xué)相關(guān)的math庫,可以為我們提供更加豐富復(fù)雜的數(shù)學(xué)運(yùn)算:導(dǎo)入庫的方法,除了直接“import庫名”之外,還可以為庫起一個(gè)別名:importmathmath.sin(1)#計(jì)算正弦math.exp(1)#計(jì)算指數(shù)math.pi#內(nèi)置的圓周率常數(shù)importmathasmm.sin(1)#計(jì)算正弦?guī)斓膶?dǎo)入與添加庫的導(dǎo)入此外,如果并不需要導(dǎo)入庫中的所有函數(shù),可以特別指定導(dǎo)入函數(shù)的名字:直接地導(dǎo)入庫中的所有函數(shù):frommathimportexpase#只導(dǎo)入math庫中的exp函數(shù),并起別名ee(1)#計(jì)算指數(shù)sin(1)#此時(shí)sin(1)和math.sin(1)都會(huì)出錯(cuò),因?yàn)闆]被導(dǎo)入frommathimport*#直接的導(dǎo)入,也就是去掉math.,但如果大量地這樣引入第三庫,就容易引起命名沖突。exp(1)sin(1)庫的導(dǎo)入與添加導(dǎo)入future特征(For2.x)Python2.x與3.x之間的差別不僅僅在內(nèi)核上,也部分地表現(xiàn)在代碼的實(shí)現(xiàn)中。比如,在2.x中,print是作為一個(gè)語句出現(xiàn)的,用法為printa;但是在3.x中,它是作為函數(shù)出現(xiàn)的,用法為print(a)。為了保證兼容性,本書的基本代數(shù)是使用3.x的語法編寫的,而使用2.x的讀者,可以通過引入future特征的方式兼容代碼,如:#將print變成函數(shù)形式,即用print(a)格式輸出from__future__importprint_function
#3.x的3/2=1.5,3//2才等于1;2.x中3/2=1from__future__importdivision庫的導(dǎo)入與添加添加第三方庫Python自帶了很多庫,但不一定可以滿足我們的需求。就數(shù)據(jù)分析和數(shù)據(jù)挖掘而言,還需要添加一些第三方的庫來拓展它的功能。安裝第三方庫一般有以下幾種思路:1Python使用入門目錄搭建Python開發(fā)平臺(tái)2Python數(shù)據(jù)分析工具3小結(jié)4Python數(shù)據(jù)分析工具Python本身的數(shù)據(jù)分析功能不強(qiáng),需要安裝一些第三方擴(kuò)展庫來增強(qiáng)它的能力。本書用到的庫有Numpy、Scipy、Matplotlib、Pandas、Scikit-Learn、Keras、Gensim等,下面將對(duì)這些庫的安裝和使用進(jìn)行簡單的介紹。Python數(shù)據(jù)分析工具Numpy。Python并沒有提供數(shù)組功能。雖然列表可以完成基本的數(shù)組功能,但它不是真正的數(shù)組,而且在數(shù)據(jù)量較大時(shí),使用列表的速度就會(huì)慢得難以接受。為此,Numpy提供了真正的數(shù)組功能,以及對(duì)數(shù)據(jù)進(jìn)行快速處理的函數(shù)。Numpy還是很多更高級(jí)的擴(kuò)展庫的依賴庫,我們后面介紹的Scipy、Matplotlib、Pandas等庫都依賴于它。值得強(qiáng)調(diào)的是,Numpy內(nèi)置函數(shù)處理數(shù)據(jù)的速度是C語言級(jí)別的,因此在編寫程序的時(shí)候,應(yīng)當(dāng)盡量使用它們內(nèi)置的函數(shù),避免效率瓶頸的現(xiàn)象(尤其是涉及到循環(huán)的問題)。Python數(shù)據(jù)分析工具Numpy。在Windows中,Numpy安裝跟普通的第三方庫安裝一樣,可以通過pip安裝:pipinstallnumpy也可以自行下載源代碼,然后使用以下方式安裝:pythonsetup.pyinstall在Linux下上述方面也是可行的,此外,很多Linux發(fā)行版的軟件源中都有Python常見的庫,因此還可以通過Linux自帶的軟件管理器安裝,如在Ubuntu下可以用如下方式安裝:sudoapt-getinstallpython-numpyPython數(shù)據(jù)分析工具ScipyNumpy提供了多維數(shù)組功能,但它只是一般的數(shù)組,并不是矩陣,比如當(dāng)兩個(gè)數(shù)組相乘時(shí),只是對(duì)應(yīng)元素相乘,而不是矩陣乘法。Scipy提供了真正的矩陣,以及大量基于矩陣運(yùn)算的對(duì)象與函數(shù)。SciPy包含的功能有最優(yōu)化、線性代數(shù)、積分、插值、擬合、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算,顯然,這些功能都是挖掘與建模必備的。Python數(shù)據(jù)分析工具ScipyScipy依賴于Numpy,因此安裝它之前得先安裝好Numpy。安裝Scipy的方式與安裝Numpy的方法大同小異,需要提及的是,在Ubuntu下也可以用類似的安裝Scipy。sudoapt-getinstallpython-scipyPython數(shù)據(jù)分析工具M(jìn)atplotlibMatplotlib是最著名的繪圖庫,它主要用于二維繪圖,當(dāng)然它也可以進(jìn)行簡單的三維繪圖。它不僅提供了一整套和Matlab相似但更為豐富的命令,讓我們可以非常快捷地用Python可視化數(shù)據(jù),而且允許輸出達(dá)到出版質(zhì)量的多種圖像格式。Matplotlib的安裝并沒有什么特別之處,可以通過pipinstallmatplotlib安裝或者自行下載源代碼安裝,在Ubuntu下也可以用類似的安裝。sudoapt-getinstallpython-matplotlib注意Matplotlib的上級(jí)依賴庫相對(duì)較多,手動(dòng)安裝的時(shí)候,需要逐一把這些依賴庫都安裝好。Python數(shù)據(jù)分析工具M(jìn)atplotlib如果讀者使用的是中文標(biāo)簽,就會(huì)發(fā)現(xiàn)中文標(biāo)簽無法正常顯示。這是因?yàn)镸atplotlib的默認(rèn)字體是英文字體所致,解決它的辦法是在作圖之前手動(dòng)指定默認(rèn)字體為中文字體,如黑體(SimHei):plt.rcParams['font.sans-serif']=['SimHei']#這兩句用來正常顯示中文標(biāo)簽其次,保存作圖圖像時(shí),負(fù)號(hào)有可能顯示不正常,可以通過以下代碼解決:plt.rcParams['axes.unicode_minus']=False#解決保存圖像是負(fù)號(hào)'-'顯示為方塊的問題Python數(shù)據(jù)分析工具PandasPandas是Python下最強(qiáng)大的數(shù)據(jù)分析和探索工具(貌似沒有之一)。它包含高級(jí)的數(shù)據(jù)結(jié)構(gòu)和精巧的工具,使得在Python中處理數(shù)據(jù)非??焖俸秃唵巍andas建造在NumPy之上,它使得以NumPy為中心的應(yīng)用很容易使用。Pandas的名稱來自于面板數(shù)據(jù)(paneldata)和python數(shù)據(jù)分析(dataanalysis),它最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,由AQRCapitalManagement于2008年4月開發(fā),并于2009年底開源出來。Pandas的功能非常強(qiáng)大,支持類似SQL的數(shù)據(jù)增、刪、查、改,并且?guī)в胸S富的數(shù)據(jù)處理函數(shù);支持時(shí)間序列分析功能;支持靈活處理缺失數(shù)據(jù);等等。Python數(shù)據(jù)分析工具安裝:Pandas的安裝相對(duì)來說比較容易一些,只要安裝好Numpy之后,就可以直接安裝了,通過pipinstallpandas或下載源碼后pythonsetup.pyinstall安裝均可。由于我們頻繁用到讀取和寫入Excel,但默認(rèn)的Pandas還不能讀寫Excel文件,需要安裝xlrd(讀)和xlwt(寫)庫才能支持Excel的讀寫:pipinstallxlrd#為Python添加讀取Excel的功能pipinstallxlwt#為Python添加寫入Excel的功能Python數(shù)據(jù)分析工具使用:首先,Pandas基本的數(shù)據(jù)結(jié)構(gòu)是Series和DataFrame,Series顧名思義就是序列,類似一維數(shù)組,DataFrame則是相當(dāng)于一張二維的表格,類似二維數(shù)組,它的每一列都是一個(gè)Series。為了定位Series中的元素,Pandas提供了Index這一對(duì)象,每個(gè)Series都會(huì)帶有一個(gè)對(duì)應(yīng)的Index,用來標(biāo)記不同的元素,Index的內(nèi)容不一定是數(shù)字,也可以是字母、中文等,它類似于SQL中的主鍵。類似地,DataFrame相當(dāng)于多個(gè)帶有同樣Index的Series的組合(本質(zhì)是Series的容器),每個(gè)Seiries都帶有一個(gè)唯一的表頭,用來標(biāo)識(shí)不同的Series。#-*-coding:utf-8-*-importpandasaspd#通常用pd作為pandas的別名。
s=pd.Series([1,2,3],index=['a','b','c'])#創(chuàng)建一個(gè)序列sd=pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c'])#創(chuàng)建一個(gè)表d2=pd.DataFrame(s)#也可以用已有的序列來創(chuàng)建表格
d.head()#預(yù)覽前5行數(shù)據(jù)d.describe()#數(shù)據(jù)基本統(tǒng)計(jì)量
#讀取文件,注意文件的存儲(chǔ)路徑不能帶有中文,否則讀取可能出錯(cuò)。pd.read_excel('data.xls')#讀取Excel文件,創(chuàng)建DataFrame。pd.read_csv('data.csv',encoding='utf-8')#讀取文本格式的數(shù)據(jù),一般用encoding指定編碼。Python數(shù)據(jù)分析工具StatsModelsPandas著眼于數(shù)據(jù)的讀取、處理和探索,而StatsModels則更加注重?cái)?shù)據(jù)的統(tǒng)計(jì)建模分析,它使得Python有了R語言的味道。StatsModels支持與Pandas進(jìn)行數(shù)據(jù)交互,因此,它與Pandas結(jié)合,成為了Python下強(qiáng)大的數(shù)據(jù)挖掘組合。安裝StatsModels相當(dāng)簡單,既可以通過pip安裝,又可以通過源碼安裝,對(duì)于Windows用戶來說,官網(wǎng)上甚至已經(jīng)有編譯好的exe文件供下載。如果手動(dòng)安裝的話,需要自行解決好依賴問題,StatModel依賴于Pandas(當(dāng)然也依賴于Pandas所依賴的),同時(shí)還依賴于pasty(一個(gè)描述統(tǒng)計(jì)的庫)。Python數(shù)據(jù)分析工具Scikit-LearnScikit-Learn是Python下強(qiáng)大的機(jī)器學(xué)習(xí)工具包,它提供了完善的機(jī)器學(xué)習(xí)工具箱,包括數(shù)據(jù)預(yù)處理、分類、回歸、聚類、預(yù)測、模型分析等。Scikit-Learn依賴于NumPy、SciPy和Matplotlib,因此,只需要提前安裝好這幾個(gè)庫,然后安裝Scikit-Learn就基本上沒有什么問題了,安裝方法跟前幾節(jié)一樣,要不就是pipinstallscikit-learn安裝,要不就是下載源碼自己安裝。Python數(shù)據(jù)分析工具使用:所有模型提供的接口有:
model.fit():訓(xùn)練模型,對(duì)于監(jiān)督模型來說是fit(X,y),對(duì)于非監(jiān)督模型是fit(X)監(jiān)督模型提供:
model.predict(X_new):預(yù)測新樣本
model.predict_proba(X_new):預(yù)測概率,僅對(duì)某些模型有用(比如LR)
model.score():得分越高,fit越好非監(jiān)督模型提供:
model.transform():從數(shù)據(jù)中學(xué)到新的“基空間”。
model.fit_transform():從數(shù)據(jù)中學(xué)到新的基并將這個(gè)數(shù)據(jù)按照這組“基”進(jìn)行轉(zhuǎn)換。Python數(shù)據(jù)分析工具KerasScikit-Learn已經(jīng)足夠強(qiáng)大了,然而它并沒有包含一種強(qiáng)大的模型——人工神經(jīng)網(wǎng)絡(luò)。人工神經(jīng)網(wǎng)絡(luò)是功能相當(dāng)強(qiáng)大的、但是原理又相當(dāng)簡單的模型,在語言處理、圖像識(shí)別等領(lǐng)域都有重要的作用。近年來逐漸火起來的“深度學(xué)習(xí)”算法,本質(zhì)上也就是一種神經(jīng)網(wǎng)絡(luò),可見在Python中實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)是非常必要的。本書用Keras庫來搭建神經(jīng)網(wǎng)絡(luò)。事實(shí)上,Keras并非簡單的神經(jīng)網(wǎng)絡(luò)庫,而是一個(gè)基于Theano的強(qiáng)大的深度學(xué)習(xí)庫,利用它不僅僅可以搭建普通的神經(jīng)網(wǎng)絡(luò),還可以搭建各種深度學(xué)習(xí)模型,如自編碼器、循環(huán)神經(jīng)網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等等。由于它是基于Theano的,因此速度也相當(dāng)快。Python數(shù)據(jù)分析工具安裝:安裝Keras之前首先需要安裝Numpy、Scipy、Theano。安裝Theano首先需要準(zhǔn)備一個(gè)C++編譯器,這在Linux下是自帶的。因此,在Linux下安裝Theano和Keras都非常簡單,只需要下載源代碼,然后用pythonsetup.pyinstall安裝就行了,具體可以參考官方文檔。Python數(shù)據(jù)分析工具安裝:可是在Windows下就沒有那么簡單了,因?yàn)樗鼪]有現(xiàn)成的編譯環(huán)境,一般而言是先安裝MinGW(Windows下的GCC和G++),然后再安裝Theano(提前裝好Numpy等依賴庫),最后安裝Keras,如果要實(shí)現(xiàn)GPU加速,還需要安裝和配置CUDA(天下沒有免費(fèi)的午餐,想要速度、易用兩不誤,那么就得花點(diǎn)心思)。值得一提的是,在Windows下的Keras速度會(huì)大打折扣,因此,想要在神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)做更深入研究的讀者,請(qǐng)?jiān)贚inux下搭建相應(yīng)的環(huán)境。Python數(shù)據(jù)分析工具使用:用Keras搭建神經(jīng)網(wǎng)絡(luò)模型的過程相當(dāng)簡潔,也相當(dāng)直觀,它純粹地就像搭積木一般。我們可以通過短短幾十行代碼,就可以搭建起一個(gè)非常強(qiáng)大的神經(jīng)網(wǎng)絡(luò)模型,甚至是深度學(xué)習(xí)模型。如簡單搭建一個(gè)MLP(多層感知器):要注意的是,Keras的預(yù)測函數(shù)跟Scikit-Learn有所差別,Keras用model.predict()方法給出概率,model.predict_classes()給出分類結(jié)果。#-*-coding:utf-8-*-fromkeras.modelsimportSequentialfromkeras.layers.coreimportDense,Dropout,Activationfromkeras.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 共青科技職業(yè)學(xué)院《高級(jí)商務(wù)英語(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《知識(shí)經(jīng)濟(jì)時(shí)代》課件
- 2022年一級(jí)建造師-管理-李娜章節(jié)練習(xí)題講義合集(含答案解析)
- 贛南科技學(xué)院《大數(shù)據(jù)技術(shù)基礎(chǔ)(計(jì)算模型)》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《翻譯概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘肅中醫(yī)藥大學(xué)《土木工程結(jié)構(gòu)試驗(yàn)與檢測》2023-2024學(xué)年第一學(xué)期期末試卷
- 語文培訓(xùn)機(jī)構(gòu)課件
- 七年級(jí)科學(xué)上冊(cè)第1章科學(xué)入門第3節(jié)科學(xué)觀察第1課時(shí)教案新版浙教版
- 七年級(jí)道德與法治上冊(cè)第四單元生命的思考第十課綻放生命之花第1課時(shí)感受生命的意義教案新人教版
- 三年級(jí)數(shù)學(xué)上冊(cè)五周長什么是周長說課稿北師大版
- 2024年度員工試用期勞動(dòng)合同模板(含保密條款)3篇
- 2024-2030年全球與中國汽車音頻DSP芯片組市場銷售前景及競爭策略分析報(bào)告
- 機(jī)關(guān)事業(yè)單位財(cái)務(wù)管理制度(六篇)
- 2025禮品定制合同范本
- 醫(yī)院消毒隔離制度范文(2篇)
- 2024年01月11026經(jīng)濟(jì)學(xué)(本)期末試題答案
- 烘干煤泥合同范例
- 人教版六年級(jí)上冊(cè)數(shù)學(xué)第八單元數(shù)學(xué)廣角數(shù)與形單元試題含答案
- 2025年“三基”培訓(xùn)計(jì)劃
- 第20課 北洋軍閥統(tǒng)治時(shí)期的政治、經(jīng)濟(jì)與文化 教案
- 叉車租賃合同模板
評(píng)論
0/150
提交評(píng)論