




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章Pandas基礎(chǔ)與應(yīng)用主講人:***13-10月-23Python數(shù)據(jù)分析與數(shù)據(jù)挖掘目錄contentsPandas中的數(shù)據(jù)結(jié)構(gòu)0102Pandas簡(jiǎn)介0304數(shù)據(jù)運(yùn)算與分析Pandas中數(shù)據(jù)的基本操作Pandas簡(jiǎn)介016.1.1主要特性Pandas是Python中的一個(gè)高效易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析的第三方庫。Pandas是Python中數(shù)據(jù)分析的基礎(chǔ),旨在成為最實(shí)用最便利的開源數(shù)據(jù)分析的工具。其主要特性如下:善于處理浮點(diǎn)數(shù)和非浮點(diǎn)數(shù)的數(shù)據(jù)缺失(用NaN來表示);大小可變:數(shù)據(jù)的行列能夠從DataFrame或者更高維度的數(shù)據(jù)結(jié)構(gòu)中添加或者刪除;自動(dòng)數(shù)據(jù)對(duì)齊:目標(biāo)會(huì)被顯式地根據(jù)標(biāo)簽對(duì)齊,使用者也可以忽略標(biāo)簽,直接利用DataFrame、Series來自動(dòng)對(duì)齊;功能強(qiáng)大,靈活的分組功能,可對(duì)數(shù)據(jù)執(zhí)行拆分-應(yīng)用-組合的一系列操作,以便聚合和轉(zhuǎn)換數(shù)據(jù);可以很方便地把其他Python和NumPy的雜亂的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成DataFrame對(duì)象;6.1.1主要特性基于智能標(biāo)簽的切片、花式索引和子集化大數(shù)據(jù)集;直觀的合并和連接數(shù)據(jù)集;靈活的重塑(reshape)和數(shù)據(jù)集的旋轉(zhuǎn);軸的分層標(biāo)簽(每個(gè)標(biāo)記可能有多個(gè)標(biāo)簽);強(qiáng)大的IO工具,用于從原始文件(CSV)、Excel文件、數(shù)據(jù)庫中加載數(shù)據(jù),以及從超快速HDF5格式保存/加載數(shù)據(jù);
時(shí)間序列-特定功能:日期范圍生成和頻率轉(zhuǎn)換、移動(dòng)窗口統(tǒng)計(jì)、移動(dòng)窗口線
性回歸、日期移動(dòng)和滯后等。6.1.2
pandas安裝安裝包方法:pip命令,語法格式為:pipinstallpandasconda命令,語法格式為:condainstallpandas還可以使用condalistpandas查看已安裝的pandas包的版本信息。Anaconda環(huán)境中默認(rèn)已集成了Numpy和Pandas等第三方工具包,如想自行安裝,可使用pip命令或conda命令。Pandas中的數(shù)據(jù)結(jié)構(gòu)026.2.1
Series數(shù)據(jù)結(jié)構(gòu)Series數(shù)據(jù)結(jié)構(gòu)一種類似于一維數(shù)組的對(duì)象,它由一組數(shù)據(jù)以及一組與之相對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽(即索引)組成。創(chuàng)建Series的語法為:s=pd.Series(data,index=index)其中:data可以是一維數(shù)組、列表和字典,還可以是一個(gè)標(biāo)量;index參數(shù)是與之對(duì)應(yīng)的行的索引,可依實(shí)際情況進(jìn)行指定或默認(rèn)。[例6-1]使用標(biāo)量創(chuàng)建Series:index參數(shù)必須設(shè)置,如未設(shè)置index,默認(rèn)狀態(tài)時(shí)生成只有一組數(shù)據(jù)(1個(gè)data和一個(gè)索引)的Series。(左側(cè)為索引值,右側(cè)為數(shù)據(jù))[例6-2]數(shù)組創(chuàng)建Series:index可默認(rèn)或設(shè)定,默認(rèn)狀態(tài)下的index從0開始。[例6-3]列表創(chuàng)建Series:使用列表創(chuàng)建Series,并自定義index。6.2.1
Series數(shù)據(jù)結(jié)構(gòu)索引個(gè)數(shù)大于data個(gè)數(shù)時(shí),會(huì)用NaN自動(dòng)補(bǔ)全[例6-4]字典創(chuàng)建Series:當(dāng)index默認(rèn)時(shí),會(huì)自動(dòng)以字典的key作為索引,并按照排序后排列6.2.1
Series數(shù)據(jù)結(jié)構(gòu)
Series操作
對(duì)于Series對(duì)象的使用,主要取決于其創(chuàng)建對(duì)象的相關(guān)操作。由于數(shù)組和字典都可以用來創(chuàng)建Series,所以Series除了具備基本屬性外,還適用數(shù)組、字典的相關(guān)操作。Series支持許多數(shù)組類型的操作。如:索引、切片等,以及許多NumPy的函數(shù)也適用于Series,其返回值仍是Series[例6-5]顯示Series對(duì)象的屬性。Series的常用屬性包括values和index,還有name和屬性。[例6-6]Series支持?jǐn)?shù)組類型的操作。如:索引、切片等。6.2.1
Series數(shù)據(jù)結(jié)構(gòu)
Series還適用于字典的基本操作,如in()和get()。in()用來查看Series中是否有某個(gè)標(biāo)記,返回值為true或false;get()來索引不存在的標(biāo)記,返回值為Nan。[例6-7]Series支持的字典操作。(其中s為例6-6中創(chuàng)建的Series對(duì)象) Series還支持一些向量化操作。如兩個(gè)Series相加、數(shù)乘等。[例6-8]Series支持的向量化操作。6.2.1
Series數(shù)據(jù)結(jié)構(gòu)6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu) DataFrame數(shù)據(jù)結(jié)構(gòu)
DataFrame是一個(gè)結(jié)構(gòu)類似于二維數(shù)組或表格的數(shù)據(jù)類型,可以看作一張表格,它含有一組有序的列,每一列的數(shù)據(jù)類型都是一致的。DataFrame類對(duì)象由索引和數(shù)據(jù)組成,與Series類對(duì)象相比,該對(duì)象有兩組索引,分別是行索引(index)和列索引(columns)。DataFrame的數(shù)據(jù)結(jié)構(gòu)如下圖所示。6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu)[例6-10]可以指定行索引和列索引創(chuàng)建DataFrame,如下:[例6-9]由數(shù)組構(gòu)建DataFrame。等長列表或NumPy數(shù)組:系統(tǒng)自動(dòng)分配列索引和行索引
列表類型是字典時(shí),一般不需另外指定列的索引,會(huì)自動(dòng)采用字典的key豎向作為列索引,并排序后輸出,但支持指定行索引。注意:字典值的長度必須相同,否則會(huì)報(bào)錯(cuò)。[例6-11]傳入列表類型的字典構(gòu)建DataFrame。6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu)
DataFrame的常用屬性包括values、index、columns、dtypes、size、ndim和shape等,分別可以顯示DataFrame的數(shù)據(jù)、索引、列名、類型、元素個(gè)數(shù)、維度和形狀等,如表6-1所示。6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu)
表6-1DataFrame的常用屬性[例6-12]輸出上例中DataFrame對(duì)象的屬性。6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu)Pandas中數(shù)據(jù)的基本操作036.3.1數(shù)據(jù)的導(dǎo)入和導(dǎo)出 Pandas支持多種文件格式的數(shù)據(jù)讀取與寫入,包括txt、Excel、csv、sql、table、html和json等眾多格式。讀取文件的語法格式為:File=pd.read_xxx(file,encoding)
其中,read_xxx()函數(shù)的選擇取決于要讀取文件的格式,在實(shí)際操作中可以tab鍵補(bǔ)全函數(shù);file是指將要讀取的文件路徑;encoding是指讀取文件的編碼格式,一般常用的有utf-8、utf-16、gbk及gb2312。 Dataframe數(shù)據(jù)也可以保存在各種格式的文件中,需要使用的函數(shù)是.to_xxx()函數(shù)。6.3.1數(shù)據(jù)的導(dǎo)入和導(dǎo)出Pandas常用的數(shù)據(jù)導(dǎo)入函數(shù)如表6-2所示。表6-2Pandas常用的數(shù)據(jù)導(dǎo)入函數(shù)6.3.1數(shù)據(jù)的導(dǎo)入和導(dǎo)出[例6-13]Pandas讀取csv文件數(shù)據(jù)。6.3.1數(shù)據(jù)的導(dǎo)入和導(dǎo)出[例6-14]Pandas讀取excel文件數(shù)據(jù)。6.3.1數(shù)據(jù)的導(dǎo)入和導(dǎo)出[例6-15]Pandas讀取json文件數(shù)據(jù)。6.3.1數(shù)據(jù)的導(dǎo)入和導(dǎo)出
文本數(shù)據(jù)的導(dǎo)出存儲(chǔ)與讀取類似,可以使用DataFrame的.to_xxx()函數(shù)將Dataframe對(duì)象數(shù)據(jù)保存到各種格式的文件中。結(jié)構(gòu)化數(shù)據(jù)可以通過to_csv函數(shù)以csv文件格式存儲(chǔ),to_excel函數(shù)可以將數(shù)據(jù)存儲(chǔ)為Excel文件格式。[例6-16]將df數(shù)據(jù)保存為csv文件,使用逗號(hào)作為分隔符。6.3.2數(shù)據(jù)的選取
首先創(chuàng)建一個(gè)DataFrame對(duì)象df1,然后介紹相關(guān)數(shù)據(jù)的查看與選取方法。[例6-17]創(chuàng)建一個(gè)DataFrame對(duì)象。1.基本選取方式1)按列選取數(shù)據(jù)DataFrame的列數(shù)據(jù)為一個(gè)Series??筛鶕?jù)字典訪問key值的方式使用對(duì)應(yīng)的列名或列名的列表,實(shí)現(xiàn)單列或多列數(shù)據(jù)的訪問,或者以屬性的方式實(shí)現(xiàn)單列數(shù)據(jù)的訪問,例如df.A。[例6-18]按列選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取1.基本選取方式2)按行選取數(shù)據(jù)訪問DataFrame某幾行數(shù)據(jù)可以使用[:]實(shí)現(xiàn)。也可以使用head和tail函數(shù)得到多行數(shù)據(jù),默認(rèn)獲得開始或末尾的連續(xù)5行數(shù)據(jù),可以在函數(shù)中輸入要訪問的行數(shù),即可實(shí)現(xiàn)目標(biāo)行數(shù)的查看,如head(10)可查看前10行數(shù)據(jù)。[例6-19]按行選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取1.基本選取方式3)按行和列選取數(shù)據(jù)選取DataFrame中某一列的某幾行時(shí),單獨(dú)一列的DataFrame可以看作一個(gè)Series,而訪問一個(gè)Series基本和訪問一個(gè)一維的ndarray相同。選取DataFrame多列數(shù)據(jù)時(shí),可以將多個(gè)列索引名作為一個(gè)列表。同時(shí)訪問DataFrame多列數(shù)據(jù)中的多行數(shù)據(jù)與訪問單列數(shù)據(jù)的多行數(shù)據(jù)方法基本相同。[例6-20]按行和列選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取1.基本選取方式4)布爾運(yùn)算選取數(shù)據(jù)可以對(duì)DataFrame中的數(shù)據(jù)根據(jù)布爾運(yùn)算進(jìn)行選取,常用的布爾運(yùn)算符包括大于(>)、小于(<)、不等于(!=)等。[例6-21]布爾運(yùn)算選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取2. loc及iloc選取方式可以使用Pandas提供的loc和iloc方法對(duì)DataFrame進(jìn)行切片訪問。loc方法使用索引名稱對(duì)DataFrame進(jìn)行切片,如果傳入的不是索引名稱,則切片操作將無法執(zhí)行。iloc方法,即indexlocate,參數(shù)是整型,需使用行索引和列索引的位置進(jìn)行切片訪問。loc和iloc的使用方法如下。DataFrame.loc[行索引名稱或條件,列索引名稱]DataFrame.iloc[行索引位置,列索引位置]6.3.2數(shù)據(jù)的選取2. loc及iloc選取方式6.3.2數(shù)據(jù)的選取[例6-22]使用loc方法進(jìn)行切片選取,實(shí)例代碼為:2. loc及iloc選取方式6.3.2數(shù)據(jù)的選取[例6-23]使用iloc方法進(jìn)行切片選取,實(shí)例代碼為:[例6-24]DataFrame中增加數(shù)據(jù)。6.3.3數(shù)據(jù)的編輯1.增加數(shù)據(jù)可以通過給新列直接賦值來為DataFrame增加新列。默認(rèn)狀態(tài)下,新增加的列將排在原對(duì)象的后面,也可以使用insert()方法,將列添加到指定位置。用法為:df1.insert(iloc,column,value),其中,第一個(gè)參數(shù)是增加列的位置,第二個(gè)參數(shù)是增加列的索引,第三個(gè)位置是增加列的內(nèi)容。[例6-25]通過append()方法傳入字典結(jié)構(gòu)數(shù)據(jù)來增加數(shù)據(jù)。請(qǐng)注意,默認(rèn)append不改變?cè)瓟?shù)據(jù),若要在原數(shù)據(jù)中增加,需要讓原數(shù)據(jù)等于append后的結(jié)果。6.3.2數(shù)據(jù)的選取[例6-26]刪除DataFrame中的數(shù)據(jù)。6.3.3數(shù)據(jù)的編輯2.刪除數(shù)據(jù)可用關(guān)鍵詞del或者pop()方法刪除指定列。還可以使用drop()方法,并設(shè)置axis參數(shù)指定要?jiǎng)h除的是行還是列,默認(rèn)不改變?cè)瓟?shù)據(jù),若要在原數(shù)據(jù)中刪除,需要設(shè)置參數(shù)inplace=True。[例6-27]修改DataFrame中的數(shù)據(jù)。6.3.3數(shù)據(jù)的編輯3.修改數(shù)據(jù)對(duì)選定的數(shù)據(jù)直接賦值即可修改數(shù)據(jù),數(shù)據(jù)的修改操作無法撤銷,且是在原數(shù)據(jù)上直接修改,因此需要實(shí)現(xiàn)做好數(shù)據(jù)的備份。6.3.4數(shù)據(jù)的合并1.merge()函數(shù)操作類似于sql里面的join,實(shí)現(xiàn)將2個(gè)DataFrame根據(jù)一些共有的列連接起來,內(nèi)含多個(gè)參數(shù),具體參數(shù)說明見下表。參數(shù)說明left參與合并的左側(cè)的DataFrameright參與合并的右側(cè)的DataFramehow連接方式:‘inner’(默認(rèn)),‘outer’,‘left’,‘right’on用于連接的列名,必須同時(shí)存在于左右兩個(gè)DataFrame對(duì)象中,若干未指定,則left和right的列名交集作為連接鍵。left_on左側(cè)DataFrame中用作連接鍵的列right_on右側(cè)DataFrame中用作連接鍵的列l(wèi)eft_index將左側(cè)的行索引用作其連接鍵right_index將右側(cè)的行索引用作其連接鍵sort根據(jù)連接鍵對(duì)合并后的數(shù)據(jù)進(jìn)行排序,默認(rèn)為True。suffixes字符串值元組,用于追加到重疊列名的末尾,默認(rèn)為(‘_x’,‘_y’)。copy設(shè)置為False,可以在某些特殊情況下避免將數(shù)據(jù)復(fù)制到結(jié)果數(shù)據(jù)結(jié)構(gòu)中。merge()函數(shù)—實(shí)例初始化兩個(gè)DataFrame對(duì)象:left=right=[例6-28]默認(rèn)狀態(tài):DataFrame合并時(shí)會(huì)以列名的交集作為連接鍵。若連接列中含有多個(gè)相同的值,則采用笛卡爾積的形式進(jìn)行連接。設(shè)置how參數(shù):設(shè)置連接時(shí)的方式,默認(rèn)狀態(tài)下是inner。當(dāng)how取值outer時(shí),會(huì)采用并集式合并,缺項(xiàng)以NaN補(bǔ)齊。6.3.4數(shù)據(jù)的合并
當(dāng)DataFrame的列交集不止一項(xiàng)時(shí),可以通過參數(shù)on來指定連接鍵,可一個(gè),也可多個(gè)。如果合并的DataFrame中還有相同的列索引,可以設(shè)置suffixes參數(shù),實(shí)現(xiàn)對(duì)列名的區(qū)分。[例6-29]使用merge函數(shù)并設(shè)置suffixes參數(shù),連接DataFrame對(duì)象。6.3.4數(shù)據(jù)的合并merge()函數(shù)—實(shí)例2.concat()函數(shù)
主要實(shí)現(xiàn)一些簡(jiǎn)單的行合并和列合并的操作,其內(nèi)含多個(gè)參數(shù),具體見下表。參數(shù)說明objs參與連接的列表或字典,且列表或字典里的對(duì)象是Pandas數(shù)據(jù)類型,唯一必須給定的參數(shù)axis=0指明連接的軸向,0是縱軸,1是橫軸,默認(rèn)是0join‘inter’(交集),‘outer’(并集),默認(rèn)是‘outer’join_axis指明用于其他n-1條軸的索引,不執(zhí)行交并集keys與連接對(duì)象有關(guān)的值,可以是任意值的列表、元組或數(shù)組levels指定用作層次化索引各級(jí)別上的索引,如果設(shè)置keys的話names用于創(chuàng)建分層級(jí)別的名稱,如果設(shè)置keys或levels的話verify_integrity檢查結(jié)果對(duì)象新軸上的重復(fù)情況,默認(rèn)值為false,允許重復(fù)ignore_index不保留連接軸上的索引,產(chǎn)生一組新索引range(total_length)6.3.4數(shù)據(jù)的合并concat()函數(shù)—實(shí)例初始化三個(gè)DataFrame對(duì)象:df1=df2=[例6-30]設(shè)置參數(shù)axis:axis=0時(shí),縱向合并;axis=1時(shí),橫向合并。設(shè)置ignore_index參數(shù):合并時(shí)是否保留原來的索引;默認(rèn)狀態(tài)下,合并后的索引不改變。df3=6.3.4數(shù)據(jù)的合并初始化兩個(gè)DataFrame對(duì)象:df1=df2=[例6-31]設(shè)置join參數(shù):當(dāng)join參數(shù)設(shè)置為outer,按并集方法合并,缺少的部分填充NaN。當(dāng)join參數(shù)設(shè)置為inner時(shí),以交集方式合并,即只合并公共的部分6.3.4數(shù)據(jù)的合并concat()函數(shù)—實(shí)例數(shù)據(jù)運(yùn)算與分析046.4.1算術(shù)和比較運(yùn)算Pandas為Series和DataFrame提供了許多算術(shù)運(yùn)算的方法,算術(shù)規(guī)則是根據(jù)行列索引補(bǔ)齊后進(jìn)行運(yùn)算,運(yùn)算結(jié)果默認(rèn)為浮點(diǎn)型,補(bǔ)齊時(shí)缺項(xiàng)填充為NaN。初始化兩個(gè)DataFrame對(duì)象:a:b:[例6-32]DataFrame對(duì)象的算術(shù)運(yùn)算。四則運(yùn)算時(shí):返回一個(gè)新的對(duì)象,也可以采用相關(guān)方法,實(shí)現(xiàn)相似的效果,分別是:.add(d,**argws).sub(d,**argws).mul(d,**argws).div(d,**argws)6.4.1算術(shù)和比較運(yùn)算a:b:[例6-33]DataFrame對(duì)象的比較運(yùn)算。比較運(yùn)算:只能比較相同索引的元素,而且不進(jìn)行補(bǔ)齊操作,返回一個(gè)布爾型的對(duì)象。常見的比較運(yùn)算有:‘>’,‘<’,‘>=’,‘<=’,‘==’,‘!=’等。初始化兩個(gè)DataFrame對(duì)象:6.4.2數(shù)據(jù)排序
Pandas提供了數(shù)據(jù)排序的方法,既可以依據(jù)行列的索引排序,也可以依據(jù)指定行列索引的數(shù)據(jù)排序。排序主要利用的方法是sort_index()和sort_values()。
依據(jù)索引排序:采用sort_index(axis=[0,1],ascending=True)方法。通過設(shè)置參數(shù)axis實(shí)現(xiàn)對(duì)行索引和列索引的排序,一般默認(rèn)順序排列。
當(dāng)axis=1時(shí),實(shí)現(xiàn)對(duì)列索引的排序;
當(dāng)axis=0時(shí),實(shí)現(xiàn)對(duì)行索引的排序。[例6-34]DataFrame對(duì)象的數(shù)據(jù)排序。6.4.2數(shù)據(jù)排序
依據(jù)數(shù)值排序:使用的方法是sort_values(by,axis=0,ascending=True),其中默認(rèn)順序排列,by是axis軸上的某個(gè)索引或者索引列表。此外,若含有空值時(shí),統(tǒng)一排序到末尾。
6.4.3統(tǒng)計(jì)分析 Pandas提供的Series和DataFrame兩種數(shù)組類型還支持各種統(tǒng)計(jì)分析的操作?;镜慕y(tǒng)計(jì)分析函數(shù)一般均適用于以上兩種數(shù)據(jù)類型。常見的基本統(tǒng)計(jì)函數(shù)如下表。方法說明.sum()計(jì)算數(shù)據(jù)的總和,按0軸計(jì)算,下同.count()非NaN值得數(shù)量.mean().median()計(jì)算數(shù)據(jù)的算術(shù)平均值、算術(shù)中位數(shù).var().std()計(jì)算數(shù)據(jù)的方差、標(biāo)準(zhǔn)差.min().max()計(jì)算數(shù)據(jù)的最小值、最大值.argmin().argmax()計(jì)算數(shù)據(jù)最大、最小值所在位置的索引位置(自定義所用),僅Series可用.idxmin().idxmax()計(jì)算數(shù)據(jù)最大、最小值所在位置的索引(自定義所用),僅Series可用.describe()針對(duì)各列的統(tǒng)計(jì)匯總6.4.3統(tǒng)計(jì)分析[例6-35]讀入小費(fèi)文件tips.csv,使用DataFrame對(duì)象的基本統(tǒng)計(jì)分析方法了解數(shù)據(jù)信息。6.4.3統(tǒng)計(jì)分析describe()方法返回的結(jié)果包括各列的元素個(gè)數(shù)、均值、標(biāo)準(zhǔn)差、最小值、四分之一分位點(diǎn)、中位數(shù)、四分之三分位點(diǎn)和最大值。corr()方法可以返回?cái)?shù)值列或指定兩個(gè)數(shù)值列之間的相關(guān)系數(shù)。6.4.3統(tǒng)計(jì)分析
對(duì)于Pandas數(shù)據(jù),由于其類似表格的特性,還支持許多累計(jì)統(tǒng)計(jì)的分析,為數(shù)據(jù)分析提供了很大的方便,也成Pandas的一大優(yōu)勢(shì)。常見的累計(jì)統(tǒng)計(jì)分析函數(shù)如下表。方法說明.cumsum()依次給出前n個(gè)數(shù)的和.cumprod()依次給出前n個(gè)數(shù)的積.cummax()依次給出前n個(gè)數(shù)的最大值.cummin()依次給出前n個(gè)數(shù)的最小值df:首先,構(gòu)建一個(gè)DateFrame對(duì)象。6.4.3統(tǒng)計(jì)分析[例6-36]DataFrame對(duì)象的累計(jì)函數(shù)。.cumsum()和.cumprod()函數(shù)分別返回一個(gè)DataFrame,除第一數(shù)據(jù)外,其余行是前幾行(包括本行)數(shù)據(jù)累加/積的結(jié)果。本例中,df.cumsum()和df.cumprod()的結(jié)果如下:6.4.3統(tǒng)計(jì)分析[例6-36]DataFrame對(duì)象的累計(jì)函數(shù)。.cummax()和.cummin()函數(shù)分別返回一個(gè)DataFrame,返回值分別為對(duì)應(yīng)列上前幾行數(shù)據(jù)的最大值和最小值。本例中,df.cummax()和df.cummin()的結(jié)果如下:6.4.3統(tǒng)計(jì)分析[例6-36]DataFrame對(duì)象的累計(jì)函數(shù)。此外,Pandas在統(tǒng)計(jì)操作中,還支持滾動(dòng)計(jì)算,利用的函數(shù)主要是.rollong(w).sum()等類似函數(shù),其中,w主要是指參與運(yùn)算的元素?cái)?shù)量,其返回值是一個(gè)DataFrame,缺失值以NaN補(bǔ)全,df.rolling(2).sum()的結(jié)果下:6.4.4分組與聚合1.數(shù)據(jù)分組可以使用groupby()根據(jù)索引或字段對(duì)數(shù)據(jù)進(jìn)行分組,具體的用法如下所示:DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=<no_default>,observed=False,dropna=True)說明如下:6.4.4分組與聚合[例6-37]數(shù)據(jù)分組實(shí)例。
groupby分組后的結(jié)果不再是DataFrame類型,而是一個(gè)DataFrameGroupBy對(duì)象。可以按單列分組,也可以同時(shí)按多個(gè)列進(jìn)行分組,如df.groupby(["A","B"])表示按A和B兩列進(jìn)行分組。6.4.4分組與聚合2.數(shù)據(jù)聚合分組后的結(jié)果不能直接查看,可以使用聚合運(yùn)算對(duì)分組后數(shù)據(jù)進(jìn)行計(jì)算,并查看可聚合計(jì)算后的結(jié)果,常用的數(shù)據(jù)聚合方法如下表所示。6.4.4分組與聚合[例6-38]數(shù)據(jù)聚合實(shí)例。6.4.4分組與聚合2.數(shù)據(jù)聚合除了使用pandas提供的數(shù)據(jù)聚合方法,還可以將自定義的聚合函數(shù)傳入agg()或aggregate()方法,實(shí)現(xiàn)分組后的數(shù)據(jù)聚合計(jì)算。agg()方法可以指定軸上使用一個(gè)或多個(gè)操作進(jìn)行聚合,支持Python內(nèi)置函數(shù)或自定義的函數(shù)。aggregate()方法對(duì)DataFrame對(duì)象操作的功能基本相同。6.4.4分組與聚合[例6-39]使用agg()方法聚合數(shù)據(jù),df為上例中定義的DataFrame對(duì)象。6.4.5透視表與交叉表1.透視表數(shù)據(jù)透視表是常用的數(shù)據(jù)分析工具之一,它可以根據(jù)一個(gè)或多個(gè)指定的維度對(duì)數(shù)據(jù)進(jìn)行聚合。在python中可以通過pandas.pivot_table函數(shù)來實(shí)現(xiàn)數(shù)據(jù)透視表。pandas.pivot_table函數(shù)包含5個(gè)主要參數(shù)及其他可選參數(shù),如下所示。pandas.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All',observed=False,sort=True)說明如下:[例6-40]使用pivot_table創(chuàng)建數(shù)據(jù)透視表。6.4.5透視表與交叉表[例6-40]使用pivot_table創(chuàng)建數(shù)據(jù)透視表。6.4.5透視表與交叉表首先,設(shè)列A作為行分組鍵,列C作為列分組鍵,通過sum來聚合列D的數(shù)據(jù)。[例6-40]使用pivot_table創(chuàng)建數(shù)據(jù)透視表。6.4.5透視表與交叉表然后,設(shè)列A和B作為行分組鍵,列C作為列分組鍵,通過sum來聚合列D的數(shù)據(jù),使用fill_value參數(shù)填充缺失值。[例6-40]使用pivot_table創(chuàng)建數(shù)據(jù)透視表。6.4.5透視表與交叉表最后,設(shè)列A和B作為行分組鍵,通過列D和列E的平均值進(jìn)行聚合。6.4.5透視表與交叉表2.交叉表交叉表是一種特殊的透視表,主要用于計(jì)算分組頻率。pandas.crosstab函數(shù)可以用于制作交叉表,該函數(shù)的參數(shù)和使用格式如下。pandas.crosstab(index,columns,values=None,rownames=None,colnames=None,aggfunc=None,margins=False,margins_name='All',dropna=True,normalize=False)[例6-41]使用crosstab創(chuàng)建交叉表。6.4.5透視表與交叉表6.4.5透視表與交叉表首先,設(shè)列A作為行分組鍵,列B作為列分組鍵,創(chuàng)建交叉表。然后設(shè)列A作為行分組鍵,列B作為列分組鍵,用列C的平均值創(chuàng)建交叉表。[例6-41]使用crosstab創(chuàng)建交叉表。6.4.5透視表與交叉表可以使用normalize參數(shù)對(duì)頻率表進(jìn)行規(guī)范化,以顯示百分比,而不是計(jì)數(shù)。另外,還可以將margins參數(shù)設(shè)置為True,則可以打開匯總(Total)功能。[例6-41]使用crosstab創(chuàng)建交叉表。本章實(shí)踐例題本章實(shí)踐例題[例6-42]DataFrame創(chuàng)建實(shí)例。本章實(shí)踐例題[例6-43]Pandas文件讀寫實(shí)例。本章實(shí)踐例題[例6-44]天氣信息文件temp.xlsx中存放著某城市最近一周(從周一到周日)的每天最高和最低氣溫(單位為攝氏度)。每行中,第一列為序號(hào),代表周幾,第二列為當(dāng)天最高氣溫maxTemp,第三列為當(dāng)天最低氣溫minTemp。求:1、增加一列,存放每天的平均氣溫;2、求出本周溫度的平均值;3、這一周中第幾天最熱(按最高氣溫計(jì)算),最高多少度?這一周中第幾天最冷(按最低氣溫計(jì)算),最冷多少度?本章實(shí)踐例題[例6-45]
泰坦尼克號(hào)乘客生還數(shù)據(jù)的分析實(shí)例。利用DataFrame對(duì)Titanic號(hào)乘客的生還數(shù)據(jù)進(jìn)行預(yù)處理和初步分析。本章實(shí)踐例題[例6-46]讀入data目錄下的tips.csv文件,放到一個(gè)DataFrame結(jié)構(gòu)df1中。查看tips數(shù)據(jù)的相關(guān)信息,并按是否吸煙、性別等字段分組統(tǒng)計(jì)相關(guān)信息
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租客合同終止租房協(xié)議
- 技術(shù)開發(fā)與轉(zhuǎn)讓合同保密范本
- 智能化系統(tǒng)供貨安裝合同樣本
- 礦山企業(yè)輪換工勞動(dòng)合同模板及示例
- 農(nóng)村土地出租權(quán)屬合同樣本
- 標(biāo)準(zhǔn)貨物銷售合同簡(jiǎn)版
- 城市配送服務(wù)合同一覽
- 小學(xué)生種花演講課件
- 影視設(shè)備行業(yè)交流服務(wù)批發(fā)考核試卷
- 廣播電視節(jié)目的心理影響與教育意義考核試卷
- 2024年江蘇省衛(wèi)生健康委員會(huì)所屬事業(yè)單位招聘筆試真題
- 廉潔知識(shí)培訓(xùn)課件
- 分布式光伏發(fā)電開發(fā)建設(shè)管理辦法2025
- 《科幻小說賞析與寫作》 課件 -第六章 “外星文明”的善意與惡行-《安德的游戲》
- 《我國的文化安全》課件
- 2025蛇年一上英語寒假作業(yè)
- 建筑行業(yè)新員工試用期考核制度
- 二年級(jí)經(jīng)典誦讀社團(tuán)計(jì)劃
- 潔凈室施工組織設(shè)計(jì)方案
- 2025年太倉市文化旅游發(fā)展集團(tuán)限公司及子公司公開招聘12名高頻重點(diǎn)提升(共500題)附帶答案詳解
- 機(jī)械制圖題庫及答案
評(píng)論
0/150
提交評(píng)論