大數據技術應用職業技能競賽理論復習資料_第1頁
大數據技術應用職業技能競賽理論復習資料_第2頁
大數據技術應用職業技能競賽理論復習資料_第3頁
大數據技術應用職業技能競賽理論復習資料_第4頁
大數據技術應用職業技能競賽理論復習資料_第5頁
已閱讀5頁,還剩111頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2022年深圳技能大賽一大數據技術應用職業技能競賽理論復習資料注意本文提供的理論復習資料包含Python編程基礎、Python數據分析、Python可視化、Python數據采集和Hadoop大數據基礎等大部分相關知識。1Python編程基礎1、認識PythonPython是一種結合解釋性、編譯性、互動性和面向對象的高層次計算機程序語言,也是一種功能強大而完善的通用型語言,已經具有二十多年的發展歷史,成熟且穩定。Python具有非常簡潔而清晰的語法特點,因為它的設計指導思想是,對于一個特定的問題,應該用最好的方法來解決。Python具備垃圾回收功能,能夠自動管理內存的使用,常被當作腳本語言,用于處理系統管理任務和網絡程序編寫;同時支持命令式程序設計、面向對象程序設計、函數式編程、泛型編程多種編程范式,也非常適合完成各種高級任務。2、Python特性Python語言能廣泛用于多種編程領域,無論對于初學者,還是對于在科學計算領域具備一定經驗的工作者,它都極具吸引力。其關鍵特征包括簡單、易學、免費、開源、廣泛的標準庫、互動模式、可移植、可擴展、可嵌入和具備數據庫接口。3、輸入與輸出在Python語言中,實現數據輸出的方式有兩種:一種是使用print函數,其語法結構為print(<expressions>):另一種是直接使用變量名來查看該變量的原始值。在Python語言中,可以通過input函數從鍵盤輸入數據,其語法結構為input(<prompt>)。4、代碼注釋單行注釋:以井號(#)開頭,注釋不會被機器編譯。多行注釋:在實際應用常會有多行注釋的需求,同樣也可以使用井號對多行代碼進行注釋,另一種簡便方法是使用3個單引號或者是3個雙引號將注釋內容括起來。在使用引號進行多行注釋時,需要保證前后使用的引號類型保持一致。5、多行語句多行語句可以有兩種理解:一條語句多行;一行多條語句。一條語句多行的情況一般是語句太長,使用反斜杠(\)可以實現一條長語句的換行,也不會被機器識別成多條語句。但在[]、{卜()括號里面的多行語句在換行時是不需要使用反斜杠的。一行多條語句,通常在短語句中應用得比較廣泛,使用分號(;)可對多條短語句實現隔離。

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、縮進Python最具有特色得就是以縮進得方式來標識代碼塊,不再需要使用大括號,代碼看起來會更加簡潔明朗。同一個代碼塊得語句必須保證相同得縮進空格數,否則將會出錯,至于縮進得空格數,Python并沒有硬性要求,只需保證空格數一致即可。7、命名標識符標識符在機器語言中是一個被允許作為名字得有效字符串。Python中的標識符主要用在變量、函數、類、模塊、對象等命名中。Python對標識符的規定如下。(1)標識符可以由字母、數字和下劃線組成。(2)標識符不能以數字開頭。以下劃線開頭的標識符具有特殊的意義,使用時需特別注意。①以單下劃線開頭的標識符代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“fromxxximport*”導入。②以雙下劃線開頭的標識符代表類的私有成員。③以雙下劃線開頭和結尾的標識符是Python特殊方法專用的標識。(3)標識符字母區分大小寫。(4)標識符禁止使用Python中的保留字??墒褂胕skeyword函數確認字符串是否為保留字,使用kwlist函數可以查看所有保留字。8、變量在Python中,變量不需要提前聲明,創建時直接對其賦值即可,變量類型由賦給變量的值決定。創建一個變量時,在機器的內存中,系統會自動給該變量分配一塊內容,用于存放變量值。當令變量y等于變量x時(y=x),其實是一種內存地址的傳遞,變量y獲得的是存儲變量x值的內存地址,所以當x變量改變時,變量y并不會發生改變。而且變量x的值改變時,系統會重新分配另一塊內存空間存放新的變量值。9、變量值變量值是賦給變量的數據,Python中有6個標準的數據類型,分別是數字(Number)、字符串(String),列表(List),元組(Tuple)、字典(Dictionary)、集合(Set)。其中,列表、元組、字典、集合屬于復合數據類型。10、數值型數據Python3支持的數值型數據類型有int、float、bool、complexoint類型指整數數值,Python3中的整數類型int表示長整型;float類型指既有整數又有小數部分的數據類型;bool類型只有True(真)和False(假)兩種取值,因為bool繼承了int類型,即在這兩種類型中,True可以等價于數值1,False可以等價于數值0,并且可以直接使用bool值進行數學運算;complex類型由實數部分和虛數部分構成,Python中的結構類型,實數和虛數部分都是浮點數。在Python中可以實現數值型數據類型的轉換,使用內置函數有int、float、bool,complexo浮點數轉成整數的過程中,只是簡單地將小數部分剔除,保留整數部分,int空的結果為0;布爾型轉整數時,bool值True被轉為整數1,False被轉為整數0;復數無法轉成整型。11、字符型數據相對比數值型數據,字符型數據可以理解為一種文本,在語言領域的應用更加廣泛,Python提供了幾種方式去表達字符串,分別是使用單引號(')、雙引號(")和三引號(”‘或者""").單引號標識字符串的方法是將字符串用單引號括起來,標準Python庫允許字符串中包含字母、數字及各種符號。Python3的默認編號為UTF-8,意味著可以在字符串中任意使用中文。雙引號在字符串中的使用于單引號的用法完全相同,需要注意的是,單引號和雙引號不能混用。三引號相比于單引號或雙引號,自身有一個特殊的功能,它能夠標識一個多行的字符串,如一段話的換行、縮進等格式都會原封不動地保留。三引號是格式化記錄一段話的好幫手,但前后引號要保持一致,不能混用。12、字符轉義反斜杠(\)不僅可以在字符串中擔當特殊換行的角色,還可以是字符串的轉義字符。單引號轉義(\')是單引號只是純粹的單引號,不具備其他作用,比較特殊的是,用雙引號標識一個包含單引號的字符串時不需要轉義符,但如果其中包含一個雙引號,則需要轉義(\")。另外,反斜杠可以用來轉義它本身(\\)。此外,Python中還可以通過給字符串加上一個前綴r或R來指定原始字符串,如反斜杠開頭的特征字符串('D:\name\python'),可用r指定原始字符串。13、字符串索引Python對于字符串的操作還是比較靈活的,包括字符提取、字符串切片、拼接等。字符串索引分為正索引和負索引,通常說的索引就是指正索引,在Python中,索引時從。開始的,也就是第一個字符的索引是0,第二個字符索引是1,以此類推。而負索引是從右到左去標記字符,然后加上一個負號,負索引的第一個值是-1,不是-0,如果負索引的第一個值是0,那么會導致0索引指向兩個值,這種情況是不允許的。14、字符串基本操作——字符提取Python中只需在變量后面使用方括號([])將需要提取的字符索引括起來,就可以提取指定位置的字符。15、字符串基本操作一一字符串切片通過截取字符串的片段,形成子字符串。字符串切片的方式如s[i:j],s代表字符串,i表示截取字符串的開始索引,j表結束索引。需要注意的是,在截取子字符串的適合將包含起始字符,但不包含結束字符,這是一個半開閉區間。Python在字符串切片的功能上有很好的默認值,省略第1個索引,默認為0;省略第2個索引默認為切片字符串的長度。注意,在Python中,字符串是不可以更改的,所以,如果給指定位置的字符重新賦值,則會報錯。16、字符串基本操作——字符串拼接如果需修改其中的一小部分字符串,可以使用字符串拼接。字符拼接時,可以只有加號(+)將兩個字符串拼接起來,使用星號(*)表示重復。另外,相鄰的兩個字符串文本是會自動拼接在一起。運用這個思路則可對字符串部

分字符進行修改。17、算術運算符算術運算符是對操作數進行運算的一系列特殊符號,能夠滿足一般的運算操作需求。運算符描述+相加兩個對象-得到一個負數或是一個數減去另一個數*兩數相乘或是返回一個被重復若干次的字符串/X除以y,做除法%取模,返回除法的余數**累,返回X的y次方//取整除,返回商的整數部分18、比較運算符比較運算符一般用于數值的比較,也可以是字符的比較,當兩個數值比較結果是正確時,返回True,否則返回False=在Python中,字符是符合ASCII編碼的,每個字符都有屬于自己的編碼,字符的比較本質是字符的ASCII編碼的比較。運算符描述==等于,比較對象是否相等!=不等于,比較兩個對象是否不相等>大于,返回X是否大于y<小于,返回X是否小于y>=大于等于,返回X是否大于等于yV二小于等于,返回x是否小于等于y19、賦值運算符賦值運算符用于對變量的賦值和更新,Python除了簡單的賦值運算符外,還有一類特殊的賦值運算符,比如加法賦值運算符、減法賦值運算符等。除了簡單的賦值運算符,其他都屬于特殊賦值運算符。運算符描述=簡單的賦值運算符+=加法賦值運算符,a+二b等效于a=a+b-=減法賦值運算符,a-=b等效于a=a-b*=乘法賦值運算符,a*=b等效于a=a*b/=除法賦值運算符,a/=b等效于a=a/b%=取模賦值運算符,a%=b等效于a=a%b**=哥賦值運算符,a**=b等效于a=a**b//=取整除賦值運算符,a//=b等效于a=a//b20、按位運算符通常,數字都是使用十進制,按位運算符會自動將輸入的十進制數轉化為二進制數,再進行相應的運算。運算符描述&按位與運算符:參與運算的兩個值,如果相應位為1,則該位的結果為1,否則為01按位或運算符:只有對應的兩個二進位有一個為1,結果就為1A按位異或運算符:當兩對應的二進位相異時,結果為1按位取反運算符:對數據的每個二進制位取反,即把1變成0,把0變成1

?左移動運算符:運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0?右移動運算符:把“>>”左邊的運算數的各二進位全部右移若干位,“>>”右邊的數指定移動的位數21、邏輯運算符運算符描述and布爾“與",Xandy,如果x為False,返回Fake:否則返回y的計算值or布爾“或",xory,如果x為True,它返回True;否則返回y的計算值not布爾"非”,not(x),如果x為Ture,返回False;如果x為False,返回True22、成員運算符成員運算符的作用時判斷某指定值是否存在于某一序列中,包括字符串、列表或元組。運算符描述in如果在指定的序列中找到值,返回True,否則返回Fakenotin如果在指定的序列中沒有找到值,返回True,否則返回False23、身份運算符身份運算符用于比較兩個對象的內存地址。運算符描述is用于判斷兩個標識符是不是引用自一個對象notis用于判斷兩個標識符是不是引用自不同對象24、運算符優先級一個表達式往往不只包含一個運算符,當一個表達式存在多個運算符時,運算符會按照優先級運算,處于同一優先級的運算符則從左到右依次運算。運算符描述**指數,最高優先級?+一按位翻轉、一元加號和減號(最后兩個的方法名為+@和-@)*/%//乘、除、取模和取整數+"加法減法??右移、左移運算符&按位與運算符A按位或運算符<=<>>=比較運算符<>==!=等于運算符=%=/=//=-=+=*=**=賦值運算符isisnot身份運算符innotin成員運算符notorand邏輯運算符25、數據結構類型Python中數據結構是根據某種方式將數據元素組合起來形成的一個數據元素集合,其中包含序列(列表和元組)、映射(字典)以及集合3種基本的數據結構類型。序列類型:序列是數據結構對象的有序排列,數據結構對象作為序列的元素都會被分配一個位置編號(也稱為索引),序列就相當于數學中數列的概念。Python中的序列類型包括字符串、列表、元組、Unicode字符串、buffer對象、xrange對象等數據結構,其中字符串、列表和元組最為常用。映射類型:映射類型就是存儲了對象與對象之間的映射關系的數據結構類型,Python中唯一的映射類型數據結構是字典,字典中的每個元素都存在相應的名稱(稱為鍵)與之一一對應。字典相當于帶有各自名稱的元素組成的集合。與序列不同的是,字典中的元素沒有排列順序。集合類型:集合當中的元素不能重復出現,即集合中的元素是相對唯一的,并且元素不存在排列順序。由此可見,Python中的集合概念相當于數學中的集合概念。集合類型包括可變集合與不可變集合。26、可變數據類型通過可變數據類型,可以直接對數據結構對象的內容進行修改,即可以對數據結構對象進行元素的賦值修改、刪除或增加等操作。由于可變數據類型對象能直接對自身進行修改,所以修改后的新結果仍與原對象引用同一個id地址值,即由始至終只對同一個對象進行了修改。Python中比較重要的可變數據類型包括列表、字典、可變集合等。27、不可變數據類型與可變數據類型不同,不可變數據類型不能對數據結構對象的內容進行修改操作,不可對對象中的元素進行增加、刪除和賦值修改。若需要對對象進行內容修改,則需對其變量名進行重新賦值,賦值操作會把變量名指向一個新對象,新舊對象兩者引用兩個不同的id地址值。常用的不可變數據類型包括數字、字符串、元組、不可變集合等。28、列表列表是最常用的Python數據類型,它可以作為一個方括號內的逗號分隔值出現。列表的數據項不需要具有相同的類型,列表都可以進行的操作包括索引、切片、力口、乘、檢查成員。常用的創建列表的方法有兩種,一種是使用方括號([])進行創建,另一種是使用list函數進行創建。列表索引與字符串的索引一樣,列表索引從0開始,第二個索引是1.依此類推。通過索引列表可以進行截取、組合等操作,具體的索引格式為sequence_name[index],具體的切片格式為sequence_name[start:end:step],即序列對象[起始元素:終止元素:步長值],注意切片操作的區間是左閉右開區間,因此不包含終止元素。使用列表方法append。、extend。和insert??上蛄斜韺ο笾刑砑釉?。append。方法可在列表尾部追加元素,該方法每次只能追加一個元素;extend。能夠將另一個列表的元素添加至列表末尾,相當于兩個列表進行拼接,也可以通過加號進行拼接;insert。能向列表中添加一個元素,不同的是,它可指定位置添加。使用del、pop、remove語句可刪除列表元素。在Python中,使用del語句可以將列表中提取出來的元素刪除:pop語句是利用元素位置對元素進行刪除操作;remove語句可以將指定元素進行刪除,刪除的元素是列表中第一次出現的元素。列表是可變的,修改元素最簡單的方法是提取該元素并進行賦值操作。列表對+和*的操作符與字符串相似。+號用于組合列表,*號用于重復列表。Python表達式結果描述len([1,2,3])3長度[1,2,3]+[4,5,6][1,2,3,4,5,6]組合「Hi門*4「Hi!','Hi!','Hi!','Hi門重復3in[1,2,3]True元素是否存在于列表中forxin[1,2,3]:print(x,end="M)123迭代

Python列表函數如下。函數描述len(list)列表元素個數max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)將元組轉換為列表Python列表方法如下。方法描述list.append(obj)在列表末尾添加新的對象list.count(obj)統計某個元素在列表中出現的次數list.extend(seq)在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)list.index(obj)從列表中找出某個值第一個匹配項的索引位置list.insert(index,obj)將對象插入列表list.pop([index=-1])移除列表中的一個元素(默認最后一個元素),并且返回該元素的值list.remove(obj)移除列表中某個值的第一個匹配項list.reverse()反向列表中元素list.sort(key=None,reverse=False)對原列表進行排序list.clear()清空列表list.copyO復制列表29、元組Python的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號(),列表使用方括號口。元組創建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。元組也可以使用tuple函數創建,該函數能將其他數據結構對象轉換成元組類型,注意tuple函數傳入元組需要加上小括號。元組中只包含一個元素時,需要在元素后面添加逗號,否則括號會被當作運算符使用。元組是不可變的,類似于對列表元素的增添、刪除、修改等操作都不能作用在元組對象上。但是元素屬于序列類型數據結構,因此可以在元組對象上進行元素索引訪問提取和切片操作。元組中的元素值是不允許修改的,但可以對元組進行連接組合,直接通過加號即可連接元組的元素。元組中的元素值是不允許刪除的,但可以使用del語句來刪除整個元組。與字符串一樣,元組之間可以使用+號和*號進行運算。這就意味著可以組合和復制,運算后會生成一個新元組。Python表達式結果描述len((l,2,3))3計算元素個數(1,2,3)+(4,5,6)(1,2,3,4,5,6)連接('Hi!1)*4('Hi!','Hi!','Hi!','Hi!')復制3in(1,2,3)True元素是否存在forxin(1,2,3):print(x,end="n)123迭代Python元組包含的內置函數如下。函數描述len(tuple)計算元組元素個數max(tuple)返回元組元素最大值min(tuple)返回元組元素最小值tuple(iterable) 將可迭代系列轉換為元組30、字典字典可存儲任意類型對象,即可包含以任意類型額數據結構作為元素的集合,同時各元素具有與之對應且唯一的鍵,字典主要通過鍵來訪問對應的元素。由于字典是可變的,所以可以對字典對象進行元素的增刪改查等操作。Python中常用的兩種創建字典的基本方法分別是使用花括號和使用函數diet創建,字典的每個鍵值key=>value對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號{}中:diet函數的作用實質上主要是將包含雙值子序列的系列對象轉換為字典類型,雙值子序列是指包含兩個元素的序列,而直接向diet函數傳入鍵和值進行創建,其中須通過“=”將鍵和值隔開,注意diet作為Python的關鍵字和內置函數,變量名不建議命名為diet。字典可通過鍵訪問對應的值,也可通過鍵訪問賦值的方法向字典增添一個元素,若需要添加多個元素,或將兩個字典內容合并,可以使用update方法。使用del語句可以刪除某個鍵值對。另外,字典也包含pop函數,只要傳入鍵,函數就能將對應的值從字典中抽離,不同的是必須傳入參數。若需要清空字典內容,可以使用字典方法的clear函數,結果返回空字典。字典的內置函數如下。函數描述len(dict)計算字典元素個數,即鍵的總數str(dict)輸出字典,可以打印的字符串表示type(dict)返回輸入的變量類型,如果變量是字典就返回字典類型字典的內置方法如下。方法描述dict.clear()刪除字典內所有元素dict.copyO返回一個字典的淺復制dict.fromkeysO創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值dict.get(key,default=None)返回指定鍵的值,如果鍵不在字典中返回default設置的默認值keyindiet如果鍵在字典diet里返回true,否則返回falsedict.items()以列表返回一個視圖對象dict.keys()返回一個視圖對象dict.setdefault(key,defauit=None)和get。類似,但如果鍵不存在于字典中,將會添加鍵并將值設為defaultdict.update(dict2)把字典dict2的鍵/值對更新到diet里dict.values()返回一個視圖對象pop(key[,default])刪除字典key(鍵)所對應的值,返回被刪除的值popitem()返回并刪除字典中的最后一對鍵和值31、集合集合(set)是一個無序的不重復元素序列,類似于字典中的鍵,集合的元素都是不可重復的,而且屬于不可變類型,元素之間沒有排列順序。Python中的集合類型就相當于數學集合論中所定義的集合,可對集合對象進行數學集合運算(并集、交集、差集等)。若按數據結構對象是否可變來分,集合類型數據結構包括可變集合和不可變集合??勺兗蠈ο?,可對其元素進行增添、刪除等處理。可以使用大括號{}或者set()函數創建集合,注意:創建一個空集合必須用set()而不是{},因為{}是用來創建一個空字典。相關常用方法和函數如下。方法描述set.add向可變集合中添加一個元素set.update向可變集合添加其他集合的元素,即合并兩個集合,也可用該方法添加元素,如列表,元組,字典等set.pop隨機刪除可變集合中的一個元素,當集合對象為空集時,則返回錯誤set.remove刪除可變集合中指定的一個元素set.discard刪除可變集合中指定的一個元素set.clear清空可變集合中所有元素,返回空集in使用Python中的in方法可以查詢元素是否存在于集合當中len獲取集合當中元素的個數set.copy復制可變集合的內容并創建一個副本對象不可變集合對象屬于不可變數據類型,不能對其中的元素進行修改處理,創建不可變集合的方法是使用frozenset函數。32、條件語句Python條件語句是通過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。if語句可實現條件分支,一般的形式如下。ifcondition_l:statement_block_1elifcondition_2:statement_block_2else:statement_block_3Python中用elif代替了elseif,所以if語句的關鍵字為:if-elif-else。(I)每個條件后面要使用冒號:,表示接下來是滿足條件后要執行的語句塊。(2)使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。(3)在Python中沒有switch-case語句。33、循環語句一一for循環語句Python中的循環語句有for和while。for循環在Python中是一個通用的序列迭代器,可以遍歷任何有序的序列,如字符串、列表、元組等。Python中的for語句接收可迭代對象,如序列和迭代器作為其參數,每次循環可以調取其中的一個元素。For循環的一般格式如下。fbr<variable>in<sequence>:<statements>else:<statements>34、循環語句 while循環語句while循環也是最常用循環之一,一般形式如下。需要注意冒號和縮進。另外,在Python中沒有do..while循環。while判斷條件(condition):執行語句(statements) 35、循環語句一一跳出循環語句在循環語句中,可以通過設置條件表達式永遠不為false來實現無限循環。無限循環可以使用“Ctrl+C”組合鍵來中斷執行。也可以設定continue和break語句來跳出循環,continue用于跳出該次循環,也就是跳過當前循環的剩余語句,進入下一輪循環;break用于退出循環,相當于整個循環過程直接結束,如果使用在嵌套循環中,break語句可以停止執行最深層的循環,并開始執行下一行代碼。pass是空語句,作用是保持程序結構的完整性,它不做任何事情,一般用作占位語句。36、循環語句 range語句range函數能夠快速構造一個數字序列,例如,range(5)或者range(0,5)即構造了序列0,1,2,,3,4。指定數值能夠生成對應的數列,也可以指定區間的值,也可以使range以指定的數字開始并指定不同的增量(甚至可以是負數,有時這也叫做"步長")。range函數經常和len函數一起用于遍歷整個序列,len函數能夠返回一個序列的長度,因此可以使用這兩個函數快速通過索引訪問序列并對其進行修改。37、函數和方法函數使一段代碼,能將一些數據(參數)傳遞進程序進行處理,然后返回一些數據(返回值),也可以沒有返回值,但它跟一個對象相關聯。方法和函數大致上是相同的,都是通過名字來進行調用,但有兩個主要的不同之處:一是方法中的數據是隱式傳遞的,函數的數據是顯式傳遞的;二是方法可以操作類內部的數據,而函數不行。簡單來說,就是方法和對象相關,函數和對象無關。38、自定義函數函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。函數能提高應用的模塊性,和代碼的重復利用率。Python提供了許多內建函數,比如print。。但也可以自己創建函數,這被叫做用戶自定義函數。函數定義的規則如下。(1)函數代碼塊以def關鍵詞開頭,后接函數標識符名稱和圓括號()。(2)任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用于定義參數。(3)函數的第一行語句可以選擇性地使用文檔字符串一用于存放函數說明。(4)函數內容以冒號起始,并且縮進。(5)return[表達式]結束函數,選擇性地返回一個值給調用方,不帶表達式的return相當于返回None。定義一個函數:給了函數一個名稱,指定了函數里包含的參數,和代碼塊結構。這個函數的基本結構完成以后,可以通過另一個函數調用執行,也可以直接從Python命令提示符執行。39、函數參數Python中函數參數主要有4種。(1)位置參數:調用函數時根據函數定義的位置參數來傳遞參數。(2)關鍵字參數:通過“鍵-值”形式加以指定,可以讓函數更加清晰,容易使用,同時也清除了參數的順序要求。(3)默認參數:定義函數時為參數提供的默認值,調用函數時,默認參數的值可傳可不傳。注意:所有的位置參數必須出現在默認參數之前,包括函數定義和調用。(4)可變參數:定義函數時,有時候不確定調用時會傳遞多少個參數,可用定義任意位置參數或者關鍵字參數的方法來進行參數傳遞。在可變參數之前可以定義0到任意多個參數,注意可變參數永遠放在參數最后面。定義任意數量的位置參數需要一個星號前綴(*)來表示,如在Python中使用*arg和*kwargs可以定義可變參數;定義任意數量的關鍵字可變參數需要兩個星號(**)作為前綴。40、全局變量和局部變量定義函數時,往往需要在函數內部對變量進行定義和賦值,在函數體內定義的變量為局部變量。與局部變量相對應,定義在函數體外面的變量為全局變量,全局變量可以在函數體內被調用。41、匿名函數Python允許使用lambda語句創建匿名函數。在lambda語句中,冒號前是函數參數,若有多個函數必須使用逗號分隔;冒號后面是返回值。def語句也可以創建一個函數對象,只是使用lambda語句創建的函數對象沒有名稱。Lambda為定義匿名函數的的關鍵字,arguments為傳入函數的參數,expression為返回的結果。對于lambda語句,應注意的事項如下。lambda定義的單行函數,如果需要復雜的函數,應使用def語句。lambda語句可以包含多個參數。lambda語句有且只有一個返回值。lambda語句中的表達式不能含有命令,且僅限一條表達式。42、正在表達式正則表達式是一個特殊的字符序列,能檢查一個字符串是否與某種模式匹配。re.match:從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match。就返回None。re.search:掃描整個字符串并返回第一個成功的匹配,匹配成功,返回一個匹配的對象,否則返回None。re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。re.sub:Python的re模塊提供了re.sub用于替換字符串中的匹配項。pile:用于編譯正則表達式,生成一個正則表達式對象,供match。和search。使用。語法格式如下。pile(pattern[,flags])pattern:一個字符串形式的正則表達式。flags:可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數為如下。re.I:忽略大小寫。re.L:表示特殊字符集\w,\W,\b,\B,\s,\S依賴于當前環境。re.M:多行模式。re.S:即為.并且包括換行符在內的任意字符(.不包括換行符)。re.U:表示特殊字符集\w,\W,\b,\B,\d,\D,\s,\S依賴于Unicode字符屬性數據庫。re.X:為了增加可讀性,忽略空格和#后面的注釋。

re.findall:在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果有多個匹配模式,則返回元組列表,如果沒有找到匹配的,則返回空列表。注意:match和search是匹配一次;findall匹配所有。re.split:split方法按照能夠匹配的子串將字符串分割后返回列表。正則表達式模式語法中的特殊元素如下。模式描述A匹配字符串的開頭$匹配字符串的末尾匹配任意字符,除了換行符,當re.DOTALL標記被指定時,則可以匹配包括換行符的任意字符[...]用來表示一組字符,單獨列出:[amk]匹配d,'m'或k[A..J不在口中的字符:rabc]匹配除了a,b,c之外的字符re*匹配0個或多個的表達式re+匹配1個或多個的表達式re?匹配0個或1個由前面的正則表達式定義的片段,非貪婪方式re{n)精確匹配n個前面表達式。例如,o{2}不能匹配“Bob"中的"o",但是能匹配"food"中的兩個ore{nJ匹配n個前面表達式。例如,。{2,}不能匹配“Bob“中的“o",但能匹配"foooood”中的所有o。1,}“等價于“。+”;Ho{0,}M則等價于“。*”re(n,m}匹配n到m次由前面的正則表達式定義的片段,貪婪方式a|b匹配a或b(re)對正則表達式分組并記住匹配的文本(?:re)類似(…),但是不表示一個組\w匹配字母數字及下劃線\W匹配非字母數字及下劃線\s匹配任意空白字符,等價于[\t\n\r\f]\S匹配任意非空字符\d匹配任意數字,等價于[Q9]\D匹配任意非數字\A匹配字符串開始\Z匹配字符串結束,如果是存在換行,只匹配到換行前的結束字符串\z匹配字符串結束\G匹配最后匹配完成的位置\b匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,'er\b,可以匹配"never”中的但不能匹配“verb"中的國’\B匹配非單詞邊界。'er\B,能匹配"verb"中的,er',但不能匹配"never”中的,er'\n,\t,等.匹配一個換行符,匹配一個制表符等43、讀取txt文件要以讀文件的方式打開一個文件對象,可以使用Python內置函數中的open函數傳入文件名稱和標識符。其中,標識符可以指定文件打開模式為讀取模式(r)、寫入模式(w)、附加模式(a)或讀取和寫入文件的模式(r+)。如果讀取的文件不存在,或者在當前工作路徑下找不到要讀取的文件,。pen函數就會拋出一個lOError錯誤,并給出錯誤碼和詳細的信息以說明文件不存在。如果文件存在且程序可以正常打開文件,即可使用read函數一次性讀取文件的全部內容,并將文件內容讀入內存,運用print函數可將讀取的文件內容打印出來,調用close函數可關閉文件。文件使用完畢后必須關閉,因為文件對象會占用操作系統的資源,并且操作系統同一時間能打開的文件數量也是有限的。使用with語句能更好地讀取文件,它能處理上下文環境產生的異常,同時能不調用close函數就實現文件關閉。讀取過程應用的函數如下。函數描述rstrip刪除字符串末尾的指定字符(默認為空格)Istrip刪除字符前面的指定字符strip刪除字符串首尾兩端的指定字符read讀取整個文件的內容,但讀取內容將存儲到一個字符串的變量中readlines按行讀取整個文件內容,可將讀取內容存儲到一個列表中readline每次讀取文件的一行,將讀取的一行內存存儲到一個字符串變量中44、寫入txt文件在Python的open函數中,標識符可指定文件打開模式,如果將數據寫入文件,只需將標識符設為寫入模式(w)。如果寫入的文件不存在,。pen函數將自動創建文件,需注意,如文件已存在,寫入模式寫入文件會先清空該文件。需注意的是,標識符w和wb表示寫文本文件和寫二進制文件(r后面加b表示讀取二進制文件)。如果要將數值型數據寫入文本文件,必須先用str函數將數值型數據轉換為字符串格式。而當寫入多行數據時,write函數不會自動添加換行符,則會出現多行數據擠在一起的情況,為了區分行與行數據,需在write語句內添加換行符號(\n)。在反復調用write函數寫入文件后,務必要調用close函數關閉文件。在寫入文件的過程,操作系統往往不會立刻把數據寫入磁盤,而是放到內存中緩存起來,只有調用close函數時,操作系統才保證把沒有寫入的數據全部寫入磁盤。若沒調用close函數,可能會導致數據僅寫入部分,剩下丟失了,使用with語句可避免這種情況。在編寫代碼時,可能需給文件添加內容,但不覆蓋文件原內容,可通過以附加模式(a)打開文件,此時寫入的內容會附加到文件末尾,不會覆蓋原內容。45、讀寫CSV文件逗號分隔值(CSV)也稱為字符分隔值,時一種通用的、相對簡單的文件格式,常應用于程序之間表格轉換。csv文件由任意數目的記錄組成,記錄間以某種換行符分隔:每條記錄由字段組成,字段間的分隔符是其他字符或字符串,常見的分隔符是逗號或制表符。在編寫程序時,可能需要將數據轉移到csv文件里,在程序中,用命令importcsv可直接調用csv模塊進行CSV文件的讀寫。CSV文件讀取一開始使用open函數打開文件路徑,讀取內容的方法有兩種,一是使用csv.reader函數,接收一個可迭代的對象,能返回一個生成器,從其中解析出CSV的內容;二是使用csv.DictReader函數,該函數與csv.reader函數類似,接收一個可迭代的對象,能返回一個生成器,但返回的每個單元格都放在一個字典的值內,而字典的鍵則是這個單元格的標題(列頭)。對于列表形式的數據,除了csv.write函數外,還需用writerow函數將數據逐行寫入CSV文件。對于字典形式的數據,csv模塊提供了csv.DictWriter函數,除了提供。pen函數的參數外,還需輸入字典所有鍵的數據,然后提供writeheader函數在文件內添加標題,標題內容與鍵一致,最后使用writerows函數將字典內容寫入文件。withopen(file_name,newline=°)asf:write_csv=csv.dictwriter(f,key)write_csv.writeheader()write_csv.wrilerows(data)46、OS模塊

OS模塊是Python標準庫中的一個用于訪問操作系統的模塊,包含普遍的操作系統功能,如復制、創建、修改、刪除文件及文件夾。os模塊的相關函數。函數描述獲取操作系統的名稱os.sep查詢相應操作系統下的文件路徑的分隔符os.linesep查詢當前系統使用的行終止符os.getcwd查詢工作路徑os.listdir查詢指定目錄下的所有文件和目錄名os.remove移除指定文件os.mkdir創建文件夾os.rmdir刪除指定路徑的文件夾,但這文件夾必須是空的os.path.isdir(name)判斷name是不是目錄,不是則返回Falseos.path.isfile(name)判斷name這個文件是否存在,不存在返回Fakeos.path.exists(name)判斷是否存在文件或口錄nameos.path.getsize(name)獲得文件大小,如果name為目錄,則返回0Los.path.abspath(name)獲取絕對路徑os.path.isabs()判斷是否為絕對路徑os.path.normpath(path)規范path字符串形式os.path.split(name)分隔文件名與目錄,返回一個路徑下的目錄名和文件名os.path.splitext()分離文件名和擴展名os.path.join(path,name)連接口錄與文件名或連接目錄與目錄os.path.basename(name)返回文件名os.path.dimame(name)返回文件路徑2Python數據分析1、NumPy創建數組對象NumPy是用于數據科學計算的基礎模塊,不但能完成科學計算任務,而且能被用作高效的多維數組容器,可用于存儲和處理大型矩陣。NumPy的數據容器能保存任意類型的數據,這使得NumPy可無縫并快速地整合各種數據。NumPy提供了兩種基本的對象:ndarray和ufunc。ndarray是存儲單一數據類型的多維數組,而ufunc則是能夠對數組進行處理的函數。ndarray是一系列同類型數據的集合,以0下標為開始進行集合中元素的索引,它的每個元素在內存中都有相同存儲大小的區域。創建一個ndarray只需調用NumPy的array函數即可。numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)array函數的主要參數及其說明如下。名稱描述object數組或嵌套的數列dtype數組元素的數據類型,可選copy對象是否需要復制,可選order創建數組的樣式,C為行方向,F為列方向,A為任意方向(默認)

