版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章Pandas基礎(chǔ)與應(yīng)用主講人:***15-10月-23Python數(shù)據(jù)分析與數(shù)據(jù)挖掘目錄contentsPandas中的數(shù)據(jù)結(jié)構(gòu)0102Pandas簡介0304數(shù)據(jù)運算與分析Pandas中數(shù)據(jù)的基本操作Pandas簡介016.1.1主要特性Pandas是Python中的一個高效易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析的第三方庫。Pandas是Python中數(shù)據(jù)分析的基礎(chǔ),旨在成為最實用最便利的開源數(shù)據(jù)分析的工具。其主要特性如下:善于處理浮點數(shù)和非浮點數(shù)的數(shù)據(jù)缺失(用NaN來表示);大小可變:數(shù)據(jù)的行列能夠從DataFrame或者更高維度的數(shù)據(jù)結(jié)構(gòu)中添加或者刪除;自動數(shù)據(jù)對齊:目標(biāo)會被顯式地根據(jù)標(biāo)簽對齊,使用者也可以忽略標(biāo)簽,直接利用DataFrame、Series來自動對齊;功能強大,靈活的分組功能,可對數(shù)據(jù)執(zhí)行拆分-應(yīng)用-組合的一系列操作,以便聚合和轉(zhuǎn)換數(shù)據(jù);可以很方便地把其他Python和NumPy的雜亂的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成DataFrame對象;6.1.1主要特性基于智能標(biāo)簽的切片、花式索引和子集化大數(shù)據(jù)集;直觀的合并和連接數(shù)據(jù)集;靈活的重塑(reshape)和數(shù)據(jù)集的旋轉(zhuǎn);軸的分層標(biāo)簽(每個標(biāo)記可能有多個標(biāo)簽);強大的IO工具,用于從原始文件(CSV)、Excel文件、數(shù)據(jù)庫中加載數(shù)據(jù),以及從超快速HDF5格式保存/加載數(shù)據(jù);
時間序列-特定功能:日期范圍生成和頻率轉(zhuǎn)換、移動窗口統(tǒ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ù)組的對象,它由一組數(shù)據(jù)以及一組與之相對應(yīng)的數(shù)據(jù)標(biāo)簽(即索引)組成。創(chuàng)建Series的語法為:s=pd.Series(data,index=index)其中:data可以是一維數(shù)組、列表和字典,還可以是一個標(biāo)量;index參數(shù)是與之對應(yīng)的行的索引,可依實際情況進(jìn)行指定或默認(rèn)。[例6-1]使用標(biāo)量創(chuàng)建Series:index參數(shù)必須設(shè)置,如未設(shè)置index,默認(rèn)狀態(tài)時生成只有一組數(shù)據(jù)(1個data和一個索引)的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)索引個數(shù)大于data個數(shù)時,會用NaN自動補全[例6-4]字典創(chuàng)建Series:當(dāng)index默認(rèn)時,會自動以字典的key作為索引,并按照排序后排列6.2.1
Series數(shù)據(jù)結(jié)構(gòu)
Series操作
對于Series對象的使用,主要取決于其創(chuàng)建對象的相關(guān)操作。由于數(shù)組和字典都可以用來創(chuàng)建Series,所以Series除了具備基本屬性外,還適用數(shù)組、字典的相關(guān)操作。Series支持許多數(shù)組類型的操作。如:索引、切片等,以及許多NumPy的函數(shù)也適用于Series,其返回值仍是Series[例6-5]顯示Series對象的屬性。Series的常用屬性包括values和index,還有name和屬性。[例6-6]Series支持?jǐn)?shù)組類型的操作。如:索引、切片等。6.2.1
Series數(shù)據(jù)結(jié)構(gòu)
Series還適用于字典的基本操作,如in()和get()。in()用來查看Series中是否有某個標(biāo)記,返回值為true或false;get()來索引不存在的標(biāo)記,返回值為Nan。[例6-7]Series支持的字典操作。(其中s為例6-6中創(chuàng)建的Series對象) Series還支持一些向量化操作。如兩個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是一個結(jié)構(gòu)類似于二維數(shù)組或表格的數(shù)據(jù)類型,可以看作一張表格,它含有一組有序的列,每一列的數(shù)據(jù)類型都是一致的。DataFrame類對象由索引和數(shù)據(jù)組成,與Series類對象相比,該對象有兩組索引,分別是行索引(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)自動分配列索引和行索引
列表類型是字典時,一般不需另外指定列的索引,會自動采用字典的key豎向作為列索引,并排序后輸出,但支持指定行索引。注意:字典值的長度必須相同,否則會報錯。[例6-11]傳入列表類型的字典構(gòu)建DataFrame。6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu)
DataFrame的常用屬性包括values、index、columns、dtypes、size、ndim和shape等,分別可以顯示DataFrame的數(shù)據(jù)、索引、列名、類型、元素個數(shù)、維度和形狀等,如表6-1所示。6.2.2DataFrame數(shù)據(jù)結(jié)構(gòu)
表6-1DataFrame的常用屬性[例6-12]輸出上例中DataFrame對象的屬性。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ù)的選擇取決于要讀取文件的格式,在實際操作中可以tab鍵補全函數(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)出存儲與讀取類似,可以使用DataFrame的.to_xxx()函數(shù)將Dataframe對象數(shù)據(jù)保存到各種格式的文件中。結(jié)構(gòu)化數(shù)據(jù)可以通過to_csv函數(shù)以csv文件格式存儲,to_excel函數(shù)可以將數(shù)據(jù)存儲為Excel文件格式。[例6-16]將df數(shù)據(jù)保存為csv文件,使用逗號作為分隔符。6.3.2數(shù)據(jù)的選取
首先創(chuàng)建一個DataFrame對象df1,然后介紹相關(guān)數(shù)據(jù)的查看與選取方法。[例6-17]創(chuàng)建一個DataFrame對象。1.基本選取方式1)按列選取數(shù)據(jù)DataFrame的列數(shù)據(jù)為一個Series。可根據(jù)字典訪問key值的方式使用對應(yīng)的列名或列名的列表,實現(xiàn)單列或多列數(shù)據(jù)的訪問,或者以屬性的方式實現(xiàn)單列數(shù)據(jù)的訪問,例如df.A。[例6-18]按列選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取1.基本選取方式2)按行選取數(shù)據(jù)訪問DataFrame某幾行數(shù)據(jù)可以使用[:]實現(xiàn)。也可以使用head和tail函數(shù)得到多行數(shù)據(jù),默認(rèn)獲得開始或末尾的連續(xù)5行數(shù)據(jù),可以在函數(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中某一列的某幾行時,單獨一列的DataFrame可以看作一個Series,而訪問一個Series基本和訪問一個一維的ndarray相同。選取DataFrame多列數(shù)據(jù)時,可以將多個列索引名作為一個列表。同時訪問DataFrame多列數(shù)據(jù)中的多行數(shù)據(jù)與訪問單列數(shù)據(jù)的多行數(shù)據(jù)方法基本相同。[例6-20]按行和列選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取1.基本選取方式4)布爾運算選取數(shù)據(jù)可以對DataFrame中的數(shù)據(jù)根據(jù)布爾運算進(jìn)行選取,常用的布爾運算符包括大于(>)、小于(<)、不等于(!=)等。[例6-21]布爾運算選取DataFrame的數(shù)據(jù)。6.3.2數(shù)據(jù)的選取2. loc及iloc選取方式可以使用Pandas提供的loc和iloc方法對DataFrame進(jìn)行切片訪問。loc方法使用索引名稱對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)行切片選取,實例代碼為:2. loc及iloc選取方式6.3.2數(shù)據(jù)的選取[例6-23]使用iloc方法進(jìn)行切片選取,實例代碼為:[例6-24]DataFrame中增加數(shù)據(jù)。6.3.3數(shù)據(jù)的編輯1.增加數(shù)據(jù)可以通過給新列直接賦值來為DataFrame增加新列。默認(rèn)狀態(tài)下,新增加的列將排在原對象的后面,也可以使用insert()方法,將列添加到指定位置。用法為:df1.insert(iloc,column,value),其中,第一個參數(shù)是增加列的位置,第二個參數(shù)是增加列的索引,第三個位置是增加列的內(nèi)容。[例6-25]通過append()方法傳入字典結(jié)構(gòu)數(shù)據(jù)來增加數(shù)據(jù)。請注意,默認(rèn)append不改變原數(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ù)指定要刪除的是行還是列,默認(rèn)不改變原數(shù)據(jù),若要在原數(shù)據(jù)中刪除,需要設(shè)置參數(shù)inplace=True。[例6-27]修改DataFrame中的數(shù)據(jù)。6.3.3數(shù)據(jù)的編輯3.修改數(shù)據(jù)對選定的數(shù)據(jù)直接賦值即可修改數(shù)據(jù),數(shù)據(jù)的修改操作無法撤銷,且是在原數(shù)據(jù)上直接修改,因此需要實現(xiàn)做好數(shù)據(jù)的備份。6.3.4數(shù)據(jù)的合并1.merge()函數(shù)操作類似于sql里面的join,實現(xiàn)將2個DataFrame根據(jù)一些共有的列連接起來,內(nèi)含多個參數(shù),具體參數(shù)說明見下表。參數(shù)說明left參與合并的左側(cè)的DataFrameright參與合并的右側(cè)的DataFramehow連接方式:‘inner’(默認(rèn)),‘outer’,‘left’,‘right’on用于連接的列名,必須同時存在于左右兩個DataFrame對象中,若干未指定,則left和right的列名交集作為連接鍵。left_on左側(cè)DataFrame中用作連接鍵的列right_on右側(cè)DataFrame中用作連接鍵的列l(wèi)eft_index將左側(cè)的行索引用作其連接鍵right_index將右側(cè)的行索引用作其連接鍵sort根據(jù)連接鍵對合并后的數(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ù)—實例初始化兩個DataFrame對象:left=right=[例6-28]默認(rèn)狀態(tài):DataFrame合并時會以列名的交集作為連接鍵。若連接列中含有多個相同的值,則采用笛卡爾積的形式進(jìn)行連接。設(shè)置how參數(shù):設(shè)置連接時的方式,默認(rèn)狀態(tài)下是inner。當(dāng)how取值outer時,會采用并集式合并,缺項以NaN補齊。6.3.4數(shù)據(jù)的合并
當(dāng)DataFrame的列交集不止一項時,可以通過參數(shù)on來指定連接鍵,可一個,也可多個。如果合并的DataFrame中還有相同的列索引,可以設(shè)置suffixes參數(shù),實現(xiàn)對列名的區(qū)分。[例6-29]使用merge函數(shù)并設(shè)置suffixes參數(shù),連接DataFrame對象。6.3.4數(shù)據(jù)的合并merge()函數(shù)—實例2.concat()函數(shù)
主要實現(xiàn)一些簡單的行合并和列合并的操作,其內(nèi)含多個參數(shù),具體見下表。參數(shù)說明objs參與連接的列表或字典,且列表或字典里的對象是Pandas數(shù)據(jù)類型,唯一必須給定的參數(shù)axis=0指明連接的軸向,0是縱軸,1是橫軸,默認(rèn)是0join‘inter’(交集),‘outer’(并集),默認(rèn)是‘outer’join_axis指明用于其他n-1條軸的索引,不執(zhí)行交并集keys與連接對象有關(guān)的值,可以是任意值的列表、元組或數(shù)組levels指定用作層次化索引各級別上的索引,如果設(shè)置keys的話names用于創(chuàng)建分層級別的名稱,如果設(shè)置keys或levels的話verify_integrity檢查結(jié)果對象新軸上的重復(fù)情況,默認(rèn)值為false,允許重復(fù)ignore_index不保留連接軸上的索引,產(chǎn)生一組新索引range(total_length)6.3.4數(shù)據(jù)的合并concat()函數(shù)—實例初始化三個DataFrame對象:df1=df2=[例6-30]設(shè)置參數(shù)axis:axis=0時,縱向合并;axis=1時,橫向合并。設(shè)置ignore_index參數(shù):合并時是否保留原來的索引;默認(rèn)狀態(tài)下,合并后的索引不改變。df3=6.3.4數(shù)據(jù)的合并初始化兩個DataFrame對象:df1=df2=[例6-31]設(shè)置join參數(shù):當(dāng)join參數(shù)設(shè)置為outer,按并集方法合并,缺少的部分填充NaN。當(dāng)join參數(shù)設(shè)置為inner時,以交集方式合并,即只合并公共的部分6.3.4數(shù)據(jù)的合并concat()函數(shù)—實例數(shù)據(jù)運算與分析046.4.1算術(shù)和比較運算Pandas為Series和DataFrame提供了許多算術(shù)運算的方法,算術(shù)規(guī)則是根據(jù)行列索引補齊后進(jìn)行運算,運算結(jié)果默認(rèn)為浮點型,補齊時缺項填充為NaN。初始化兩個DataFrame對象:a:b:[例6-32]DataFrame對象的算術(shù)運算。四則運算時:返回一個新的對象,也可以采用相關(guān)方法,實現(xiàn)相似的效果,分別是:.add(d,**argws).sub(d,**argws).mul(d,**argws).div(d,**argws)6.4.1算術(shù)和比較運算a:b:[例6-33]DataFrame對象的比較運算。比較運算:只能比較相同索引的元素,而且不進(jìn)行補齊操作,返回一個布爾型的對象。常見的比較運算有:‘>’,‘<’,‘>=’,‘<=’,‘==’,‘!=’等。初始化兩個DataFrame對象: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實現(xiàn)對行索引和列索引的排序,一般默認(rèn)順序排列。
當(dāng)axis=1時,實現(xiàn)對列索引的排序;
當(dāng)axis=0時,實現(xiàn)對行索引的排序。[例6-34]DataFrame對象的數(shù)據(jù)排序。6.4.2數(shù)據(jù)排序
依據(jù)數(shù)值排序:使用的方法是sort_values(by,axis=0,ascending=True),其中默認(rèn)順序排列,by是axis軸上的某個索引或者索引列表。此外,若含有空值時,統(tǒng)一排序到末尾。
6.4.3統(tǒng)計分析 Pandas提供的Series和DataFrame兩種數(shù)組類型還支持各種統(tǒng)計分析的操作?;镜慕y(tǒng)計分析函數(shù)一般均適用于以上兩種數(shù)據(jù)類型。常見的基本統(tǒng)計函數(shù)如下表。方法說明.sum()計算數(shù)據(jù)的總和,按0軸計算,下同.count()非NaN值得數(shù)量.mean().median()計算數(shù)據(jù)的算術(shù)平均值、算術(shù)中位數(shù).var().std()計算數(shù)據(jù)的方差、標(biāo)準(zhǔn)差.min().max()計算數(shù)據(jù)的最小值、最大值.argmin().argmax()計算數(shù)據(jù)最大、最小值所在位置的索引位置(自定義所用),僅Series可用.idxmin().idxmax()計算數(shù)據(jù)最大、最小值所在位置的索引(自定義所用),僅Series可用.describe()針對各列的統(tǒng)計匯總6.4.3統(tǒng)計分析[例6-35]讀入小費文件tips.csv,使用DataFrame對象的基本統(tǒng)計分析方法了解數(shù)據(jù)信息。6.4.3統(tǒng)計分析describe()方法返回的結(jié)果包括各列的元素個數(shù)、均值、標(biāo)準(zhǔn)差、最小值、四分之一分位點、中位數(shù)、四分之三分位點和最大值。corr()方法可以返回數(shù)值列或指定兩個數(shù)值列之間的相關(guān)系數(shù)。6.4.3統(tǒng)計分析
對于Pandas數(shù)據(jù),由于其類似表格的特性,還支持許多累計統(tǒng)計的分析,為數(shù)據(jù)分析提供了很大的方便,也成Pandas的一大優(yōu)勢。常見的累計統(tǒng)計分析函數(shù)如下表。方法說明.cumsum()依次給出前n個數(shù)的和.cumprod()依次給出前n個數(shù)的積.cummax()依次給出前n個數(shù)的最大值.cummin()依次給出前n個數(shù)的最小值df:首先,構(gòu)建一個DateFrame對象。6.4.3統(tǒng)計分析[例6-36]DataFrame對象的累計函數(shù)。.cumsum()和.cumprod()函數(shù)分別返回一個DataFrame,除第一數(shù)據(jù)外,其余行是前幾行(包括本行)數(shù)據(jù)累加/積的結(jié)果。本例中,df.cumsum()和df.cumprod()的結(jié)果如下:6.4.3統(tǒng)計分析[例6-36]DataFrame對象的累計函數(shù)。.cummax()和.cummin()函數(shù)分別返回一個DataFrame,返回值分別為對應(yīng)列上前幾行數(shù)據(jù)的最大值和最小值。本例中,df.cummax()和df.cummin()的結(jié)果如下:6.4.3統(tǒng)計分析[例6-36]DataFrame對象的累計函數(shù)。此外,Pandas在統(tǒng)計操作中,還支持滾動計算,利用的函數(shù)主要是.rollong(w).sum()等類似函數(shù),其中,w主要是指參與運算的元素數(shù)量,其返回值是一個DataFrame,缺失值以NaN補全,df.rolling(2).sum()的結(jié)果下:6.4.4分組與聚合1.數(shù)據(jù)分組可以使用groupby()根據(jù)索引或字段對數(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ù)分組實例。
groupby分組后的結(jié)果不再是DataFrame類型,而是一個DataFrameGroupBy對象??梢园磫瘟蟹纸M,也可以同時按多個列進(jìn)行分組,如df.groupby(["A","B"])表示按A和B兩列進(jìn)行分組。6.4.4分組與聚合2.數(shù)據(jù)聚合分組后的結(jié)果不能直接查看,可以使用聚合運算對分組后數(shù)據(jù)進(jìn)行計算,并查看可聚合計算后的結(jié)果,常用的數(shù)據(jù)聚合方法如下表所示。6.4.4分組與聚合[例6-38]數(shù)據(jù)聚合實例。6.4.4分組與聚合2.數(shù)據(jù)聚合除了使用pandas提供的數(shù)據(jù)聚合方法,還可以將自定義的聚合函數(shù)傳入agg()或aggregate()方法,實現(xiàn)分組后的數(shù)據(jù)聚合計算。agg()方法可以指定軸上使用一個或多個操作進(jìn)行聚合,支持Python內(nèi)置函數(shù)或自定義的函數(shù)。aggregate()方法對DataFrame對象操作的功能基本相同。6.4.4分組與聚合[例6-39]使用agg()方法聚合數(shù)據(jù),df為上例中定義的DataFrame對象。6.4.5透視表與交叉表1.透視表數(shù)據(jù)透視表是常用的數(shù)據(jù)分析工具之一,它可以根據(jù)一個或多個指定的維度對數(shù)據(jù)進(jìn)行聚合。在python中可以通過pandas.pivot_table函數(shù)來實現(xiàn)數(shù)據(jù)透視表。pandas.pivot_table函數(shù)包含5個主要參數(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.交叉表交叉表是一種特殊的透視表,主要用于計算分組頻率。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ù)對頻率表進(jìn)行規(guī)范化,以顯示百分比,而不是計數(shù)。另外,還可以將margins參數(shù)設(shè)置為True,則可以打開匯總(Total)功能。[例6-41]使用crosstab創(chuàng)建交叉表。本章實踐例題本章實踐例題[例6-42]DataFrame創(chuàng)建實例。本章實踐例題[例6-43]Pandas文件讀寫實例。本章實踐例題[例6-44]天氣信息文件temp.xlsx中存放著某城市最近一周(從周一到周日)的每天最高和最低氣溫(單位為攝氏度)。每行中,第一列為序號,代表周幾,第二列為當(dāng)天最高氣溫maxTemp,第三列為當(dāng)天最低氣溫minTemp。求:1、增加一列,存放每天的平均氣溫;2、求出本周溫度的平均值;3、這一周中第幾天最熱(按最高氣溫計算),最高多少度?這一周中第幾天最冷(按最低氣溫計算),最冷多少度?本章實踐例題[例6-45]
泰坦尼克號乘客生還數(shù)據(jù)的分析實例。利用DataFrame對Titanic號乘客的生還數(shù)據(jù)進(jìn)行預(yù)處理和初步分析。本章實踐例題[例6-46]讀入data目錄下的tips.csv文件,放到一個DataFrame結(jié)構(gòu)df1中。查看tips數(shù)據(jù)的相關(guān)信息,并按是否吸煙、性別等字段分組統(tǒng)計相關(guān)信息,完成對tips數(shù)據(jù)的分析。小結(jié)Pandas是使用Python進(jìn)行數(shù)據(jù)分析非常重要的包。它提供了許多快速強大而又簡單易用的數(shù)據(jù)結(jié)構(gòu)來處理相關(guān)數(shù)據(jù),在數(shù)據(jù)分析中有著廣泛的應(yīng)用。本章結(jié)合實例介紹了Pandas中的常用數(shù)據(jù)結(jié)構(gòu)和常用數(shù)據(jù)分析方法。本章中需要重點掌握的知識點是:Series數(shù)據(jù)類型和DataFrame數(shù)據(jù)類型的使用。小結(jié)本章習(xí)題請先用字典數(shù)據(jù)生成一個DataFrame對象df,數(shù)據(jù)為:{'Name':['Kate','Rose','Tom','John'],'Height':[155,165,170,168],'Weight':[45,50,65,62]}。完成如下數(shù)據(jù)的編輯:(1)用兩種方法,分別往df中加入性別列'gender'和年齡列'age'(數(shù)據(jù)可自定義);(2)往df中加入一行數(shù)據(jù),數(shù)據(jù)為:{'Name':'Lucky','Height':165,'Age':17,'Weight':48,'Gender':'Female'}。本章習(xí)題2. 請先用字典數(shù)據(jù)生成一個DataFrame對象,數(shù)據(jù)為:{'城市':['北京','上海','天津','深圳'],'郵編':['010','021','022','073'],'氣溫':[18,22,19,30]},為其加上行索引'c1','c2','c3','c4'。完成如下數(shù)據(jù)的選取:(1)輸出“氣溫”列;(2)用兩種方法輸出“上海”這一行的數(shù)據(jù);(3)輸出“深圳”的郵編;(4)輸出所有“氣溫”大于20度的城市的“城市名”和“郵編”。本章習(xí)題3. 讀取“simple_score.xlsx”文件,首先過濾其中的異常成績數(shù)據(jù)(小于0、大于100或為空的是異常數(shù)據(jù)),然后統(tǒng)計“成績”字段的描述性信息,除了默認(rèn)的均值、方差等以外,還需統(tǒng)計“總和”、“極差”、“變異系數(shù)”、“四分位數(shù)間距”,并輸出以上統(tǒng)計信息,輸出結(jié)果如下圖所示。本章習(xí)題4. 讀取“scores.xlsx”文件中sheet_name=0的數(shù)據(jù),包括學(xué)生學(xué)號、姓名、性別、及三門課程的考試成績。輸出以下內(nèi)容:文件數(shù)據(jù)總行數(shù),三門課程按性別分組后的平均分;增加一列“總分”,記錄每個同學(xué)三門課程分?jǐn)?shù)的總和,并輸出按總分降序排列結(jié)果中的前5行數(shù)據(jù),輸出結(jié)果如下圖所示。本章習(xí)題5. 讀取小費文件“tips.csv”,先用性別列sex和是否吸煙列smoker分別做行和列的分組鍵,制作透視表,觀察tip列和total_bill列的均值,再以星期列day和時間列time分別做行和列的分組鍵,觀察tip列和total_bill列的均值,輸出結(jié)果如下圖所示。本章習(xí)題第六章Pandas基礎(chǔ)與應(yīng)用謝謝!Python數(shù)據(jù)分析與數(shù)據(jù)挖掘第7章Matplotlib基礎(chǔ)及應(yīng)用主講人:***15-10月-23Python數(shù)據(jù)分析與數(shù)據(jù)挖掘目錄contentsMatplotlib簡介0102Matplotlib基礎(chǔ)知識03Pyplot的使用04Pyplot中的常用圖形Matplotlib簡介017.1.1
Matplotlib主要特性 Matplotlib是一個常用的Python繪圖庫,常與NumPy和Pandas一起結(jié)合使用,它以各種格式和跨平臺的交互環(huán)境生成可達(dá)到印刷質(zhì)量的圖形。Matplotlib可用于Python腳本、Python和IPythonshell、JupyterNotebook、Web應(yīng)用程序服務(wù)器和四個圖形用戶界面工具包。 Matplotlib具有良好的操作系統(tǒng)兼容性和圖形顯示底層接口兼容性,并支持幾十種圖形顯示接口與輸出格式,是Python中繪制二維、三維圖表的重要可視化工具。新版的Matplotlib可以輕松實現(xiàn)主流的繪圖風(fēng)格,其中加入了許多新的程序包,實現(xiàn)了更加簡潔新穎的API,例如Seaborn、ggplot、HoloViews、Altair和Pandas對Matplotlib的API封裝的繪圖功能。其主要特點:使用簡單繪圖語句實現(xiàn)復(fù)雜繪圖效果;以交互式操作實現(xiàn)漸趨精細(xì)的圖形效果;對圖表的組成元素實現(xiàn)精細(xì)化控制;使用嵌入式的LaTeX輸出具有印刷級別的圖表、科學(xué)表達(dá)式和符號文本。7.1.2Matplotlib安裝python-mpipinstall-Upippython-mpipinstall-Umatplotlib
對于Windows、MacOS和普通Linux平臺來說,Anaconda、Canopy和ActiveState都是非常好的選擇。Winpython是Windows用戶的一個選項。這些發(fā)行版中已經(jīng)包含了matplotlib和許多其他有用的(數(shù)據(jù))科學(xué)工具。其安裝語法如下:
使用時,只需將其導(dǎo)入即可:以plt作為Pyplot子模塊的縮寫。importmatplotlibasmplimportmatplotlib.pyplotaspltMatplotlib基礎(chǔ)知識027.2.1導(dǎo)入Matplotlib
我們在作圖前,需要導(dǎo)入matplotlib和其中的模塊(如matplotlib.pyplot)。通常為了方便,設(shè)置一個常用的簡寫形式,本章例子中還需要導(dǎo)入NumPy和Pandas模塊。importmatplotlibasmplimportmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspd7.2.2Matplotlib圖形構(gòu)成
Matplotlib將數(shù)據(jù)繪制在圖形(Figure)上,圖形可以理解為包含其他所有繪圖元素的頂級容器,其中包含所有軸(Axes)、其他Artist和畫布(Canvas)。通常情況下,畫布(Canvas)是一個繪圖的對象,對用戶而言,該對象一般不可見。在圖形上看到的一切都是Artist,Artist有兩種類型,即圖形元素(primitives)和容器(containers)。圖形元素是我們需要加入Canvas的元素,比如線條、矩形、文字等,而容器是放置這些元素的地方,例如Axis、Axes和Figure,其中Figure是頂層的Artist。1、圖形(Figure)[例7-1]使用figure()方法創(chuàng)建新圖形。
軸(Axes)是matplotlibAPI中重要的類,這是因為軸是大多數(shù)對象所在的繪圖區(qū)域。在創(chuàng)建Figure對象之后,在作圖前需要創(chuàng)建軸,軸是繪圖基準(zhǔn),是圖像中帶數(shù)據(jù)空間的區(qū)域。如果將Figure理解為容器,即畫布的載體,則具體的繪圖操作是在畫紙上完成,畫紙可以理解為子圖Subplot或更加靈活的子圖--軸(Axes)。2、軸(Axes)7.2.2Matplotlib圖形構(gòu)成[例7-2]本例首先生成一個空白Figure,然后創(chuàng)建1行2列的子圖,返回子圖的軸對象ax1和ax2。在第1個子圖的軸對象ax1上添加軸線標(biāo)簽X-Axis和Y-Axis,并設(shè)置軸線的數(shù)據(jù)范圍:X為[0,5],Y為[-2,2]。
軸線是類似數(shù)字線的對象,是軸上的刻度。它們負(fù)責(zé)設(shè)置圖形范圍并生成記號(軸上的標(biāo)記)和記號標(biāo)簽(標(biāo)記記號的字符串)。一般情況下,圖中可以包含兩個或三個軸線對象(三維圖),它們負(fù)責(zé)處理數(shù)據(jù)范圍??梢允褂胮lt.axis()或plt.xlim()等函數(shù)設(shè)置軸線范圍,plt.xlabel()或者plt.ylabel()等為軸線命名,同時也可利用tick的相關(guān)方法對軸上的刻度進(jìn)行修改。3、軸線(Axis)7.2.2Matplotlib圖形構(gòu)成[例7-3]設(shè)置軸線實例。圖Figure、Axes和Axis的關(guān)系
圖例是展現(xiàn)圖表中數(shù)據(jù)組列表并通過提供線索(線條樣式或顏色)來讓數(shù)據(jù)組更易于識別。圖例的設(shè)置與修改是通過調(diào)用legend()來實現(xiàn)。4、圖例(legend)5、標(biāo)題(title)
標(biāo)題是對整個圖標(biāo)的說明,方便對整個圖表含義的理解,通過調(diào)用plt.title()方法來實現(xiàn)對title內(nèi)容的設(shè)置。6、網(wǎng)格(Grid)
有時需要在圖形中添加網(wǎng)格,網(wǎng)格線方便看到圖表中每個元素的精確值,而且也方便執(zhí)行單點之間的對比。但是網(wǎng)格也會增加噪聲,讓看到實際的數(shù)據(jù)流變得困難。一般情況下,默認(rèn)狀態(tài)下無網(wǎng)格線,可以通過調(diào)用grid()方法實現(xiàn)。7.2.2Matplotlib圖形構(gòu)成7、圖形主體內(nèi)容
圖形的主體內(nèi)容是一張圖的核心,對于二維圖表而言,圖形的主體內(nèi)容可以是點,也可以是線條等。對應(yīng)的方法分別是點(scatter、plot)、線(line、plot)等。7.2.2Matplotlib圖形構(gòu)成[例7-4]添加了網(wǎng)格、圖例的繪圖實例。 Matplotlib默認(rèn)狀態(tài)下無法顯示中文,在前面的許多例子中各種標(biāo)題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進(jìn)行操作。方法一:借助rcParams修改字體實現(xiàn)設(shè)置
其中,rcParams[‘font.family’]的種類也可以設(shè)置多種。屬性說明‘font.family’用于顯示字體的名字‘font.style’字體風(fēng)格,正?!畁ormal’或斜體‘italic’‘font.size’字體大小,整數(shù)字號或者‘large’、‘x‐small’rcParams的屬性7.2.3Matplotlib中設(shè)置中文中文字體種類 Matplotlib默認(rèn)狀態(tài)下無法顯示中文,在前面的許多例子中各種標(biāo)題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進(jìn)行操作。方法一:借助rcParams修改字體實現(xiàn)設(shè)置7.2.3Matplotlib中設(shè)置中文
可以用下列語句查看matplotlib中默認(rèn)已經(jīng)識別到的所有可用字體和對應(yīng)的文件名,其中部分輸出的為字體名稱,font.fname部分輸出字體文件的路徑和文件名。importmatplotlib.pyplotaspltfrommatplotlibimportfont_managerforfontinfont_manager.fontManager.ttflist:#查看字體名以及對應(yīng)的字體文件名print(,'--',font.fname)輸出的“KaiTi--C:\Windows\Fonts\simkai.ttf”中,“KaiTi”為字體名,“C:\Windows\Fonts\simkai.ttf”為對應(yīng)的字體文件。則可以用如下語句來使用該字體,如下所示:plt.rcParams['font.family']='KaiTi'plt.text(0.5,0.5,'楷體',ha='center',fontsize=50) Matplotlib默認(rèn)狀態(tài)下無法顯示中文,在前面的許多例子中各種標(biāo)題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進(jìn)行操作。方法一:借助rcParams修改字體實現(xiàn)設(shè)置7.2.3Matplotlib中設(shè)置中文[例7-5]中文顯示方法一。 Matplotlib默認(rèn)狀態(tài)下無法顯示中文,在前面的許多例子中各種標(biāo)題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進(jìn)行操作。方法二:在有中文輸出的地方,增加一個fontproperties屬性。7.2.3Matplotlib中設(shè)置中文[例7-6]中文顯示方法二。Pyplot使用037.3.1plt.plot()的使用
在Matplotlib模塊中,Pyplot是一個核心的子模塊,通過該子模塊,我們可以完成很多基本的可視化操作。子模塊的導(dǎo)入如下:importmatplotlib.pyplotasplt
其中,以plt作為Pyplot子模塊的縮寫 Pyplot繪圖的主要功能是繪制x,y的坐標(biāo)圖,在完成繪圖后一般情況下是不會自動顯示圖表的,需要調(diào)用plt.show()方法顯示。當(dāng)plt.plot()中只有一個輸入列表或者數(shù)組時,參數(shù)會被當(dāng)作Y坐標(biāo)數(shù)據(jù),而X的坐標(biāo)列表自動生成索引,默認(rèn)為[0,1,2,3,…]。1、基本使用使用plt.plot()繪制的主要是線圖,其語法格式為:plt.plot(x,y,
format_string,
**kwargs)其中:必要的參數(shù)是x坐標(biāo)列表和y坐標(biāo)列表。當(dāng)plt.plot(x,y)中用2個以上參數(shù)時,則會按照x軸和y軸順序繪制數(shù)據(jù)點。7.3.1plt.plot()的使用[例7-7]plt.plot()繪制實例。plt.plot()還有數(shù)十個可選參數(shù)來設(shè)置繪圖特征,但常用的有幾個特征,分別是: color:設(shè)置線條顏色,默認(rèn)為藍(lán)色。 linewidthorlw:設(shè)置線條寬度,默認(rèn)為1.0。 linestyleorls:設(shè)置線條樣式,默認(rèn)為實線。 labels:設(shè)置圖形名稱,一般搭配legend屬性使用。 marker:設(shè)置數(shù)據(jù)點的符號,默認(rèn)為點。字符顏色字符顏色‘b’藍(lán)色‘g’綠色‘r’紅色‘c’青色‘m’品紅色‘y’黃色‘k’黑色‘w’白色字符線條樣式‘-’實線‘--’虛線‘-.’點劃線‘:’點線字符標(biāo)記類型字符標(biāo)記類型‘?!c‘,’像素‘o’圓圈‘v’下三角1‘^’上三角1‘<’左三角1‘>’右三角1‘1’下三角2‘2’上三角2‘3’左三角2‘4’右三角2‘s’正方形‘p’五角形‘*’星號‘h’六邊形樣式1‘H’六邊形樣式2‘+’加號‘x’X‘D’鉆石‘d’薄鉆石‘|’垂直線‘_’水平線7.3.1plt.plot()的使用1、基本使用Matplotlib的顏色Matplotlib的線條樣式Matplotlib標(biāo)記1、基本使用—參數(shù)設(shè)置實例7.3.1plt.plot()的使用[例7-8]設(shè)置plot繪圖特征實例。2、添加內(nèi)容
圖表主體內(nèi)容設(shè)置結(jié)束后,還可以設(shè)置或添加文本內(nèi)容。具體的添加內(nèi)容與所調(diào)用的函數(shù)具體見表。函數(shù)名稱函數(shù)作用plt.title()在當(dāng)前圖形中添加標(biāo)題,可以指定標(biāo)題的名稱、位置、顏色、字體大小等參數(shù)。plt.xlabel()在當(dāng)前圖形中添加x軸名稱,可以指定位置、顏色、字體大小等參數(shù)plt.ylabel()在當(dāng)前圖形中添加y軸名稱,可以指定位置、顏色、字體大小等參數(shù)plt.xlim()指定當(dāng)前圖形x軸的范圍,只能確定一個數(shù)值區(qū)間,而無法使用字符串標(biāo)識。plt.ylim()指定當(dāng)前圖形y軸的范圍,只能確定一個數(shù)值區(qū)間,而無法使用字符串標(biāo)識。plt.xticks()指定x軸刻度的數(shù)目與取值。plt.yticks()指定y軸刻度的數(shù)目與取值。plt.legend()指定當(dāng)前圖形的圖例,可以指定圖例的大小、位置、標(biāo)簽7.3.1plt.plot()的使用常用添加畫布內(nèi)容的函數(shù)說明2、添加內(nèi)容—實例7.3.1plt.plot()的使用[例7-9]設(shè)置plot繪圖文本。2、添加內(nèi)容—實例7.3.1plt.plot()的使用[例7-10]為圖形添加注釋。代碼中的plt.annotate()函數(shù)有多個參數(shù)plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)3、圖形的保存7.3.1plt.plot()的使用
圖形繪制完成后,可以使用plt.show()進(jìn)行顯示,也可以使用plt.savefig()將其保存,在該函數(shù)中可以設(shè)置保存路徑和文件名、圖片的分辨率、邊緣的顏色等參數(shù)。如果既要顯示又要保存,請注意要將plt.savefig()放在plt.show()之前。否則,在plt.show()后實際上已經(jīng)創(chuàng)建了一個新的空白的圖片,此時再用plt.savefig()就會保存這個生成的空白圖片。[例7-11]保存圖片。plt.savefig()函數(shù)中主要參數(shù)含義為:fname:含有文件路徑的字符串,拓展名指定文件類型,如'png'、'pdf'、’svg'、'ps'、'jpg'等;dpi:分辨率,默認(rèn)100;facecolor:圖像的表面顏色,默認(rèn)為“auto”;bbox_inches:圖表需要保留的部分,如果設(shè)置為“tight”,則將嘗試剪除圖像周圍的空白部分。7.3.2子圖
在Matplotlib中,不僅可以在一張圖形中繪制多條曲線,還可以將一張圖分成多個子圖進(jìn)行繪制。plt的subplot()方法參數(shù)可以是一個三位數(shù)字,例如121,也可以是一個數(shù)組,如[1,2,1]。其中第一個數(shù)字代表子圖總行數(shù),第二個數(shù)字代表子圖總列數(shù),第三個數(shù)字表示對應(yīng)圖像顯示的繪圖區(qū)域數(shù)?!窘忉屨f明】:以plt.subplot(2,2,1)為例,它是指將繪圖區(qū)域分為2行2列4個區(qū)域,并在第一個區(qū)域內(nèi)作圖,其他同上。1. 使用matplotlib.pyplot.subplot()進(jìn)行設(shè)置子圖[例7-12]用plt的subplot()繪制子圖。
subplot()方法也可以設(shè)置不同大小的繪圖區(qū)域。【解釋說明】:對于第一圖而言,它是在2行1列的區(qū)域內(nèi)作圖,當(dāng)設(shè)置后續(xù)三張圖的位置時,從編號4開始,暗示圖一占據(jù)3列的寬度。7.3.2子圖1. 使用matplotlib.pyplot.subplot()進(jìn)行設(shè)置子圖[例7-13]使用subplot()設(shè)置不同大小的繪圖區(qū)域。7.3.2子圖
實際使用中可能會面臨更復(fù)雜的繪圖分隔區(qū)域,subplot()方法就不能很好地滿足需要,此時需要借助subplot2grid()方法。語法如下: plt.subplot2grid(GridSpec,CurSpec,colspan=num1,rowspan=num2)2. 使用matplotlib.pyplot.subplot2grid()設(shè)置復(fù)雜的繪圖分隔區(qū)域【解釋說明】:創(chuàng)建第1個小圖,(3,3)表示將整個圖像窗口分成3行3列,(0,0)表示從第0行第0列開始作圖,colspan=3表示列的跨度為3,行的跨度為缺省,默認(rèn)跨度為1;創(chuàng)建第2個小圖,(3,3)表示將整個圖像窗口分成3行3列,(1,0)表示從第1行第0列開始作圖,colspan=2表示列的跨度為2。后續(xù)子圖同理。注意:可以使用subplots_adjust()調(diào)整子圖間的間距。7.3.2子圖2. 使用matplotlib.pyplot.subplot2grid()設(shè)置復(fù)雜的繪圖分隔區(qū)域[例7-14]設(shè)置復(fù)雜的繪圖分隔區(qū)域。7.3.2子圖3. 使用matplotlib.pyplot.subplots()函數(shù)來設(shè)置子圖
subplots()函數(shù),返回一個包含figure和axes對象的元組。因此,通常使用fig,ax=plt.subplots()將元組分解為fig和ax兩個變量。如果創(chuàng)建了多個子圖,則ax可以是一個Axes對象的數(shù)組。
例如,fig,ax=plt.subplots(m,n,figsize=(a,b))設(shè)置了m*n個大小為a*b的子圖,fig為圖像對象,ax為大小為m*n的axes數(shù)組。7.3.2子圖3. 使用matplotlib.pyplot.subplots()函數(shù)來設(shè)置子圖[例7-15]用subplots()函數(shù)設(shè)置子圖。7.3.2子圖4. 使用matplotlib.figure.Figure.add_subplot()來設(shè)置子圖
add_subplot()的參數(shù)與plt的subplot()類似,可以是一個三位數(shù)字,例如121,也可以是一個數(shù)組,如[1,2,1]。其中第一個數(shù)字代表子圖總行數(shù),第二個數(shù)字代表子圖總列數(shù),第三個數(shù)字表示對應(yīng)圖像顯示的繪圖區(qū)域數(shù)。7.3.2子圖[例7-16]使用figure的add_subplot()設(shè)置子圖并標(biāo)號。4. 使用matplotlib.figure.Figure.add_subplot()來設(shè)置子圖7.3.2子圖[例7-17]使用figure的add_subplot()設(shè)置子圖。4. 使用matplotlib.figure.Figure.add_subplot()來設(shè)置子圖Pyplot中的常用圖形047.4Pyplot中的常用圖形
Matplotlib中提供了許多繪制圖形的函數(shù),包括簡單的基礎(chǔ)統(tǒng)計圖形,如直方圖、氣泡圖、箱線圖等,也有一些高維度的立體圖形,如3D圖等。下表給出Pyplot常用的基礎(chǔ)圖像繪制函數(shù)。函數(shù)說明Plt.plot(x,y,fmt,…)繪制作表態(tài)Plt.boxplot(data,notch,position)繪制箱型圖Plt.bar(left,height,width,bottom)繪制條形圖Plt.barh(width,bottom,left,height)繪制一個橫向條形圖Plt.polar(theta,r)繪制極坐標(biāo)圖Plt.pie(data,explode)繪制餅圖Plt.psd(x,NFFT=256,pad_to,Fs)繪制功率譜密度圖Plt.specgarm(x,NFFT=256,pad_to,Fs)繪制譜圖Plt.cohere(x,y,NFFT=256,Fs)繪制X-Y的相關(guān)性圖Plt.scatter(x,y)繪制散點圖,其中x和y長度相同Plt.step(x,y,where)繪制步階圖Plt.hist(x,bins,normed)繪制直方圖Plt.contour(X,Y,Z,N)繪制等制圖Plt.vlines()繪制垂直圖Plt.stem(x,y,linefmt,markerfmt)繪制柴火圖Plt.plot_date()繪制數(shù)據(jù)日期7.4.1散點圖
散點圖的繪制依賴plt.scatter()函數(shù),該函數(shù)包含很多參數(shù),具體如下:S:點的大小C:點的顏色,取值可以為[‘b’,‘c’,‘g’,‘k’,‘m’,‘r’,‘w’,‘y’]Alpha:點的透明度,取值為0-1Marker:點的形狀,默認(rèn)狀態(tài)下為“o”,常見的還有[‘v’,‘>’,‘<’,‘*’,‘s’,‘p’,‘h’,‘x’,‘+’]。[例7-18]不設(shè)置參數(shù)繪制散點圖。1、不設(shè)置任何參數(shù)時調(diào)用7.4.1散點圖[例7-19]設(shè)置部分參數(shù)繪制散點圖。2、設(shè)置部分的參數(shù),優(yōu)化圖表7.4.1散點圖7.4.2柱狀圖
柱狀圖主要用于查看各分組數(shù)據(jù)的數(shù)量分布,以及各個分組數(shù)據(jù)之間的數(shù)量比較。
柱狀圖的繪制使用:
plt.bar(x,height,width,bottom=None,*,align='center',data=None,**kwargs)7.4.2柱狀圖[例7-20]繪制簡單柱狀圖。如果把例子中的plt.bar()改為plt.barh(),其他參數(shù)不變,即可以繪制如右圖的水平柱狀圖。7.4.2柱狀圖[例7-21]柱狀圖頂部添加數(shù)據(jù)說明。本例中在柱狀圖頂部添加上具體的數(shù)據(jù)說明。7.4.3直方圖
直方圖的繪制依賴plt.hist(x,bins=bins,color=”b”,histtype=’bar’,label=’label’,rwidth=rwidth)函數(shù),具體各參數(shù)說明如下: x:連續(xù)型數(shù)據(jù)的輸入值bins:用于確定柱體的個數(shù)或是柱體邊緣范圍color:柱體的顏色histtype:柱體類型label:圖例內(nèi)容rwidth:柱體寬度[例7-22]繪制簡單直方圖。7.4.3直方圖[例7-23]繪制堆積直方圖。當(dāng)參數(shù)stacked設(shè)置為False時,也是默認(rèn)狀態(tài),則繪制并排放置的直方圖。7.4.4餅圖
餅圖的繪制依賴plt.pie(size,explode,labels,autopct,startangle,shadow,color)函數(shù),具體各參數(shù)說明如下:size:各部分的百分比;explode:餅片邊緣偏離半徑的百分比,凸出率;labels:每部分餅片的文本標(biāo)簽;autopct:每部分餅片對應(yīng)數(shù)值的百分比樣式;startangle:第一個餅片逆時針旋
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育訓(xùn)練效果評估考核試卷
- 儀器儀表精度與可靠性考核試卷
- 2024年智能交通系統(tǒng)建設(shè)合同
- 樂器批發(fā)商的全球化品牌推廣考核試卷
- 外幣衍生品交易的風(fēng)險管理策略考核試卷
- 2024年工程監(jiān)理服務(wù)合同
- 旅游業(yè)服務(wù)合同與信息管理措施
- 植物增長劑項目可行性研究報告
- 精密分切機行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2025年木制相框項目可行性研究報告
- 《聚焦客戶創(chuàng)造價值》課件
- 公安校園安全工作培訓(xùn)課件
- PTW-UNIDOS-E-放射劑量儀中文說明書
- 保險學(xué)(第五版)課件全套 魏華林 第0-18章 緒論、風(fēng)險與保險- 保險市場監(jiān)管、附章:社會保險
- 許小年:淺析日本失去的30年-兼評“資產(chǎn)負(fù)債表衰退”
- 典范英語2b課文電子書
- 17~18世紀(jì)意大利歌劇探析
- β內(nèi)酰胺類抗生素與合理用藥
- 何以中國:公元前2000年的中原圖景
- 第一章:公共政策理論模型
- GB/T 4513.7-2017不定形耐火材料第7部分:預(yù)制件的測定
評論
0/150
提交評論