




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022年深圳技能大賽一大數(shù)據(jù)技術(shù)應(yīng)用職業(yè)技能競賽理論復(fù)習(xí)資料注意本文提供的理論復(fù)習(xí)資料包含Python編程基礎(chǔ)、Python數(shù)據(jù)分析、Python可視化、Python數(shù)據(jù)采集和Hadoop大數(shù)據(jù)基礎(chǔ)等大部分相關(guān)知識。1Python編程基礎(chǔ)1、認(rèn)識PythonPython是一種結(jié)合解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮母邔哟斡?jì)算機(jī)程序語言,也是一種功能強(qiáng)大而完善的通用型語言,已經(jīng)具有二十多年的發(fā)展歷史,成熟且穩(wěn)定。Python具有非常簡潔而清晰的語法特點(diǎn),因?yàn)樗脑O(shè)計(jì)指導(dǎo)思想是,對于一個(gè)特定的問題,應(yīng)該用最好的方法來解決。Python具備垃圾回收功能,能夠自動(dòng)管理內(nèi)存的使用,常被當(dāng)作腳本語言,用于處理系統(tǒng)管理任務(wù)和網(wǎng)絡(luò)程序編寫;同時(shí)支持命令式程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)、函數(shù)式編程、泛型編程多種編程范式,也非常適合完成各種高級任務(wù)。2、Python特性Python語言能廣泛用于多種編程領(lǐng)域,無論對于初學(xué)者,還是對于在科學(xué)計(jì)算領(lǐng)域具備一定經(jīng)驗(yàn)的工作者,它都極具吸引力。其關(guān)鍵特征包括簡單、易學(xué)、免費(fèi)、開源、廣泛的標(biāo)準(zhǔn)庫、互動(dòng)模式、可移植、可擴(kuò)展、可嵌入和具備數(shù)據(jù)庫接口。3、輸入與輸出在Python語言中,實(shí)現(xiàn)數(shù)據(jù)輸出的方式有兩種:一種是使用print函數(shù),其語法結(jié)構(gòu)為print(<expressions>):另一種是直接使用變量名來查看該變量的原始值。在Python語言中,可以通過input函數(shù)從鍵盤輸入數(shù)據(jù),其語法結(jié)構(gòu)為input(<prompt>)。4、代碼注釋單行注釋:以井號(#)開頭,注釋不會被機(jī)器編譯。多行注釋:在實(shí)際應(yīng)用常會有多行注釋的需求,同樣也可以使用井號對多行代碼進(jìn)行注釋,另一種簡便方法是使用3個(gè)單引號或者是3個(gè)雙引號將注釋內(nèi)容括起來。在使用引號進(jìn)行多行注釋時(shí),需要保證前后使用的引號類型保持一致。5、多行語句多行語句可以有兩種理解:一條語句多行;一行多條語句。一條語句多行的情況一般是語句太長,使用反斜杠(\)可以實(shí)現(xiàn)一條長語句的換行,也不會被機(jī)器識別成多條語句。但在[]、{卜()括號里面的多行語句在換行時(shí)是不需要使用反斜杠的。一行多條語句,通常在短語句中應(yīng)用得比較廣泛,使用分號(;)可對多條短語句實(shí)現(xiàn)隔離。
a='Apple\Bananaa='Apple\Banana\Orange,a'AppleBananaOrange,'Banana,, a=1;b=2;c=3'Orange'] print(a,b,c)a123['Apple*,,Banana',,Orange']6、縮進(jìn)Python最具有特色得就是以縮進(jìn)得方式來標(biāo)識代碼塊,不再需要使用大括號,代碼看起來會更加簡潔明朗。同一個(gè)代碼塊得語句必須保證相同得縮進(jìn)空格數(shù),否則將會出錯(cuò),至于縮進(jìn)得空格數(shù),Python并沒有硬性要求,只需保證空格數(shù)一致即可。7、命名標(biāo)識符標(biāo)識符在機(jī)器語言中是一個(gè)被允許作為名字得有效字符串。Python中的標(biāo)識符主要用在變量、函數(shù)、類、模塊、對象等命名中。Python對標(biāo)識符的規(guī)定如下。(1)標(biāo)識符可以由字母、數(shù)字和下劃線組成。(2)標(biāo)識符不能以數(shù)字開頭。以下劃線開頭的標(biāo)識符具有特殊的意義,使用時(shí)需特別注意。①以單下劃線開頭的標(biāo)識符代表不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用“fromxxximport*”導(dǎo)入。②以雙下劃線開頭的標(biāo)識符代表類的私有成員。③以雙下劃線開頭和結(jié)尾的標(biāo)識符是Python特殊方法專用的標(biāo)識。(3)標(biāo)識符字母區(qū)分大小寫。(4)標(biāo)識符禁止使用Python中的保留字??墒褂胕skeyword函數(shù)確認(rèn)字符串是否為保留字,使用kwlist函數(shù)可以查看所有保留字。8、變量在Python中,變量不需要提前聲明,創(chuàng)建時(shí)直接對其賦值即可,變量類型由賦給變量的值決定。創(chuàng)建一個(gè)變量時(shí),在機(jī)器的內(nèi)存中,系統(tǒng)會自動(dòng)給該變量分配一塊內(nèi)容,用于存放變量值。當(dāng)令變量y等于變量x時(shí)(y=x),其實(shí)是一種內(nèi)存地址的傳遞,變量y獲得的是存儲變量x值的內(nèi)存地址,所以當(dāng)x變量改變時(shí),變量y并不會發(fā)生改變。而且變量x的值改變時(shí),系統(tǒng)會重新分配另一塊內(nèi)存空間存放新的變量值。9、變量值變量值是賦給變量的數(shù)據(jù),Python中有6個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型,分別是數(shù)字(Number)、字符串(String),列表(List),元組(Tuple)、字典(Dictionary)、集合(Set)。其中,列表、元組、字典、集合屬于復(fù)合數(shù)據(jù)類型。10、數(shù)值型數(shù)據(jù)Python3支持的數(shù)值型數(shù)據(jù)類型有int、float、bool、complexoint類型指整數(shù)數(shù)值,Python3中的整數(shù)類型int表示長整型;float類型指既有整數(shù)又有小數(shù)部分的數(shù)據(jù)類型;bool類型只有True(真)和False(假)兩種取值,因?yàn)閎ool繼承了int類型,即在這兩種類型中,True可以等價(jià)于數(shù)值1,False可以等價(jià)于數(shù)值0,并且可以直接使用bool值進(jìn)行數(shù)學(xué)運(yùn)算;complex類型由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,Python中的結(jié)構(gòu)類型,實(shí)數(shù)和虛數(shù)部分都是浮點(diǎn)數(shù)。在Python中可以實(shí)現(xiàn)數(shù)值型數(shù)據(jù)類型的轉(zhuǎn)換,使用內(nèi)置函數(shù)有int、float、bool,complexo浮點(diǎn)數(shù)轉(zhuǎn)成整數(shù)的過程中,只是簡單地將小數(shù)部分剔除,保留整數(shù)部分,int空的結(jié)果為0;布爾型轉(zhuǎn)整數(shù)時(shí),bool值True被轉(zhuǎn)為整數(shù)1,False被轉(zhuǎn)為整數(shù)0;復(fù)數(shù)無法轉(zhuǎn)成整型。11、字符型數(shù)據(jù)相對比數(shù)值型數(shù)據(jù),字符型數(shù)據(jù)可以理解為一種文本,在語言領(lǐng)域的應(yīng)用更加廣泛,Python提供了幾種方式去表達(dá)字符串,分別是使用單引號(')、雙引號(")和三引號(”‘或者""").單引號標(biāo)識字符串的方法是將字符串用單引號括起來,標(biāo)準(zhǔn)Python庫允許字符串中包含字母、數(shù)字及各種符號。Python3的默認(rèn)編號為UTF-8,意味著可以在字符串中任意使用中文。雙引號在字符串中的使用于單引號的用法完全相同,需要注意的是,單引號和雙引號不能混用。三引號相比于單引號或雙引號,自身有一個(gè)特殊的功能,它能夠標(biāo)識一個(gè)多行的字符串,如一段話的換行、縮進(jìn)等格式都會原封不動(dòng)地保留。三引號是格式化記錄一段話的好幫手,但前后引號要保持一致,不能混用。12、字符轉(zhuǎn)義反斜杠(\)不僅可以在字符串中擔(dān)當(dāng)特殊換行的角色,還可以是字符串的轉(zhuǎn)義字符。單引號轉(zhuǎn)義(\')是單引號只是純粹的單引號,不具備其他作用,比較特殊的是,用雙引號標(biāo)識一個(gè)包含單引號的字符串時(shí)不需要轉(zhuǎn)義符,但如果其中包含一個(gè)雙引號,則需要轉(zhuǎn)義(\")。另外,反斜杠可以用來轉(zhuǎn)義它本身(\\)。此外,Python中還可以通過給字符串加上一個(gè)前綴r或R來指定原始字符串,如反斜杠開頭的特征字符串('D:\name\python'),可用r指定原始字符串。13、字符串索引Python對于字符串的操作還是比較靈活的,包括字符提取、字符串切片、拼接等。字符串索引分為正索引和負(fù)索引,通常說的索引就是指正索引,在Python中,索引時(shí)從。開始的,也就是第一個(gè)字符的索引是0,第二個(gè)字符索引是1,以此類推。而負(fù)索引是從右到左去標(biāo)記字符,然后加上一個(gè)負(fù)號,負(fù)索引的第一個(gè)值是-1,不是-0,如果負(fù)索引的第一個(gè)值是0,那么會導(dǎo)致0索引指向兩個(gè)值,這種情況是不允許的。14、字符串基本操作——字符提取Python中只需在變量后面使用方括號([])將需要提取的字符索引括起來,就可以提取指定位置的字符。15、字符串基本操作一一字符串切片通過截取字符串的片段,形成子字符串。字符串切片的方式如s[i:j],s代表字符串,i表示截取字符串的開始索引,j表結(jié)束索引。需要注意的是,在截取子字符串的適合將包含起始字符,但不包含結(jié)束字符,這是一個(gè)半開閉區(qū)間。Python在字符串切片的功能上有很好的默認(rèn)值,省略第1個(gè)索引,默認(rèn)為0;省略第2個(gè)索引默認(rèn)為切片字符串的長度。注意,在Python中,字符串是不可以更改的,所以,如果給指定位置的字符重新賦值,則會報(bào)錯(cuò)。16、字符串基本操作——字符串拼接如果需修改其中的一小部分字符串,可以使用字符串拼接。字符拼接時(shí),可以只有加號(+)將兩個(gè)字符串拼接起來,使用星號(*)表示重復(fù)。另外,相鄰的兩個(gè)字符串文本是會自動(dòng)拼接在一起。運(yùn)用這個(gè)思路則可對字符串部
分字符進(jìn)行修改。17、算術(shù)運(yùn)算符算術(shù)運(yùn)算符是對操作數(shù)進(jìn)行運(yùn)算的一系列特殊符號,能夠滿足一般的運(yùn)算操作需求。運(yùn)算符描述+相加兩個(gè)對象-得到一個(gè)負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù)*兩數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串/X除以y,做除法%取模,返回除法的余數(shù)**累,返回X的y次方//取整除,返回商的整數(shù)部分18、比較運(yùn)算符比較運(yùn)算符一般用于數(shù)值的比較,也可以是字符的比較,當(dāng)兩個(gè)數(shù)值比較結(jié)果是正確時(shí),返回True,否則返回False=在Python中,字符是符合ASCII編碼的,每個(gè)字符都有屬于自己的編碼,字符的比較本質(zhì)是字符的ASCII編碼的比較。運(yùn)算符描述==等于,比較對象是否相等!=不等于,比較兩個(gè)對象是否不相等>大于,返回X是否大于y<小于,返回X是否小于y>=大于等于,返回X是否大于等于yV二小于等于,返回x是否小于等于y19、賦值運(yùn)算符賦值運(yùn)算符用于對變量的賦值和更新,Python除了簡單的賦值運(yùn)算符外,還有一類特殊的賦值運(yùn)算符,比如加法賦值運(yùn)算符、減法賦值運(yùn)算符等。除了簡單的賦值運(yùn)算符,其他都屬于特殊賦值運(yùn)算符。運(yùn)算符描述=簡單的賦值運(yùn)算符+=加法賦值運(yùn)算符,a+二b等效于a=a+b-=減法賦值運(yùn)算符,a-=b等效于a=a-b*=乘法賦值運(yùn)算符,a*=b等效于a=a*b/=除法賦值運(yùn)算符,a/=b等效于a=a/b%=取模賦值運(yùn)算符,a%=b等效于a=a%b**=哥賦值運(yùn)算符,a**=b等效于a=a**b//=取整除賦值運(yùn)算符,a//=b等效于a=a//b20、按位運(yùn)算符通常,數(shù)字都是使用十進(jìn)制,按位運(yùn)算符會自動(dòng)將輸入的十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù),再進(jìn)行相應(yīng)的運(yùn)算。運(yùn)算符描述&按位與運(yùn)算符:參與運(yùn)算的兩個(gè)值,如果相應(yīng)位為1,則該位的結(jié)果為1,否則為01按位或運(yùn)算符:只有對應(yīng)的兩個(gè)二進(jìn)位有一個(gè)為1,結(jié)果就為1A按位異或運(yùn)算符:當(dāng)兩對應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1按位取反運(yùn)算符:對數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變成0,把0變成1
?左移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0?右移動(dòng)運(yùn)算符:把“>>”左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,“>>”右邊的數(shù)指定移動(dòng)的位數(shù)21、邏輯運(yùn)算符運(yùn)算符描述and布爾“與",Xandy,如果x為False,返回Fake:否則返回y的計(jì)算值or布爾“或",xory,如果x為True,它返回True;否則返回y的計(jì)算值not布爾"非”,not(x),如果x為Ture,返回False;如果x為False,返回True22、成員運(yùn)算符成員運(yùn)算符的作用時(shí)判斷某指定值是否存在于某一序列中,包括字符串、列表或元組。運(yùn)算符描述in如果在指定的序列中找到值,返回True,否則返回Fakenotin如果在指定的序列中沒有找到值,返回True,否則返回False23、身份運(yùn)算符身份運(yùn)算符用于比較兩個(gè)對象的內(nèi)存地址。運(yùn)算符描述is用于判斷兩個(gè)標(biāo)識符是不是引用自一個(gè)對象notis用于判斷兩個(gè)標(biāo)識符是不是引用自不同對象24、運(yùn)算符優(yōu)先級一個(gè)表達(dá)式往往不只包含一個(gè)運(yùn)算符,當(dāng)一個(gè)表達(dá)式存在多個(gè)運(yùn)算符時(shí),運(yùn)算符會按照優(yōu)先級運(yùn)算,處于同一優(yōu)先級的運(yùn)算符則從左到右依次運(yùn)算。運(yùn)算符描述**指數(shù),最高優(yōu)先級?+一按位翻轉(zhuǎn)、一元加號和減號(最后兩個(gè)的方法名為+@和-@)*/%//乘、除、取模和取整數(shù)+"加法減法??右移、左移運(yùn)算符&按位與運(yùn)算符A按位或運(yùn)算符<=<>>=比較運(yùn)算符<>==!=等于運(yùn)算符=%=/=//=-=+=*=**=賦值運(yùn)算符isisnot身份運(yùn)算符innotin成員運(yùn)算符notorand邏輯運(yùn)算符25、數(shù)據(jù)結(jié)構(gòu)類型Python中數(shù)據(jù)結(jié)構(gòu)是根據(jù)某種方式將數(shù)據(jù)元素組合起來形成的一個(gè)數(shù)據(jù)元素集合,其中包含序列(列表和元組)、映射(字典)以及集合3種基本的數(shù)據(jù)結(jié)構(gòu)類型。序列類型:序列是數(shù)據(jù)結(jié)構(gòu)對象的有序排列,數(shù)據(jù)結(jié)構(gòu)對象作為序列的元素都會被分配一個(gè)位置編號(也稱為索引),序列就相當(dāng)于數(shù)學(xué)中數(shù)列的概念。Python中的序列類型包括字符串、列表、元組、Unicode字符串、buffer對象、xrange對象等數(shù)據(jù)結(jié)構(gòu),其中字符串、列表和元組最為常用。映射類型:映射類型就是存儲了對象與對象之間的映射關(guān)系的數(shù)據(jù)結(jié)構(gòu)類型,Python中唯一的映射類型數(shù)據(jù)結(jié)構(gòu)是字典,字典中的每個(gè)元素都存在相應(yīng)的名稱(稱為鍵)與之一一對應(yīng)。字典相當(dāng)于帶有各自名稱的元素組成的集合。與序列不同的是,字典中的元素沒有排列順序。集合類型:集合當(dāng)中的元素不能重復(fù)出現(xiàn),即集合中的元素是相對唯一的,并且元素不存在排列順序。由此可見,Python中的集合概念相當(dāng)于數(shù)學(xué)中的集合概念。集合類型包括可變集合與不可變集合。26、可變數(shù)據(jù)類型通過可變數(shù)據(jù)類型,可以直接對數(shù)據(jù)結(jié)構(gòu)對象的內(nèi)容進(jìn)行修改,即可以對數(shù)據(jù)結(jié)構(gòu)對象進(jìn)行元素的賦值修改、刪除或增加等操作。由于可變數(shù)據(jù)類型對象能直接對自身進(jìn)行修改,所以修改后的新結(jié)果仍與原對象引用同一個(gè)id地址值,即由始至終只對同一個(gè)對象進(jìn)行了修改。Python中比較重要的可變數(shù)據(jù)類型包括列表、字典、可變集合等。27、不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型不同,不可變數(shù)據(jù)類型不能對數(shù)據(jù)結(jié)構(gòu)對象的內(nèi)容進(jìn)行修改操作,不可對對象中的元素進(jìn)行增加、刪除和賦值修改。若需要對對象進(jìn)行內(nèi)容修改,則需對其變量名進(jìn)行重新賦值,賦值操作會把變量名指向一個(gè)新對象,新舊對象兩者引用兩個(gè)不同的id地址值。常用的不可變數(shù)據(jù)類型包括數(shù)字、字符串、元組、不可變集合等。28、列表列表是最常用的Python數(shù)據(jù)類型,它可以作為一個(gè)方括號內(nèi)的逗號分隔值出現(xiàn)。列表的數(shù)據(jù)項(xiàng)不需要具有相同的類型,列表都可以進(jìn)行的操作包括索引、切片、力口、乘、檢查成員。常用的創(chuàng)建列表的方法有兩種,一種是使用方括號([])進(jìn)行創(chuàng)建,另一種是使用list函數(shù)進(jìn)行創(chuàng)建。列表索引與字符串的索引一樣,列表索引從0開始,第二個(gè)索引是1.依此類推。通過索引列表可以進(jìn)行截取、組合等操作,具體的索引格式為sequence_name[index],具體的切片格式為sequence_name[start:end:step],即序列對象[起始元素:終止元素:步長值],注意切片操作的區(qū)間是左閉右開區(qū)間,因此不包含終止元素。使用列表方法append。、extend。和insert??上蛄斜韺ο笾刑砑釉?。append。方法可在列表尾部追加元素,該方法每次只能追加一個(gè)元素;extend。能夠?qū)⒘硪粋€(gè)列表的元素添加至列表末尾,相當(dāng)于兩個(gè)列表進(jìn)行拼接,也可以通過加號進(jìn)行拼接;insert。能向列表中添加一個(gè)元素,不同的是,它可指定位置添加。使用del、pop、remove語句可刪除列表元素。在Python中,使用del語句可以將列表中提取出來的元素刪除:pop語句是利用元素位置對元素進(jìn)行刪除操作;remove語句可以將指定元素進(jìn)行刪除,刪除的元素是列表中第一次出現(xiàn)的元素。列表是可變的,修改元素最簡單的方法是提取該元素并進(jìn)行賦值操作。列表對+和*的操作符與字符串相似。+號用于組合列表,*號用于重復(fù)列表。Python表達(dá)式結(jié)果描述len([1,2,3])3長度[1,2,3]+[4,5,6][1,2,3,4,5,6]組合「Hi門*4「Hi!','Hi!','Hi!','Hi門重復(fù)3in[1,2,3]True元素是否存在于列表中forxin[1,2,3]:print(x,end="M)123迭代
Python列表函數(shù)如下。函數(shù)描述len(list)列表元素個(gè)數(shù)max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)將元組轉(zhuǎn)換為列表Python列表方法如下。方法描述list.append(obj)在列表末尾添加新的對象list.count(obj)統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)list.extend(seq)在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來的列表)list.index(obj)從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置list.insert(index,obj)將對象插入列表list.pop([index=-1])移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值list.remove(obj)移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)list.reverse()反向列表中元素list.sort(key=None,reverse=False)對原列表進(jìn)行排序list.clear()清空列表list.copyO復(fù)制列表29、元組Python的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號(),列表使用方括號口。元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。元組也可以使用tuple函數(shù)創(chuàng)建,該函數(shù)能將其他數(shù)據(jù)結(jié)構(gòu)對象轉(zhuǎn)換成元組類型,注意tuple函數(shù)傳入元組需要加上小括號。元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號,否則括號會被當(dāng)作運(yùn)算符使用。元組是不可變的,類似于對列表元素的增添、刪除、修改等操作都不能作用在元組對象上。但是元素屬于序列類型數(shù)據(jù)結(jié)構(gòu),因此可以在元組對象上進(jìn)行元素索引訪問提取和切片操作。元組中的元素值是不允許修改的,但可以對元組進(jìn)行連接組合,直接通過加號即可連接元組的元素。元組中的元素值是不允許刪除的,但可以使用del語句來刪除整個(gè)元組。與字符串一樣,元組之間可以使用+號和*號進(jìn)行運(yùn)算。這就意味著可以組合和復(fù)制,運(yùn)算后會生成一個(gè)新元組。Python表達(dá)式結(jié)果描述len((l,2,3))3計(jì)算元素個(gè)數(shù)(1,2,3)+(4,5,6)(1,2,3,4,5,6)連接('Hi!1)*4('Hi!','Hi!','Hi!','Hi!')復(fù)制3in(1,2,3)True元素是否存在forxin(1,2,3):print(x,end="n)123迭代Python元組包含的內(nèi)置函數(shù)如下。函數(shù)描述len(tuple)計(jì)算元組元素個(gè)數(shù)max(tuple)返回元組元素最大值min(tuple)返回元組元素最小值tuple(iterable) 將可迭代系列轉(zhuǎn)換為元組30、字典字典可存儲任意類型對象,即可包含以任意類型額數(shù)據(jù)結(jié)構(gòu)作為元素的集合,同時(shí)各元素具有與之對應(yīng)且唯一的鍵,字典主要通過鍵來訪問對應(yīng)的元素。由于字典是可變的,所以可以對字典對象進(jìn)行元素的增刪改查等操作。Python中常用的兩種創(chuàng)建字典的基本方法分別是使用花括號和使用函數(shù)diet創(chuàng)建,字典的每個(gè)鍵值key=>value對用冒號(:)分割,每個(gè)對之間用逗號(,)分割,整個(gè)字典包括在花括號{}中:diet函數(shù)的作用實(shí)質(zhì)上主要是將包含雙值子序列的系列對象轉(zhuǎn)換為字典類型,雙值子序列是指包含兩個(gè)元素的序列,而直接向diet函數(shù)傳入鍵和值進(jìn)行創(chuàng)建,其中須通過“=”將鍵和值隔開,注意diet作為Python的關(guān)鍵字和內(nèi)置函數(shù),變量名不建議命名為diet。字典可通過鍵訪問對應(yīng)的值,也可通過鍵訪問賦值的方法向字典增添一個(gè)元素,若需要添加多個(gè)元素,或?qū)蓚€(gè)字典內(nèi)容合并,可以使用update方法。使用del語句可以刪除某個(gè)鍵值對。另外,字典也包含pop函數(shù),只要傳入鍵,函數(shù)就能將對應(yīng)的值從字典中抽離,不同的是必須傳入?yún)?shù)。若需要清空字典內(nèi)容,可以使用字典方法的clear函數(shù),結(jié)果返回空字典。字典的內(nèi)置函數(shù)如下。函數(shù)描述len(dict)計(jì)算字典元素個(gè)數(shù),即鍵的總數(shù)str(dict)輸出字典,可以打印的字符串表示type(dict)返回輸入的變量類型,如果變量是字典就返回字典類型字典的內(nèi)置方法如下。方法描述dict.clear()刪除字典內(nèi)所有元素dict.copyO返回一個(gè)字典的淺復(fù)制dict.fromkeysO創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應(yīng)的初始值dict.get(key,default=None)返回指定鍵的值,如果鍵不在字典中返回default設(shè)置的默認(rèn)值keyindiet如果鍵在字典diet里返回true,否則返回falsedict.items()以列表返回一個(gè)視圖對象dict.keys()返回一個(gè)視圖對象dict.setdefault(key,defauit=None)和get。類似,但如果鍵不存在于字典中,將會添加鍵并將值設(shè)為defaultdict.update(dict2)把字典dict2的鍵/值對更新到diet里dict.values()返回一個(gè)視圖對象pop(key[,default])刪除字典key(鍵)所對應(yīng)的值,返回被刪除的值popitem()返回并刪除字典中的最后一對鍵和值31、集合集合(set)是一個(gè)無序的不重復(fù)元素序列,類似于字典中的鍵,集合的元素都是不可重復(fù)的,而且屬于不可變類型,元素之間沒有排列順序。Python中的集合類型就相當(dāng)于數(shù)學(xué)集合論中所定義的集合,可對集合對象進(jìn)行數(shù)學(xué)集合運(yùn)算(并集、交集、差集等)。若按數(shù)據(jù)結(jié)構(gòu)對象是否可變來分,集合類型數(shù)據(jù)結(jié)構(gòu)包括可變集合和不可變集合??勺兗蠈ο?,可對其元素進(jìn)行增添、刪除等處理。可以使用大括號{}或者set()函數(shù)創(chuàng)建集合,注意:創(chuàng)建一個(gè)空集合必須用set()而不是{},因?yàn)椋怯脕韯?chuàng)建一個(gè)空字典。相關(guān)常用方法和函數(shù)如下。方法描述set.add向可變集合中添加一個(gè)元素set.update向可變集合添加其他集合的元素,即合并兩個(gè)集合,也可用該方法添加元素,如列表,元組,字典等set.pop隨機(jī)刪除可變集合中的一個(gè)元素,當(dāng)集合對象為空集時(shí),則返回錯(cuò)誤set.remove刪除可變集合中指定的一個(gè)元素set.discard刪除可變集合中指定的一個(gè)元素set.clear清空可變集合中所有元素,返回空集in使用Python中的in方法可以查詢元素是否存在于集合當(dāng)中l(wèi)en獲取集合當(dāng)中元素的個(gè)數(shù)set.copy復(fù)制可變集合的內(nèi)容并創(chuàng)建一個(gè)副本對象不可變集合對象屬于不可變數(shù)據(jù)類型,不能對其中的元素進(jìn)行修改處理,創(chuàng)建不可變集合的方法是使用frozenset函數(shù)。32、條件語句Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊。if語句可實(shí)現(xiàn)條件分支,一般的形式如下。ifcondition_l:statement_block_1elifcondition_2:statement_block_2else:statement_block_3Python中用elif代替了elseif,所以if語句的關(guān)鍵字為:if-elif-else。(I)每個(gè)條件后面要使用冒號:,表示接下來是滿足條件后要執(zhí)行的語句塊。(2)使用縮進(jìn)來劃分語句塊,相同縮進(jìn)數(shù)的語句在一起組成一個(gè)語句塊。(3)在Python中沒有switch-case語句。33、循環(huán)語句一一for循環(huán)語句Python中的循環(huán)語句有for和while。for循環(huán)在Python中是一個(gè)通用的序列迭代器,可以遍歷任何有序的序列,如字符串、列表、元組等。Python中的for語句接收可迭代對象,如序列和迭代器作為其參數(shù),每次循環(huán)可以調(diào)取其中的一個(gè)元素。For循環(huán)的一般格式如下。fbr<variable>in<sequence>:<statements>else:<statements>34、循環(huán)語句 while循環(huán)語句while循環(huán)也是最常用循環(huán)之一,一般形式如下。需要注意冒號和縮進(jìn)。另外,在Python中沒有do..while循環(huán)。while判斷條件(condition):執(zhí)行語句(statements) 35、循環(huán)語句一一跳出循環(huán)語句在循環(huán)語句中,可以通過設(shè)置條件表達(dá)式永遠(yuǎn)不為false來實(shí)現(xiàn)無限循環(huán)。無限循環(huán)可以使用“Ctrl+C”組合鍵來中斷執(zhí)行。也可以設(shè)定continue和break語句來跳出循環(huán),continue用于跳出該次循環(huán),也就是跳過當(dāng)前循環(huán)的剩余語句,進(jìn)入下一輪循環(huán);break用于退出循環(huán),相當(dāng)于整個(gè)循環(huán)過程直接結(jié)束,如果使用在嵌套循環(huán)中,break語句可以停止執(zhí)行最深層的循環(huán),并開始執(zhí)行下一行代碼。pass是空語句,作用是保持程序結(jié)構(gòu)的完整性,它不做任何事情,一般用作占位語句。36、循環(huán)語句 range語句range函數(shù)能夠快速構(gòu)造一個(gè)數(shù)字序列,例如,range(5)或者range(0,5)即構(gòu)造了序列0,1,2,,3,4。指定數(shù)值能夠生成對應(yīng)的數(shù)列,也可以指定區(qū)間的值,也可以使range以指定的數(shù)字開始并指定不同的增量(甚至可以是負(fù)數(shù),有時(shí)這也叫做"步長")。range函數(shù)經(jīng)常和len函數(shù)一起用于遍歷整個(gè)序列,len函數(shù)能夠返回一個(gè)序列的長度,因此可以使用這兩個(gè)函數(shù)快速通過索引訪問序列并對其進(jìn)行修改。37、函數(shù)和方法函數(shù)使一段代碼,能將一些數(shù)據(jù)(參數(shù))傳遞進(jìn)程序進(jìn)行處理,然后返回一些數(shù)據(jù)(返回值),也可以沒有返回值,但它跟一個(gè)對象相關(guān)聯(lián)。方法和函數(shù)大致上是相同的,都是通過名字來進(jìn)行調(diào)用,但有兩個(gè)主要的不同之處:一是方法中的數(shù)據(jù)是隱式傳遞的,函數(shù)的數(shù)據(jù)是顯式傳遞的;二是方法可以操作類內(nèi)部的數(shù)據(jù),而函數(shù)不行。簡單來說,就是方法和對象相關(guān),函數(shù)和對象無關(guān)。38、自定義函數(shù)函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。Python提供了許多內(nèi)建函數(shù),比如print。。但也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。函數(shù)定義的規(guī)則如下。(1)函數(shù)代碼塊以def關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號()。(2)任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以用于定義參數(shù)。(3)函數(shù)的第一行語句可以選擇性地使用文檔字符串一用于存放函數(shù)說明。(4)函數(shù)內(nèi)容以冒號起始,并且縮進(jìn)。(5)return[表達(dá)式]結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方,不帶表達(dá)式的return相當(dāng)于返回None。定義一個(gè)函數(shù):給了函數(shù)一個(gè)名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。這個(gè)函數(shù)的基本結(jié)構(gòu)完成以后,可以通過另一個(gè)函數(shù)調(diào)用執(zhí)行,也可以直接從Python命令提示符執(zhí)行。39、函數(shù)參數(shù)Python中函數(shù)參數(shù)主要有4種。(1)位置參數(shù):調(diào)用函數(shù)時(shí)根據(jù)函數(shù)定義的位置參數(shù)來傳遞參數(shù)。(2)關(guān)鍵字參數(shù):通過“鍵-值”形式加以指定,可以讓函數(shù)更加清晰,容易使用,同時(shí)也清除了參數(shù)的順序要求。(3)默認(rèn)參數(shù):定義函數(shù)時(shí)為參數(shù)提供的默認(rèn)值,調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)的值可傳可不傳。注意:所有的位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)之前,包括函數(shù)定義和調(diào)用。(4)可變參數(shù):定義函數(shù)時(shí),有時(shí)候不確定調(diào)用時(shí)會傳遞多少個(gè)參數(shù),可用定義任意位置參數(shù)或者關(guān)鍵字參數(shù)的方法來進(jìn)行參數(shù)傳遞。在可變參數(shù)之前可以定義0到任意多個(gè)參數(shù),注意可變參數(shù)永遠(yuǎn)放在參數(shù)最后面。定義任意數(shù)量的位置參數(shù)需要一個(gè)星號前綴(*)來表示,如在Python中使用*arg和*kwargs可以定義可變參數(shù);定義任意數(shù)量的關(guān)鍵字可變參數(shù)需要兩個(gè)星號(**)作為前綴。40、全局變量和局部變量定義函數(shù)時(shí),往往需要在函數(shù)內(nèi)部對變量進(jìn)行定義和賦值,在函數(shù)體內(nèi)定義的變量為局部變量。與局部變量相對應(yīng),定義在函數(shù)體外面的變量為全局變量,全局變量可以在函數(shù)體內(nèi)被調(diào)用。41、匿名函數(shù)Python允許使用lambda語句創(chuàng)建匿名函數(shù)。在lambda語句中,冒號前是函數(shù)參數(shù),若有多個(gè)函數(shù)必須使用逗號分隔;冒號后面是返回值。def語句也可以創(chuàng)建一個(gè)函數(shù)對象,只是使用lambda語句創(chuàng)建的函數(shù)對象沒有名稱。Lambda為定義匿名函數(shù)的的關(guān)鍵字,arguments為傳入函數(shù)的參數(shù),expression為返回的結(jié)果。對于lambda語句,應(yīng)注意的事項(xiàng)如下。lambda定義的單行函數(shù),如果需要復(fù)雜的函數(shù),應(yīng)使用def語句。lambda語句可以包含多個(gè)參數(shù)。lambda語句有且只有一個(gè)返回值。lambda語句中的表達(dá)式不能含有命令,且僅限一條表達(dá)式。42、正在表達(dá)式正則表達(dá)式是一個(gè)特殊的字符序列,能檢查一個(gè)字符串是否與某種模式匹配。re.match:從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match。就返回None。re.search:掃描整個(gè)字符串并返回第一個(gè)成功的匹配,匹配成功,返回一個(gè)匹配的對象,否則返回None。re.match只匹配字符串的開始,如果字符串開始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;而re.search匹配整個(gè)字符串,直到找到一個(gè)匹配。re.sub:Python的re模塊提供了re.sub用于替換字符串中的匹配項(xiàng)。pile:用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式對象,供match。和search。使用。語法格式如下。pile(pattern[,flags])pattern:一個(gè)字符串形式的正則表達(dá)式。flags:可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數(shù)為如下。re.I:忽略大小寫。re.L:表示特殊字符集\w,\W,\b,\B,\s,\S依賴于當(dāng)前環(huán)境。re.M:多行模式。re.S:即為.并且包括換行符在內(nèi)的任意字符(.不包括換行符)。re.U:表示特殊字符集\w,\W,\b,\B,\d,\D,\s,\S依賴于Unicode字符屬性數(shù)據(jù)庫。re.X:為了增加可讀性,忽略空格和#后面的注釋。
re.findall:在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果有多個(gè)匹配模式,則返回元組列表,如果沒有找到匹配的,則返回空列表。注意:match和search是匹配一次;findall匹配所有。re.split:split方法按照能夠匹配的子串將字符串分割后返回列表。正則表達(dá)式模式語法中的特殊元素如下。模式描述A匹配字符串的開頭$匹配字符串的末尾匹配任意字符,除了換行符,當(dāng)re.DOTALL標(biāo)記被指定時(shí),則可以匹配包括換行符的任意字符[...]用來表示一組字符,單獨(dú)列出:[amk]匹配d,'m'或k[A..J不在口中的字符:rabc]匹配除了a,b,c之外的字符re*匹配0個(gè)或多個(gè)的表達(dá)式re+匹配1個(gè)或多個(gè)的表達(dá)式re?匹配0個(gè)或1個(gè)由前面的正則表達(dá)式定義的片段,非貪婪方式re{n)精確匹配n個(gè)前面表達(dá)式。例如,o{2}不能匹配“Bob"中的"o",但是能匹配"food"中的兩個(gè)ore{nJ匹配n個(gè)前面表達(dá)式。例如,。{2,}不能匹配“Bob“中的“o",但能匹配"foooood”中的所有o。1,}“等價(jià)于“。+”;Ho{0,}M則等價(jià)于“。*”re(n,m}匹配n到m次由前面的正則表達(dá)式定義的片段,貪婪方式a|b匹配a或b(re)對正則表達(dá)式分組并記住匹配的文本(?:re)類似(…),但是不表示一個(gè)組\w匹配字母數(shù)字及下劃線\W匹配非字母數(shù)字及下劃線\s匹配任意空白字符,等價(jià)于[\t\n\r\f]\S匹配任意非空字符\d匹配任意數(shù)字,等價(jià)于[Q9]\D匹配任意非數(shù)字\A匹配字符串開始\Z匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串\z匹配字符串結(jié)束\G匹配最后匹配完成的位置\b匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如,'er\b,可以匹配"never”中的但不能匹配“verb"中的國’\B匹配非單詞邊界。'er\B,能匹配"verb"中的,er',但不能匹配"never”中的,er'\n,\t,等.匹配一個(gè)換行符,匹配一個(gè)制表符等43、讀取txt文件要以讀文件的方式打開一個(gè)文件對象,可以使用Python內(nèi)置函數(shù)中的open函數(shù)傳入文件名稱和標(biāo)識符。其中,標(biāo)識符可以指定文件打開模式為讀取模式(r)、寫入模式(w)、附加模式(a)或讀取和寫入文件的模式(r+)。如果讀取的文件不存在,或者在當(dāng)前工作路徑下找不到要讀取的文件,。pen函數(shù)就會拋出一個(gè)lOError錯(cuò)誤,并給出錯(cuò)誤碼和詳細(xì)的信息以說明文件不存在。如果文件存在且程序可以正常打開文件,即可使用read函數(shù)一次性讀取文件的全部內(nèi)容,并將文件內(nèi)容讀入內(nèi)存,運(yùn)用print函數(shù)可將讀取的文件內(nèi)容打印出來,調(diào)用close函數(shù)可關(guān)閉文件。文件使用完畢后必須關(guān)閉,因?yàn)槲募ο髸加貌僮飨到y(tǒng)的資源,并且操作系統(tǒng)同一時(shí)間能打開的文件數(shù)量也是有限的。使用with語句能更好地讀取文件,它能處理上下文環(huán)境產(chǎn)生的異常,同時(shí)能不調(diào)用close函數(shù)就實(shí)現(xiàn)文件關(guān)閉。讀取過程應(yīng)用的函數(shù)如下。函數(shù)描述rstrip刪除字符串末尾的指定字符(默認(rèn)為空格)Istrip刪除字符前面的指定字符strip刪除字符串首尾兩端的指定字符read讀取整個(gè)文件的內(nèi)容,但讀取內(nèi)容將存儲到一個(gè)字符串的變量中readlines按行讀取整個(gè)文件內(nèi)容,可將讀取內(nèi)容存儲到一個(gè)列表中readline每次讀取文件的一行,將讀取的一行內(nèi)存存儲到一個(gè)字符串變量中44、寫入txt文件在Python的open函數(shù)中,標(biāo)識符可指定文件打開模式,如果將數(shù)據(jù)寫入文件,只需將標(biāo)識符設(shè)為寫入模式(w)。如果寫入的文件不存在,。pen函數(shù)將自動(dòng)創(chuàng)建文件,需注意,如文件已存在,寫入模式寫入文件會先清空該文件。需注意的是,標(biāo)識符w和wb表示寫文本文件和寫二進(jìn)制文件(r后面加b表示讀取二進(jìn)制文件)。如果要將數(shù)值型數(shù)據(jù)寫入文本文件,必須先用str函數(shù)將數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符串格式。而當(dāng)寫入多行數(shù)據(jù)時(shí),write函數(shù)不會自動(dòng)添加換行符,則會出現(xiàn)多行數(shù)據(jù)擠在一起的情況,為了區(qū)分行與行數(shù)據(jù),需在write語句內(nèi)添加換行符號(\n)。在反復(fù)調(diào)用write函數(shù)寫入文件后,務(wù)必要調(diào)用close函數(shù)關(guān)閉文件。在寫入文件的過程,操作系統(tǒng)往往不會立刻把數(shù)據(jù)寫入磁盤,而是放到內(nèi)存中緩存起來,只有調(diào)用close函數(shù)時(shí),操作系統(tǒng)才保證把沒有寫入的數(shù)據(jù)全部寫入磁盤。若沒調(diào)用close函數(shù),可能會導(dǎo)致數(shù)據(jù)僅寫入部分,剩下丟失了,使用with語句可避免這種情況。在編寫代碼時(shí),可能需給文件添加內(nèi)容,但不覆蓋文件原內(nèi)容,可通過以附加模式(a)打開文件,此時(shí)寫入的內(nèi)容會附加到文件末尾,不會覆蓋原內(nèi)容。45、讀寫CSV文件逗號分隔值(CSV)也稱為字符分隔值,時(shí)一種通用的、相對簡單的文件格式,常應(yīng)用于程序之間表格轉(zhuǎn)換。csv文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔:每條記錄由字段組成,字段間的分隔符是其他字符或字符串,常見的分隔符是逗號或制表符。在編寫程序時(shí),可能需要將數(shù)據(jù)轉(zhuǎn)移到csv文件里,在程序中,用命令importcsv可直接調(diào)用csv模塊進(jìn)行CSV文件的讀寫。CSV文件讀取一開始使用open函數(shù)打開文件路徑,讀取內(nèi)容的方法有兩種,一是使用csv.reader函數(shù),接收一個(gè)可迭代的對象,能返回一個(gè)生成器,從其中解析出CSV的內(nèi)容;二是使用csv.DictReader函數(shù),該函數(shù)與csv.reader函數(shù)類似,接收一個(gè)可迭代的對象,能返回一個(gè)生成器,但返回的每個(gè)單元格都放在一個(gè)字典的值內(nèi),而字典的鍵則是這個(gè)單元格的標(biāo)題(列頭)。對于列表形式的數(shù)據(jù),除了csv.write函數(shù)外,還需用writerow函數(shù)將數(shù)據(jù)逐行寫入CSV文件。對于字典形式的數(shù)據(jù),csv模塊提供了csv.DictWriter函數(shù),除了提供。pen函數(shù)的參數(shù)外,還需輸入字典所有鍵的數(shù)據(jù),然后提供writeheader函數(shù)在文件內(nèi)添加標(biāo)題,標(biāo)題內(nèi)容與鍵一致,最后使用writerows函數(shù)將字典內(nèi)容寫入文件。withopen(file_name,newline=°)asf:write_csv=csv.dictwriter(f,key)write_csv.writeheader()write_csv.wrilerows(data)46、OS模塊
OS模塊是Python標(biāo)準(zhǔn)庫中的一個(gè)用于訪問操作系統(tǒng)的模塊,包含普遍的操作系統(tǒng)功能,如復(fù)制、創(chuàng)建、修改、刪除文件及文件夾。os模塊的相關(guān)函數(shù)。函數(shù)描述獲取操作系統(tǒng)的名稱os.sep查詢相應(yīng)操作系統(tǒng)下的文件路徑的分隔符os.linesep查詢當(dāng)前系統(tǒng)使用的行終止符os.getcwd查詢工作路徑os.listdir查詢指定目錄下的所有文件和目錄名os.remove移除指定文件os.mkdir創(chuàng)建文件夾os.rmdir刪除指定路徑的文件夾,但這文件夾必須是空的os.path.isdir(name)判斷name是不是目錄,不是則返回Falseos.path.isfile(name)判斷name這個(gè)文件是否存在,不存在返回Fakeos.path.exists(name)判斷是否存在文件或口錄nameos.path.getsize(name)獲得文件大小,如果name為目錄,則返回0Los.path.abspath(name)獲取絕對路徑os.path.isabs()判斷是否為絕對路徑os.path.normpath(path)規(guī)范path字符串形式os.path.split(name)分隔文件名與目錄,返回一個(gè)路徑下的目錄名和文件名os.path.splitext()分離文件名和擴(kuò)展名os.path.join(path,name)連接口錄與文件名或連接目錄與目錄os.path.basename(name)返回文件名os.path.dimame(name)返回文件路徑2Python數(shù)據(jù)分析1、NumPy創(chuàng)建數(shù)組對象NumPy是用于數(shù)據(jù)科學(xué)計(jì)算的基礎(chǔ)模塊,不但能完成科學(xué)計(jì)算任務(wù),而且能被用作高效的多維數(shù)組容器,可用于存儲和處理大型矩陣。NumPy的數(shù)據(jù)容器能保存任意類型的數(shù)據(jù),這使得NumPy可無縫并快速地整合各種數(shù)據(jù)。NumPy提供了兩種基本的對象:ndarray和ufunc。ndarray是存儲單一數(shù)據(jù)類型的多維數(shù)組,而ufunc則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)。ndarray是一系列同類型數(shù)據(jù)的集合,以0下標(biāo)為開始進(jìn)行集合中元素的索引,它的每個(gè)元素在內(nèi)存中都有相同存儲大小的區(qū)域。創(chuàng)建一個(gè)ndarray只需調(diào)用NumPy的array函數(shù)即可。numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)array函數(shù)的主要參數(shù)及其說明如下。名稱描述object數(shù)組或嵌套的數(shù)列dtype數(shù)組元素的數(shù)據(jù)類型,可選copy對象是否需要復(fù)制,可選order創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn))
subok默認(rèn)返回一個(gè)與基類類型一致的數(shù)組ndmin指定生成數(shù)組的最小維度可通過數(shù)組的屬性查看數(shù)組的情況。屬性說明ndarray.ndim秩,即軸的數(shù)量或維度的數(shù)量ndarray.shape數(shù)組的維度,對于矩陣,n行m列ndarray.size數(shù)組元素的總個(gè)數(shù),相當(dāng)于shape中n*m的值ndarray.dtypendarray對象的元素類型ndarray.itemsizendarray對象中每個(gè)元素的大小,以字節(jié)為單位ndarray.flagsndarray對象的內(nèi)存信息ndarray.realndairay元素的實(shí)部ndarray.imagndarray元素的虛部ndarray.data包含實(shí)際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個(gè)屬性NumPy支持的數(shù)據(jù)類型比Python內(nèi)置的類型要多很多。名稱描述bool布爾型數(shù)據(jù)類型(True或者False)inti由所在平臺決定其精度的整數(shù)(一般為int32或int64)int8字節(jié)(-128to127)inti6整數(shù)(-32768to32767)int32整數(shù)(-2147483648to2147483647)int64整數(shù)(-9223372036854775808to9223372036854775807)uint8無符號整數(shù)(Oto255)uintl6無符號整數(shù)(Oto65535)uint32無符號整數(shù)(Oto4294967295)uint64無符號整數(shù)(0to18446744073709551615)float16半精度浮點(diǎn)數(shù),包括:1個(gè)符號位,5個(gè)指數(shù)位,10個(gè)尾數(shù)位float32單精度浮點(diǎn)數(shù),包括:1個(gè)符號位,8個(gè)指數(shù)位,23個(gè)尾數(shù)位float64或float雙精度浮點(diǎn)數(shù),包括:1個(gè)符號位,11個(gè)指數(shù)位,52個(gè)尾數(shù)位complexcomplexl28類型的簡寫,即128位復(fù)數(shù)complex64復(fù)數(shù),表示雙32位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)complex128復(fù)數(shù),表示雙64位浮點(diǎn)數(shù)(實(shí)數(shù)部分和虛數(shù)部分)ndarray數(shù)組除了可以使用底層ndarray構(gòu)造器來創(chuàng)建外,還可通過其他方式創(chuàng)建。方法說明numpy.arange類似于Python的range函數(shù),通過指定開始值、終值和步長來創(chuàng)建一維數(shù)組numpy.linspace通過指定開始值、終值和元素個(gè)數(shù)來創(chuàng)建一維數(shù)組numpy.logspace與linspace函數(shù)類似,用于創(chuàng)建等比數(shù)列numpy.zeros創(chuàng)建全值為0的數(shù)組numpy.eye生成對角線元素為1,其他元素為0的數(shù)組,類似單位矩陣numpy.diag創(chuàng)建對角線外的其他元素為0,對角線元素為0或其他值numpy.ones創(chuàng)建元素全為1的數(shù)組2、NumPy生成隨機(jī)數(shù)NumPy提供了強(qiáng)大的生成隨機(jī)數(shù)的功能,然而,真正的隨機(jī)數(shù)很難獲得,實(shí)際中使用的都是偽隨機(jī)數(shù),大部分情況下,偽隨機(jī)數(shù)就能滿足需求。對于NumPy,與隨機(jī)數(shù)相關(guān)的函數(shù)都在random模塊中,其中包括了可以生成服從多種概率分布隨機(jī)數(shù)的函數(shù)。函數(shù)描述numpy.random.random生成隨機(jī)數(shù)組numpy.random,rand生成服從均勻分布的隨機(jī)數(shù)numpy.random.randn生成服從正態(tài)分布的隨機(jī)數(shù)numpy.random.randint生成給定上下范圍的隨機(jī)數(shù)numpy.random.seed確定隨機(jī)數(shù)生成器的種子numpy.random.permulation返回一個(gè)序列的隨機(jī)排列或返回一個(gè)隨機(jī)排列的范圍numpy.random.shuffle對一個(gè)序列進(jìn)行隨機(jī)排序numpy.random.binomial生成二項(xiàng)分布的隨機(jī)數(shù)numpy.random.normal生成正態(tài)(高斯)分布的隨機(jī)數(shù)numpy.random.beta生成bate分布的隨機(jī)數(shù)numpy.random.chiaquare生成卡方分布的隨機(jī)數(shù)numpy.random.gamma生成gamma分布的隨機(jī)數(shù)numpy.random.uniform生成在[0,1]中均勻分布的隨機(jī)數(shù)3、NumPy切片和索引ndarray對象的內(nèi)容可以通過索引或切片來訪問和修改,與Python中l(wèi)ist的切片操作一樣。ndarray數(shù)組可以基于0-n的下標(biāo)進(jìn)行索引,切片對象可以通過內(nèi)置的slice函數(shù),并設(shè)置start、stop及step參數(shù)進(jìn)行,從原數(shù)組中切割出一個(gè)新數(shù)組。一維數(shù)組索引使用:arr[3:5],獲取下標(biāo)索引3和4的數(shù)組數(shù)值,不包含arr[5];arr[1:-l:2],范圍中第三個(gè)參數(shù)表示步長,2表示隔一個(gè)元素取一個(gè)元素。多維數(shù)組的每一個(gè)維度都有一個(gè)索引,各個(gè)維度的索引之間用逗號隔開,如二維數(shù)組:arr[O,3:5],索引第0行中第3和4列的元素。多維數(shù)組同樣也可以使用整數(shù)序列和布爾值索引進(jìn)行訪問,如arr[l:,(0,2,3)],索引第2行到最后一行中第0、2、3列的元素。4、Numpy數(shù)組操作NumPy中包含了一些函數(shù)用于處理數(shù)組,實(shí)現(xiàn)的操作包括修改數(shù)組形狀、翻轉(zhuǎn)數(shù)組、修改數(shù)組維度、連接數(shù)組、分割數(shù)組、數(shù)組元素的添加與刪除。在NumPy中,常用reshape函數(shù)改變數(shù)組的維度,其參數(shù)為一個(gè)正整數(shù)元組,分別指定數(shù)組在每個(gè)維度上的大小。reshape函數(shù)在改變原始數(shù)據(jù)的形狀的同時(shí)不改變原始數(shù)據(jù)的值,如果指定的維度和數(shù)組的元素?cái)?shù)目不吻合,則函數(shù)將拋出異常。在NumPy中,可以使用ravel函數(shù)完成數(shù)組展平操作。flatten函數(shù)也可以完成數(shù)組展平操作,與ravel函數(shù)區(qū)別在于,flatten函數(shù)可以選擇橫向或縱向展平。除了改變數(shù)組維度,NumPy可對數(shù)據(jù)進(jìn)行組合。組合包括橫向組合和縱向組合,橫向組合是將ndarray對象構(gòu)成的元組作為參數(shù),傳給hstack函數(shù):縱向組合是將ndarray對象構(gòu)成的元組作為參數(shù),傳給vstack;concatenate函數(shù)可實(shí)現(xiàn)橫線組合和縱向組合,其中參數(shù)axis=l時(shí)為橫向組合。在NumPy中,可將數(shù)組進(jìn)行分割成相同大小的子數(shù)組,也可以指定原數(shù)組中需分割的位置。hsplit函數(shù)可以對數(shù)組進(jìn)行橫向分割;vsplit函數(shù)可對數(shù)組進(jìn)行縱向分割;split函數(shù)可實(shí)現(xiàn)數(shù)組分割,當(dāng)參數(shù)axis=l時(shí)實(shí)現(xiàn)橫向分割。5,NumPy矩陣在NumPy中,矩陣是ndarray的子類,數(shù)組和矩陣有著重要的區(qū)別,NumPy提供了兩個(gè)基本對象:一個(gè)N維數(shù)組對象和一個(gè)通用函數(shù)對象。其他對象都是在它們之上創(chuàng)建的。矩陣是繼承自NumPy數(shù)組對象的二維數(shù)組對象。使用mat函數(shù)創(chuàng)建矩陣時(shí),若輸入matrix或adarray對象,則不會為它們創(chuàng)建副本,因此調(diào)用mat函數(shù)和調(diào)用matrix(data,copy=False)等價(jià)。在NumPy可使用bmat函數(shù)將小矩陣組合成大矩陣。在NumPy,矩陣計(jì)算是針對整個(gè)矩陣中的每個(gè)元素進(jìn)行的,運(yùn)行速度相對for循環(huán)會更快??蓪?shí)現(xiàn)矩陣與數(shù)相乘、矩陣相加、矩陣相減、矩陣相乘、矩陣對應(yīng)元素相乘等操作,矩陣還有其他特有的屬性,具體如下。屬性描述T返回自身的轉(zhuǎn)置SH返回自身的共軌轉(zhuǎn)置I返回自身的逆矩陣A返回自身數(shù)據(jù)的二維數(shù)組的一個(gè)視圖6、Pandas庫Pandas是Python,的數(shù)據(jù)分析核心庫,最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來。Pandas為時(shí)間序列分析提供了很好的支持。它提供了一系列能夠快速、便捷地處理結(jié)構(gòu)化數(shù)據(jù)額數(shù)據(jù)結(jié)構(gòu)和函數(shù)。Pandas兼具了NumPy高性能的數(shù)組計(jì)算功能以及電子表格和關(guān)系型數(shù)據(jù)庫靈活的數(shù)據(jù)處理功能。它提供了復(fù)雜精細(xì)的索引功能,以便便捷地完成重塑、切片和切塊、集合及選取數(shù)據(jù)子集等操作。7、文本文件讀取Pandas提供了read_table來讀取文本文件,提供了read_csv函數(shù)來讀取CSV文件,它們常用參數(shù)和語法如下。pandas.read_table(filepath_or_buffer,sep='\t\delimiter=None,header='infer*,names=None,index_col=None,dtype=None,engine=None,encoding=None,nrows=None)pandas.read_csv(filepath_or_buffer,sep=',\de!imiter=None,header='infer\names=None,index_col=None,dtype=None,engine=None,nrows=None,encoding=None)read_table和read_csv多數(shù)的參數(shù)相同,常用參數(shù)及其說明如下。參數(shù)描述filepath_or_buffer表示文件路徑,stringsep表示分隔符,string,read_csv默認(rèn)read_table默認(rèn)制表符“Tab”header表示將某行數(shù)據(jù)作為列名,int或sequence,默認(rèn)infer,表示自動(dòng)識別names表示列名,array,默認(rèn)為Noneindex_col表示索引列的位置,int>sequence或False,取值為sequence表示多重索引,默認(rèn)為Nonedtype表示寫入的數(shù)據(jù)類型(列名為key,數(shù)據(jù)格式為values),diet,默認(rèn)為Noneengine代表數(shù)據(jù)解析引擎,c或python,默認(rèn)為cnrows表示讀取前n行,int,默認(rèn)為None文本文件讀取時(shí)encoding表示文件的編碼格式,常用的編碼有UTF-8、UTF-16、GBK、GB2312,GB18030等。如果編碼指定錯(cuò)誤,則數(shù)據(jù)無法讀取,IPython解析器會解析錯(cuò)誤。8、文本文件存儲文本文件的存儲和讀取類似,對于結(jié)構(gòu)化數(shù)據(jù),可通過Pandas庫的to_csv函數(shù)將數(shù)據(jù)保存為CSV文件格式。DataFrame.to_csv(path_or_buf=None,sep=\',na_rep=>\columns=None,header=True,index=True,index_label=None,mode='w',encoding=None)to_csv函數(shù)的常用參數(shù)及其說明如下。參數(shù)描述path_or_buf表示文件路徑,stringsep表示分隔符,string,默認(rèn)為na_rep表示缺失值columns表示寫出的列名,默認(rèn)為Noneheader表示是否將列名寫出,默認(rèn)為Trueindex表示是否將行名(索引)寫出,默認(rèn)為Trueindx_label表示索引名,默認(rèn)為Nonemode表示數(shù)據(jù)寫入模式,默認(rèn)為wencoding表示存儲文件的編碼格式,默認(rèn)為None9、Excel文件讀取Pandas提供了read_excel函數(shù)來讀取“xls”“xlsx”兩種Excel文件,其語法和常用參數(shù)如下。pd.read_excel(io,sheet_name=O,header=O,names=None,index_col=None,dtype=None)Read_excel函數(shù)和read_table函數(shù)的部分參數(shù)相同,的常用參數(shù)及其說明如下。參數(shù)描述10表示文件路徑,stringsheetname表示Excel表內(nèi)數(shù)據(jù)的分表位置,sheet名稱表示將某行數(shù)據(jù)作為列名,取值為int時(shí)表示將該列作為列名,取值為sequence,則表示多重列索引,默認(rèn)為headerinfer,表示自動(dòng)識別names表示列名,默認(rèn)為Noneindex_col表示索引列的位置,取值為sequence表示多重索引,默認(rèn)為Nonedtype表示寫入的數(shù)據(jù)類型,默認(rèn)為None10、Excel文件存儲將文件存儲為Excel文件,可以使用to_excel函數(shù),其語法和常用參數(shù)如下。DataFrame.to_excel(excel_writer,sheet_name='Sheet1na_rep=",columns二None,header=True,index二True,index_label=None,m(Kle='w\encoding=None)to_excel函數(shù)和to_csv函數(shù)的常用參數(shù)基本一致,區(qū)別之處在于,to_exel函數(shù)指定存儲文件的文件路徑參數(shù)名稱為excel_write,并且沒有sep參數(shù);to_excel函數(shù)增加了一個(gè)sheetnames參數(shù),用來指定存儲的ExcelSheet的名稱,默認(rèn)為Sheetl。11、ExcelExcel文件是MicrosoftOffice的文件,它可以輸入文字,插入圖片,并且具有強(qiáng)大的制作圖表的功能。Excel目前有兩種版本,用于MS-DOS的版本和用于MicrosoftWindows的版本。read_excel()可以從指定路徑加載Excel表至Series或DaiaFrame;Series.lo_excel()可將Series對象以Excel文件格式輸出至指定路徑;DataFrame.to_excel()J^將DataFrame對象以Excel文件格式輸出至指定路徑;ExcelFile.parse。為解析指定的表。12、JSONJSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換語言。它以文字為基礎(chǔ),且易于讓人閱讀,同時(shí)也方便機(jī)器進(jìn)行解析和生成。read」son()可從指定路徑加載JSON對象至Series或DataFrame;Series.lo」son()是將Series對象以JSON文件格式輸出至指定路徑;DataFrame.to」son()是將DataFrame對象以JSON文件格式輸出至指定路徑。13^HTMLHTML(HyperTextMarkupLanguage)是一種頁面內(nèi)可以包含圖片、鏈接甚至音樂和程序等非文字元素的超文本標(biāo)記語言,是標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用。read_html()可從指定路徑加載HTML表至DataFrame;DataFrame.to_html()是將DataFrame對象以HTML文件格式輸出至指定路徑。14^DataFrame構(gòu)建DalaFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾型值)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共同用一個(gè)索引)。DataFrame構(gòu)造方法:pandas.DataFrame(data,index,columns,dtype,copy)0DataFrame是一個(gè)二維的數(shù)組結(jié)構(gòu),類似二維數(shù)組。使用ndarrays創(chuàng)建,ndarray的長度必須相同,如果傳遞了index,則索引的長度應(yīng)等于數(shù)組的長度。如果沒有傳遞索引,則默認(rèn)情況下,索引將是range(n),其中n是數(shù)組長度。dala={Site':rGoogle','Rimoob','Wiki']JAge':UO,12,13]}df=pd.DataFrame(data)DataFrame可使用字典(key/value)進(jìn)行創(chuàng)建,其中字典的key為列名,沒有對應(yīng)的部分?jǐn)?shù)據(jù)為NaN。data=1,calories":[420,380,390],"duration":[50,40,45])df=pd.DataFrame(data)DataFrame可通過列表進(jìn)行創(chuàng)建,長度需一致。data=[[4,7,10],[5,8,11],[6,9,12]]df=pd.DataFrame(data,columns=['A','B\'C'])15、DataFrame常用屬性DataFrame的基礎(chǔ)屬性有values、index>columns和dtypes,分別可獲取元素、索引、列名和類型。此外,size、ndim和shape屬性可獲取DataFrame的元素個(gè)數(shù)、維度數(shù)和數(shù)據(jù)形狀。16^DataFrame訪問數(shù)據(jù)操作DataFrame是一個(gè)帶有標(biāo)簽的二維數(shù)組,每個(gè)標(biāo)簽相當(dāng)于每一列的列名,可通過指定列名獲取單列數(shù)據(jù)。訪問DataFrame中某一列的某幾行,單獨(dú)一列的DataFrame可視為一個(gè)Series,而訪問一個(gè)Series和訪問一個(gè)一維ndarray相同。訪問多列數(shù)據(jù)時(shí),可將多個(gè)列索引名稱放入一個(gè)列表,同時(shí),訪問DataFrame多列數(shù)據(jù)中的多行數(shù)據(jù)和訪問單列數(shù)據(jù)的多行數(shù)據(jù)的方法基本一致。如果只需訪問某幾行,其實(shí)現(xiàn)方法和訪問多列多行相似,只是選擇所有列,使用“:”代替。此外,DataFrame提供的head和tail方法也可得到多行數(shù)據(jù),head方法表示獲取數(shù)據(jù)前幾行連續(xù)數(shù)據(jù),默認(rèn)訪問前五行數(shù)據(jù);tail方法表示獲取數(shù)據(jù)后幾行連續(xù)數(shù)據(jù),默認(rèn)訪問后五行數(shù)據(jù)。Pandas提供了loc和iloc兩種更靈活的方法來實(shí)現(xiàn)數(shù)據(jù)訪問。loc方法是針對DataFrame索引名稱的切片方法,如果傳入的不是索引名稱,那么切片操作則無法執(zhí)行,利用1OC方法,能夠?qū)崿F(xiàn)所有單層索引切片操作,1OC方法的使用方法:DataFrame.loc[行索引名稱或條件,列索引名稱]。iloc和loc的區(qū)別是,iloc接收的必須是行索引和列索引的位置,使用方法:DataFrame.iloc[行索引位置,列索引位置]。使用loc,iloc方法可取出DataFrame中任意數(shù)據(jù)。在使用loc方法時(shí),如果內(nèi)部傳入的行索引名稱是一個(gè)區(qū)間,則前后均為閉區(qū)間;使用iloc方法時(shí),如果內(nèi)部傳入的行索引位置或列索引位置為區(qū)間,則為前閉后開區(qū)間。17、DataFrame修改數(shù)據(jù)操作更改DalaFrame中的數(shù)據(jù)的原理是將這部分?jǐn)?shù)據(jù)提取出來,然后重新賦值為新的數(shù)據(jù)。需要注意的是,數(shù)據(jù)更改時(shí)直接對DataFrame原數(shù)據(jù)更改,操作無法撤銷。18、DataFrame增添數(shù)據(jù)操作DataFrame新增一列只需新建一個(gè)列索引,并對該索引下的數(shù)據(jù)進(jìn)行賦值即可。如果新增的一列值是相同的,則直接賦值一個(gè)常量。在具體某個(gè)位置插入一列可以用insert的方法,如DaiaFrae.insert(iloc,columns,value)。19、DataFrame刪除數(shù)據(jù)操作刪除某列或某行數(shù)據(jù)需使用Pandas的drop方法,用法如下。DataFrame.drop(labels=None,axis=0,index=None,columns=None,inplace=False)drop方法的參數(shù)及其說明如下。參數(shù)描述labels表示刪除的行或者列的標(biāo)簽axis表示操作的軸向,0表示刪除行,I表示刪除列index直接指定要?jiǎng)h除的行columns直接指定要?jiǎng)h除的列inplace默認(rèn)為False,表示該刪除操作不改變原數(shù)據(jù),而是返回一個(gè)執(zhí)行刪除操作后的新dataframe;True則會直接在原數(shù)據(jù)上進(jìn)行刪除操作,刪除后無法返回20、數(shù)值型特征的描述性統(tǒng)計(jì)數(shù)值型特征的描述性統(tǒng)計(jì)主要包括計(jì)算數(shù)值型數(shù)據(jù)的完整情況、最小值、最大值、均值、中位數(shù)、四分位數(shù)、極差、標(biāo)準(zhǔn)差、方差和變異系數(shù)等。函數(shù)名稱說明函數(shù)名稱說明numpy.min最小值numpy.max最大值numpy.mean均值numpy.ptp極差numpy.median中位數(shù)numpy.std標(biāo)準(zhǔn)差numpy.var方差numpy.cov協(xié)方差21、類別型特征的描述性統(tǒng)計(jì)Pandas庫基于NumPy,即可使用NumPy的統(tǒng)計(jì)函數(shù)對數(shù)據(jù)框進(jìn)行描述性統(tǒng)計(jì),Pandas還提供了describe方法一次性得到數(shù)據(jù)框中所有數(shù)值型特征的非空值數(shù)目、均值、四分位數(shù)和標(biāo)準(zhǔn)差。函數(shù)名稱說明函數(shù)名稱說明min最小值max最大值mean均值ptp極差median中位數(shù)std標(biāo)準(zhǔn)差var方差cov協(xié)方差Sem標(biāo)準(zhǔn)誤差Mode眾數(shù)Skew樣本偏差Kurt樣本峰度Quantile四分位數(shù)Count非空值數(shù)目describe描述統(tǒng)計(jì)mad平均絕對離差22、DataFrame基本數(shù)據(jù)類型轉(zhuǎn)換DataFrame.astype(self,dtype,copy=True,errors='raise',**kwargs)
astype方法的參數(shù)和說明如下。參數(shù)描述dtype轉(zhuǎn)換的類型copy默認(rèn)為True,當(dāng)為真時(shí),返回一個(gè)副本errors默認(rèn)為raise,即當(dāng)有錯(cuò)誤時(shí)將觸發(fā)exception,提示錯(cuò)誤信息;如果為ignore,不產(chǎn)生報(bào)錯(cuò),返回原來的對象23、DataFrame的時(shí)間類型在多數(shù)情況下,對時(shí)間類型數(shù)據(jù)進(jìn)行分析的前提是將原本為字符串的時(shí)間轉(zhuǎn)換為標(biāo)準(zhǔn)時(shí)間,與時(shí)間相關(guān)的類有如下幾種。類名稱描述Timestamp最基礎(chǔ)的時(shí)間類。表示某個(gè)時(shí)間點(diǎn)。絕大多數(shù)的場景中的時(shí)間數(shù)據(jù)都是TimestampPeriod表示單個(gè)時(shí)間跨度,或者某個(gè)時(shí)間段,例如某一天、某一小時(shí)等Timedelta表示不同單位的時(shí)間,例如Id、1.5h、3min等,而非具體的某段時(shí)間Datetimeindex一組Timestamp構(gòu)成的Index,可以用來作為Scries或DataFrame索引Pcriodtimelndcx一組Period構(gòu)成的Index,可以用來作為Series或DataFrame索引Timedeltalndex一組Timedelta構(gòu)成的Index,可以用來作為Series或DataFrame索引Pandas中可使用to_datetime函數(shù)將字符串轉(zhuǎn)換成Timestamp,需注意Timestamp類型的時(shí)間是有限制的,最早只能夠表示至1677年9月21日,通過pandas.Timestamp.min可查看最早的時(shí)間,同樣的通過pandas.Timestamp.max可查看最晚的時(shí)間。除了將數(shù)據(jù)從原始DataFrame中直接轉(zhuǎn)換為Timestamp格式外,還可以將數(shù)據(jù)單獨(dú)提出來,將其轉(zhuǎn)換為Datetimeindex或Periodindex,通過pandas.DatetimeIndex()W<pandas.Periodlndex()o在多數(shù)涉及與時(shí)間相關(guān)的數(shù)據(jù)處理、統(tǒng)計(jì)分析的過程中,都需要提取時(shí)間中的年份、月份等數(shù)據(jù)。使用對應(yīng)的Timestamp類屬性即可實(shí)現(xiàn)提取,常用類屬性和說明如下。屬性名稱說明屬性名稱說明year年week一年中第幾周monthJJquarter季節(jié)day日weekofyear一年中第幾周hour小時(shí)dayofyear一年中的第幾天minute分鐘dayofweek一周第幾天second秒weekday一周第幾天date日期weekday_name星期名稱time時(shí)間is_leap_year是否閏年需注意Periodindex相比于Datetimelndex少了weekday_name屬性,所以不能用該屬性提取星期名稱數(shù)據(jù)。若要提取信息名稱,可通過weekday屬性,而后將0?6這7個(gè)標(biāo)簽分別賦值為Monday-SundayoPandas的時(shí)間數(shù)據(jù)是可做運(yùn)算的,主要用到Pandas庫的Timedelta類。使用Timedelta類,配合常規(guī)的時(shí)間相關(guān)類能夠輕松實(shí)現(xiàn)時(shí)間算術(shù)運(yùn)算。目前,Timedella函數(shù)中時(shí)間周期中沒有年和月,所有周期名稱、對應(yīng)單位及說明如下。周期名稱單位說明周期名稱單位說明weeks后星期secondss秒daysD天millisecondsms亳秒hoursh小時(shí)microsecondsus微秒minutes m 分 nanosecondsns 納秒24、Pandas分組Pandas提供了一個(gè)靈活高效的groupby方法,配合agg方法或者叩ply方法,能夠?qū)崿F(xiàn)分組聚合的操作。groupby方法提供的是分組聚合步驟中的拆分功能,能夠根據(jù)索引或者字段對數(shù)據(jù)進(jìn)行分組,其常用參數(shù)于使用格式如下。DataFrame.groupby(by=None,axis=O,level=None,as_index=True,sort=True,group_keys=Truc,squeeze=False,observednFalse,**kwargs)groupby方法的參數(shù)及其說明如下。參數(shù)名稱說明by用于確定進(jìn)行分組的依據(jù)axis表示操作的軸向,默認(rèn)對列進(jìn)行操作level表示標(biāo)簽所在級別as_index表示聚合后聚合標(biāo)簽是否以DataFrame索引形式輸出sort表示是否對分組依據(jù)、分組標(biāo)簽進(jìn)行排序group_keys表示是否顯示分組標(biāo)簽名稱squeeze表示是否在允許的情況下對返回?cái)?shù)據(jù)進(jìn)行降維分組后的結(jié)果并不能直接查看,而是被存在內(nèi)存中,輸出的是內(nèi)存地址。實(shí)際上,分組后的數(shù)據(jù)對象GroupBy類似于Series和DataFrame,是Pandas提供的一種對象。GroupBy對象常用的描述性統(tǒng)計(jì)方法如下。方法名稱說明count計(jì)算分組的數(shù)目,包括缺失值head返回每組的前n個(gè)值max返回每組最大值mean返回每組的均值median返回每組的中位數(shù)cumcount對每個(gè)分組中的組員進(jìn)行標(biāo)記,0?n-1size返回每組的大小min返回每組的最小值std返回每組的標(biāo)準(zhǔn)差sum返回每組的和25、Pandas聚合agg、aggregate方法都支持對每個(gè)分組應(yīng)用某函數(shù),包括Python的內(nèi)置函數(shù)或自定義函數(shù)。同時(shí)這兩個(gè)方法也能直接對DataFrame進(jìn)行函數(shù)應(yīng)用操作。針對DataFrame的agg于aggregate的使用格式如下。DataFrame.agg(func,axis=0,*args,**kwargs)DataFrame.aggregate(func,axis=0,*args,**kwargs)如需對多個(gè)字段進(jìn)行單獨(dú)不同操作,如對于某字段只做求均值操作,另一個(gè)字段只做求和操作,則需要使用字典的方法,將兩個(gè)字段名分別做key,然后將對于的函數(shù)作為value。當(dāng)某個(gè)字段進(jìn)行多種方法進(jìn)行統(tǒng)計(jì),如某字段需進(jìn)行求和和求均值操作,只需將字典對應(yīng)key的value轉(zhuǎn)換為列表,將列表元素轉(zhuǎn)換為多個(gè)目標(biāo)的統(tǒng)計(jì)量即可。apply方法類似于agg方法,能夠?qū)⒑瘮?shù)應(yīng)用于每一列。不同之處在于,與agg相比apply傳入的函數(shù)只能作用于整個(gè)DataFrame或者Series,而無法像agg一樣能夠?qū)Σ煌侄螒?yīng)用不同函數(shù)來獲取不同結(jié)果。apply方法的常用參數(shù)和格式如下。DataFrame.apply(func,axis=0,broadcast:False,raw=False,reduce;None,args=(),**kwds)transform方法能夠?qū)φ麄€(gè)DataFrame的所有元素進(jìn)行操作。transform方法只有一個(gè)參數(shù)"func",表示對DataFrame操作的函數(shù)。同時(shí),transform方法能夠?qū)ataFrame分組后的對象Grou
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西環(huán)保面試題及答案
- 醫(yī)療配合:溝通技巧大全
- 如何提升禮儀魅力
- 骨科面試題題庫及答案
- 山鷹紙業(yè)培訓(xùn)考試試題及答案
- 武術(shù)基本常識考試試題及答案
- 如何培養(yǎng)孩子的閱讀習(xí)慣
- 特崗教師考試試題及答案
- 保密能力面試題及答案
- java內(nèi)存區(qū)域面試題及答案
- 電線電纜產(chǎn)品工藝流程圖和結(jié)構(gòu)示意圖
- 智慧交通大腦一體化管理平臺建設(shè)方案
- 2023年北京郵電大學(xué)招聘筆試真題
- xx公路與天然氣管道交叉方案安全專項(xiàng)評價(jià)報(bào)告
- 藥店員工培訓(xùn)與考核制度
- RPA財(cái)務(wù)機(jī)器人開發(fā)與應(yīng)用 課件 6.1 RPA網(wǎng)銀付款機(jī)器人
- 征信理論與實(shí)務(wù)第二章-征信數(shù)據(jù)庫
- 2021年深圳實(shí)驗(yàn)學(xué)校初中部七年級入學(xué)分班考試數(shù)學(xué)試卷及答案解析
- 平凡的世界(閱讀任務(wù)二 人物形象分析)公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)-【中職專用】高一語文(高教版2023-2024基礎(chǔ)模塊上冊)
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 機(jī)電安裝工程施工現(xiàn)場安全管理臺賬
評論
0/150
提交評論