subok默認返回一個與基類類型一致的數組ndmin指定生成數組的最小維度可通過數組的屬性查看數組的情況。屬性說明ndarray.ndim秩,即軸的數量或維度的數量ndarray.shape數組的維度,對于矩陣,n行m列ndarray.size數組元素的總個數,相當于shape中n*m的值ndarray.dtypendarray對象的元素類型ndarray.itemsizendarray對象中每個元素的大小,以字節為單位ndarray.flagsndarray對象的內存信息ndarray.realndairay元素的實部ndarray.imagndarray元素的虛部ndarray.data包含實際數組元素的緩沖區,由于一般通過數組的索引獲取元素,所以通常不需要使用這個屬性NumPy支持的數據類型比Python內置的類型要多很多。名稱描述bool布爾型數據類型(True或者False)inti由所在平臺決定其精度的整數(一般為int32或int64)int8字節(-128to127)inti6整數(-32768to32767)int32整數(-2147483648to2147483647)int64整數(-9223372036854775808to9223372036854775807)uint8無符號整數(Oto255)uintl6無符號整數(Oto65535)uint32無符號整數(Oto4294967295)uint64無符號整數(0to18446744073709551615)float16半精度浮點數,包括:1個符號位,5個指數位,10個尾數位float32單精度浮點數,包括:1個符號位,8個指數位,23個尾數位float64或float雙精度浮點數,包括:1個符號位,11個指數位,52個尾數位complexcomplexl28類型的簡寫,即128位復數complex64復數,表示雙32位浮點數(實數部分和虛數部分)complex128復數,表示雙64位浮點數(實數部分和虛數部分)ndarray數組除了可以使用底層ndarray構造器來創建外,還可通過其他方式創建。方法說明numpy.arange類似于Python的range函數,通過指定開始值、終值和步長來創建一維數組numpy.linspace通過指定開始值、終值和元素個數來創建一維數組numpy.logspace與linspace函數類似,用于創建等比數列numpy.zeros創建全值為0的數組numpy.eye生成對角線元素為1,其他元素為0的數組,類似單位矩陣numpy.diag創建對角線外的其他元素為0,對角線元素為0或其他值numpy.ones創建元素全為1的數組2、NumPy生成隨機數NumPy提供了強大的生成隨機數的功能,然而,真正的隨機數很難獲得,實際中使用的都是偽隨機數,大部分情況下,偽隨機數就能滿足需求。對于NumPy,與隨機數相關的函數都在random模塊中,其中包括了可以生成服從多種概率分布隨機數的函數。函數描述numpy.random.random生成隨機數組numpy.random,rand生成服從均勻分布的隨機數numpy.random.randn生成服從正態分布的隨機數numpy.random.randint生成給定上下范圍的隨機數numpy.random.seed確定隨機數生成器的種子numpy.random.permulation返回一個序列的隨機排列或返回一個隨機排列的范圍numpy.random.shuffle對一個序列進行隨機排序numpy.random.binomial生成二項分布的隨機數numpy.random.normal生成正態(高斯)分布的隨機數numpy.random.beta生成bate分布的隨機數numpy.random.chiaquare生成卡方分布的隨機數numpy.random.gamma生成gamma分布的隨機數numpy.random.uniform生成在[0,1]中均勻分布的隨機數3、NumPy切片和索引ndarray對象的內容可以通過索引或切片來訪問和修改,與Python中list的切片操作一樣。ndarray數組可以基于0-n的下標進行索引,切片對象可以通過內置的slice函數,并設置start、stop及step參數進行,從原數組中切割出一個新數組。一維數組索引使用:arr[3:5],獲取下標索引3和4的數組數值,不包含arr[5];arr[1:-l:2],范圍中第三個參數表示步長,2表示隔一個元素取一個元素。多維數組的每一個維度都有一個索引,各個維度的索引之間用逗號隔開,如二維數組:arr[O,3:5],索引第0行中第3和4列的元素。多維數組同樣也可以使用整數序列和布爾值索引進行訪問,如arr[l:,(0,2,3)],索引第2行到最后一行中第0、2、3列的元素。4、Numpy數組操作NumPy中包含了一些函數用于處理數組,實現的操作包括修改數組形狀、翻轉數組、修改數組維度、連接數組、分割數組、數組元素的添加與刪除。在NumPy中,常用reshape函數改變數組的維度,其參數為一個正整數元組,分別指定數組在每個維度上的大小。reshape函數在改變原始數據的形狀的同時不改變原始數據的值,如果指定的維度和數組的元素數目不吻合,則函數將拋出異常。在NumPy中,可以使用ravel函數完成數組展平操作。flatten函數也可以完成數組展平操作,與ravel函數區別在于,flatten函數可以選擇橫向或縱向展平。除了改變數組維度,NumPy可對數據進行組合。組合包括橫向組合和縱向組合,橫向組合是將ndarray對象構成的元組作為參數,傳給hstack函數:縱向組合是將ndarray對象構成的元組作為參數,傳給vstack;concatenate函數可實現橫線組合和縱向組合,其中參數axis=l時為橫向組合。在NumPy中,可將數組進行分割成相同大小的子數組,也可以指定原數組中需分割的位置。hsplit函數可以對數組進行橫向分割;vsplit函數可對數組進行縱向分割;split函數可實現數組分割,當參數axis=l時實現橫向分割。5,NumPy矩陣在NumPy中,矩陣是ndarray的子類,數組和矩陣有著重要的區別,NumPy提供了兩個基本對象:一個N維數組對象和一個通用函數對象。其他對象都是在它們之上創建的。矩陣是繼承自NumPy數組對象的二維數組對象。使用mat函數創建矩陣時,若輸入matrix或adarray對象,則不會為它們創建副本,因此調用mat函數和調用matrix(data,copy=False)等價。在NumPy可使用bmat函數將小矩陣組合成大矩陣。在NumPy,矩陣計算是針對整個矩陣中的每個元素進行的,運行速度相對for循環會更快。可實現矩陣與數相乘、矩陣相加、矩陣相減、矩陣相乘、矩陣對應元素相乘等操作,矩陣還有其他特有的屬性,具體如下。屬性描述T返回自身的轉置SH返回自身的共軌轉置I返回自身的逆矩陣A返回自身數據的二維數組的一個視圖6、Pandas庫Pandas是Python,的數據分析核心庫,最初被作為金融數據分析工具而開發出來。Pandas為時間序列分析提供了很好的支持。它提供了一系列能夠快速、便捷地處理結構化數據額數據結構和函數。Pandas兼具了NumPy高性能的數組計算功能以及電子表格和關系型數據庫靈活的數據處理功能。它提供了復雜精細的索引功能,以便便捷地完成重塑、切片和切塊、集合及選取數據子集等操作。7、文本文件讀取Pandas提供了read_table來讀取文本文件,提供了read_csv函數來讀取CSV文件,它們常用參數和語法如下。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多數的參數相同,常用參數及其說明如下。參數描述filepath_or_buffer表示文件路徑,stringsep表示分隔符,string,read_csv默認read_table默認制表符“Tab”header表示將某行數據作為列名,int或sequence,默認infer,表示自動識別names表示列名,array,默認為Noneindex_col表示索引列的位置,int>sequence或False,取值為sequence表示多重索引,默認為Nonedtype表示寫入的數據類型(列名為key,數據格式為values),diet,默認為Noneengine代表數據解析引擎,c或python,默認為cnrows表示讀取前n行,int,默認為None文本文件讀取時encoding表示文件的編碼格式,常用的編碼有UTF-8、UTF-16、GBK、GB2312,GB18030等。如果編碼指定錯誤,則數據無法讀取,IPython解析器會解析錯誤。8、文本文件存儲文本文件的存儲和讀取類似,對于結構化數據,可通過Pandas庫的to_csv函數將數據保存為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函數的常用參數及其說明如下。參數描述path_or_buf表示文件路徑,stringsep表示分隔符,string,默認為na_rep表示缺失值columns表示寫出的列名,默認為Noneheader表示是否將列名寫出,默認為Trueindex表示是否將行名(索引)寫出,默認為Trueindx_label表示索引名,默認為Nonemode表示數據寫入模式,默認為wencoding表示存儲文件的編碼格式,默認為None9、Excel文件讀取Pandas提供了read_excel函數來讀取“xls”“xlsx”兩種Excel文件,其語法和常用參數如下。pd.read_excel(io,sheet_name=O,header=O,names=None,index_col=None,dtype=None)Read_excel函數和read_table函數的部分參數相同,的常用參數及其說明如下。參數描述10表示文件路徑,stringsheetname表示Excel表內數據的分表位置,sheet名稱表示將某行數據作為列名,取值為int時表示將該列作為列名,取值為sequence,則表示多重列索引,默認為headerinfer,表示自動識別names表示列名,默認為Noneindex_col表示索引列的位置,取值為sequence表示多重索引,默認為Nonedtype表示寫入的數據類型,默認為None10、Excel文件存儲將文件存儲為Excel文件,可以使用to_excel函數,其語法和常用參數如下。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函數和to_csv函數的常用參數基本一致,區別之處在于,to_exel函數指定存儲文件的文件路徑參數名稱為excel_write,并且沒有sep參數;to_excel函數增加了一個sheetnames參數,用來指定存儲的ExcelSheet的名稱,默認為Sheetl。11、ExcelExcel文件是MicrosoftOffice的文件,它可以輸入文字,插入圖片,并且具有強大的制作圖表的功能。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)是一種輕量級的數據交換語言。它以文字為基礎,且易于讓人閱讀,同時也方便機器進行解析和生成。read」son()可從指定路徑加載JSON對象至Series或DataFrame;Series.lo」son()是將Series對象以JSON文件格式輸出至指定路徑;DataFrame.to」son()是將DataFrame對象以JSON文件格式輸出至指定路徑。13^HTMLHTML(HyperTextMarkupLanguage)是一種頁面內可以包含圖片、鏈接甚至音樂和程序等非文字元素的超文本標記語言,是標準通用標記語言下的一個應用。read_html()可從指定路徑加載HTML表至DataFrame;DataFrame.to_html()是將DataFrame對象以HTML文件格式輸出至指定路徑。14^DataFrame構建DalaFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型值)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共同用一個索引)。DataFrame構造方法:pandas.DataFrame(data,index,columns,dtype,copy)0DataFrame是一個二維的數組結構,類似二維數組。使用ndarrays創建,ndarray的長度必須相同,如果傳遞了index,則索引的長度應等于數組的長度。如果沒有傳遞索引,則默認情況下,索引將是range(n),其中n是數組長度。dala={Site':rGoogle','Rimoob','Wiki']JAge':UO,12,13]}df=pd.DataFrame(data)DataFrame可使用字典(key/value)進行創建,其中字典的key為列名,沒有對應的部分數據為NaN。data=1,calories":[420,380,390],"duration":[50,40,45])df=pd.DataFrame(data)DataFrame可通過列表進行創建,長度需一致。data=[[4,7,10],[5,8,11],[6,9,12]]df=pd.DataFrame(data,columns=['A','B\'C'])15、DataFrame常用屬性DataFrame的基礎屬性有values、index>columns和dtypes,分別可獲取元素、索引、列名和類型。此外,size、ndim和shape屬性可獲取DataFrame的元素個數、維度數和數據形狀。16^DataFrame訪問數據操作DataFrame是一個帶有標簽的二維數組,每個標簽相當于每一列的列名,可通過指定列名獲取單列數據。訪問DataFrame中某一列的某幾行,單獨一列的DataFrame可視為一個Series,而訪問一個Series和訪問一個一維ndarray相同。訪問多列數據時,可將多個列索引名稱放入一個列表,同時,訪問DataFrame多列數據中的多行數據和訪問單列數據的多行數據的方法基本一致。如果只需訪問某幾行,其實現方法和訪問多列多行相似,只是選擇所有列,使用“:”代替。此外,DataFrame提供的head和tail方法也可得到多行數據,head方法表示獲取數據前幾行連續數據,默認訪問前五行數據;tail方法表示獲取數據后幾行連續數據,默認訪問后五行數據。Pandas提供了loc和iloc兩種更靈活的方法來實現數據訪問。loc方法是針對DataFrame索引名稱的切片方法,如果傳入的不是索引名稱,那么切片操作則無法執行,利用1OC方法,能夠實現所有單層索引切片操作,1OC方法的使用方法:DataFrame.loc[行索引名稱或條件,列索引名稱]。iloc和loc的區別是,iloc接收的必須是行索引和列索引的位置,使用方法:DataFrame.iloc[行索引位置,列索引位置]。使用loc,iloc方法可取出DataFrame中任意數據。在使用loc方法時,如果內部傳入的行索引名稱是一個區間,則前后均為閉區間;使用iloc方法時,如果內部傳入的行索引位置或列索引位置為區間,則為前閉后開區間。17、DataFrame修改數據操作更改DalaFrame中的數據的原理是將這部分數據提取出來,然后重新賦值為新的數據。需要注意的是,數據更改時直接對DataFrame原數據更改,操作無法撤銷。18、DataFrame增添數據操作DataFrame新增一列只需新建一個列索引,并對該索引下的數據進行賦值即可。如果新增的一列值是相同的,則直接賦值一個常量。在具體某個位置插入一列可以用insert的方法,如DaiaFrae.insert(iloc,columns,value)。19、DataFrame刪除數據操作刪除某列或某行數據需使用Pandas的drop方法,用法如下。DataFrame.drop(labels=None,axis=0,index=None,columns=None,inplace=False)drop方法的參數及其說明如下。參數描述labels表示刪除的行或者列的標簽axis表示操作的軸向,0表示刪除行,I表示刪除列index直接指定要刪除的行columns直接指定要刪除的列inplace默認為False,表示該刪除操作不改變原數據,而是返回一個執行刪除操作后的新dataframe;True則會直接在原數據上進行刪除操作,刪除后無法返回20、數值型特征的描述性統計數值型特征的描述性統計主要包括計算數值型數據的完整情況、最小值、最大值、均值、中位數、四分位數、極差、標準差、方差和變異系數等。函數名稱說明函數名稱說明numpy.min最小值numpy.max最大值numpy.mean均值numpy.ptp極差numpy.median中位數numpy.std標準差numpy.var方差numpy.cov協方差21、類別型特征的描述性統計Pandas庫基于NumPy,即可使用NumPy的統計函數對數據框進行描述性統計,Pandas還提供了describe方法一次性得到數據框中所有數值型特征的非空值數目、均值、四分位數和標準差。函數名稱說明函數名稱說明min最小值max最大值mean均值ptp極差median中位數std標準差var方差cov協方差Sem標準誤差Mode眾數Skew樣本偏差Kurt樣本峰度Quantile四分位數Count非空值數目describe描述統計mad平均絕對離差22、DataFrame基本數據類型轉換DataFrame.astype(self,dtype,copy=True,errors='raise',**kwargs)

astype方法的參數和說明如下。參數描述dtype轉換的類型copy默認為True,當為真時,返回一個副本errors默認為raise,即當有錯誤時將觸發exception,提示錯誤信息;如果為ignore,不產生報錯,返回原來的對象23、DataFrame的時間類型在多數情況下,對時間類型數據進行分析的前提是將原本為字符串的時間轉換為標準時間,與時間相關的類有如下幾種。類名稱描述Timestamp最基礎的時間類。表示某個時間點。絕大多數的場景中的時間數據都是TimestampPeriod表示單個時間跨度,或者某個時間段,例如某一天、某一小時等Timedelta表示不同單位的時間,例如Id、1.5h、3min等,而非具體的某段時間Datetimeindex一組Timestamp構成的Index,可以用來作為Scries或DataFrame索引Pcriodtimelndcx一組Period構成的Index,可以用來作為Series或DataFrame索引Timedeltalndex一組Timedelta構成的Index,可以用來作為Series或DataFrame索引Pandas中可使用to_datetime函數將字符串轉換成Timestamp,需注意Timestamp類型的時間是有限制的,最早只能夠表示至1677年9月21日,通過pandas.Timestamp.min可查看最早的時間,同樣的通過pandas.Timestamp.max可查看最晚的時間。除了將數據從原始DataFrame中直接轉換為Timestamp格式外,還可以將數據單獨提出來,將其轉換為Datetimeindex或Periodindex,通過pandas.DatetimeIndex()W<pandas.Periodlndex()o在多數涉及與時間相關的數據處理、統計分析的過程中,都需要提取時間中的年份、月份等數據。使用對應的Timestamp類屬性即可實現提取,常用類屬性和說明如下。屬性名稱說明屬性名稱說明year年week一年中第幾周monthJJquarter季節day日weekofyear一年中第幾周hour小時dayofyear一年中的第幾天minute分鐘dayofweek一周第幾天second秒weekday一周第幾天date日期weekday_name星期名稱time時間is_leap_year是否閏年需注意Periodindex相比于Datetimelndex少了weekday_name屬性,所以不能用該屬性提取星期名稱數據。若要提取信息名稱,可通過weekday屬性,而后將0?6這7個標簽分別賦值為Monday-SundayoPandas的時間數據是可做運算的,主要用到Pandas庫的Timedelta類。使用Timedelta類,配合常規的時間相關類能夠輕松實現時間算術運算。目前,Timedella函數中時間周期中沒有年和月,所有周期名稱、對應單位及說明如下。周期名稱單位說明周期名稱單位說明weeks后星期secondss秒daysD天millisecondsms亳秒hoursh小時microsecondsus微秒minutes m 分 nanosecondsns 納秒24、Pandas分組Pandas提供了一個靈活高效的groupby方法,配合agg方法或者叩ply方法,能夠實現分組聚合的操作。groupby方法提供的是分組聚合步驟中的拆分功能,能夠根據索引或者字段對數據進行分組,其常用參數于使用格式如下。DataFrame.groupby(by=None,axis=O,level=None,as_index=True,sort=True,group_keys=Truc,squeeze=False,observednFalse,**kwargs)groupby方法的參數及其說明如下。參數名稱說明by用于確定進行分組的依據axis表示操作的軸向,默認對列進行操作level表示標簽所在級別as_index表示聚合后聚合標簽是否以DataFrame索引形式輸出sort表示是否對分組依據、分組標簽進行排序group_keys表示是否顯示分組標簽名稱squeeze表示是否在允許的情況下對返回數據進行降維分組后的結果并不能直接查看,而是被存在內存中,輸出的是內存地址。實際上,分組后的數據對象GroupBy類似于Series和DataFrame,是Pandas提供的一種對象。GroupBy對象常用的描述性統計方法如下。方法名稱說明count計算分組的數目,包括缺失值head返回每組的前n個值max返回每組最大值mean返回每組的均值median返回每組的中位數cumcount對每個分組中的組員進行標記,0?n-1size返回每組的大小min返回每組的最小值std返回每組的標準差sum返回每組的和25、Pandas聚合agg、aggregate方法都支持對每個分組應用某函數,包括Python的內置函數或自定義函數。同時這兩個方法也能直接對DataFrame進行函數應用操作。針對DataFrame的agg于aggregate的使用格式如下。DataFrame.agg(func,axis=0,*args,**kwargs)DataFrame.aggregate(func,axis=0,*args,**kwargs)如需對多個字段進行單獨不同操作,如對于某字段只做求均值操作,另一個字段只做求和操作,則需要使用字典的方法,將兩個字段名分別做key,然后將對于的函數作為value。當某個字段進行多種方法進行統計,如某字段需進行求和和求均值操作,只需將字典對應key的value轉換為列表,將列表元素轉換為多個目標的統計量即可。apply方法類似于agg方法,能夠將函數應用于每一列。不同之處在于,與agg相比apply傳入的函數只能作用于整個DataFrame或者Series,而無法像agg一樣能夠對不同字段應用不同函數來獲取不同結果。apply方法的常用參數和格式如下。DataFrame.apply(func,axis=0,broadcast:False,raw=False,reduce;None,args=(),**kwds)transform方法能夠對整個DataFrame的所有元素進行操作。transform方法只有一個參數"func",表示對DataFrame操作的函數。同時,transform方法能夠對DataFrame分組后的對象Grou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論