版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)分析基礎(chǔ)與NumPy數(shù)據(jù)統(tǒng)計(jì)分析與Pandas數(shù)據(jù)可視化與Matplotlib第15章數(shù)據(jù)分析與可視化基礎(chǔ)參考書目《Python程序設(shè)計(jì)》目錄數(shù)據(jù)分析基礎(chǔ)與NumPy數(shù)據(jù)統(tǒng)計(jì)分析與Pandas數(shù)據(jù)可視化與Matplotlib這里說明圖片內(nèi)容用來存儲和處理大型矩陣NumPy提供了大量的庫和標(biāo)準(zhǔn)數(shù)據(jù)模型,以及高效、便捷地處理大型數(shù)據(jù)集所需的函數(shù)和方法PandasMatplotlib繪圖庫數(shù)據(jù)分析基礎(chǔ)與NumPy數(shù)據(jù)統(tǒng)計(jì)分析與Pandas數(shù)據(jù)可視化與Matplotlib目錄這里說明圖片內(nèi)容數(shù)據(jù)分析基礎(chǔ)與NumPy1NumPy概述NumPy:開源的Python科學(xué)計(jì)算庫,包含很多實(shí)用的數(shù)學(xué)函數(shù),涵蓋線性代數(shù)運(yùn)算、傅里葉變換和隨機(jī)數(shù)生成等功能。部分功能如下:1)ndarray:一個(gè)具有矢量算術(shù)運(yùn)算且節(jié)省空間的多維數(shù)組。2)用于對整組數(shù)據(jù)進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)(無須編寫循環(huán))。3)用于讀/寫磁盤數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具。4)線性代數(shù)、隨機(jī)數(shù)生成以及傅里葉變換功能。5)用于集成C、C++、Fortran等語言的代碼編寫工具。數(shù)據(jù)分析基礎(chǔ)與NumPy2NumPy的對象ndarrayNumPy提供了兩種基本對象:ndarray和ufunc。多維數(shù)組對象該對象由兩個(gè)部分組成,即實(shí)際的數(shù)據(jù)和描述這些數(shù)據(jù)的元數(shù)據(jù)。大部分的數(shù)組操作僅僅修改元數(shù)據(jù)部分,而不改變底層的實(shí)際數(shù)據(jù)。ndarray能夠?qū)?shù)組進(jìn)行處理的函數(shù)ufunc數(shù)據(jù)分析基礎(chǔ)與NumPy2NumPy的對象ndarrayndarray對象是用于存放同類型元素的多維數(shù)組。以0下標(biāo)為開始進(jìn)行集合中元素的索引,每個(gè)元素在內(nèi)存中都有相同存儲大小的區(qū)域。ndarray內(nèi)部由以下內(nèi)容組成:指向數(shù)據(jù)的指針數(shù)據(jù)類型表示數(shù)組形狀的元組一個(gè)跨度元組數(shù)據(jù)分析基礎(chǔ)與NumPy2NumPy的對象ndarrayndarray的內(nèi)部結(jié)構(gòu):數(shù)據(jù)分析基礎(chǔ)與NumPy2NumPy的對象ndarray1.ndarray(數(shù)組)的屬性NumPy數(shù)組的維數(shù)稱為秩(rank),秩就是軸的數(shù)量,即數(shù)組的維度。axis=0,表示沿著第0軸進(jìn)行操作。數(shù)據(jù)分析基礎(chǔ)與NumPy2NumPy的對象ndarray【例】ndarray(數(shù)組)的常用屬性應(yīng)用演示。importnumpyasnpdata=[6,2,3,1,4]arr1=np.array(data)print("數(shù)組維度的元組:",arr1.shape)print("數(shù)組維數(shù):",arr1.ndim)print("數(shù)組元素的類型:",arr1.dtype)運(yùn)行結(jié)果:數(shù)組維度的元組:(5,)數(shù)組維數(shù):1數(shù)組元素的類型:int32數(shù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作1.NumPy.array創(chuàng)建一個(gè)ndarray只需調(diào)用NumPy的array函數(shù)即可:numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)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ù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作2.NumPy.emptyNumPy.empty用于創(chuàng)建指定形狀和dtype的未初始化數(shù)組:NumPy.empty(shape,dtype=float,order='C')shape:空數(shù)組的形狀,整數(shù)或整數(shù)元組dtype:所需的輸出數(shù)組類型,可選order:'C'為按行的C風(fēng)格數(shù)組,'F'為按列的Fortran風(fēng)格數(shù)組x=np.empty([3,2],dtype=int)數(shù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作3.NumPy.zerosNumPy.zeros函數(shù)用于返回特定大小,以0填充的新數(shù)組。NumPy.zeros(shape,dtype=float,order='C')shape:空數(shù)組的形狀,整數(shù)或整數(shù)元組dtype:所需的輸出數(shù)組類型,可選order:'C'為按行的C風(fēng)格數(shù)組,'F'為按列的Fortran風(fēng)格數(shù)組x=np.zeros(5)數(shù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作4.NumPy.onesNumPy.ones函數(shù)用于返回特定大小,以1填充的新數(shù)組。NumPy.ones(shape,dtype=None,order='C')shape:空數(shù)組的形狀,整數(shù)或整數(shù)元組dtype:所需的輸出數(shù)組類型,可選order:'C'為按行的C風(fēng)格數(shù)組,'F'為按列的Fortran風(fēng)格數(shù)組x=np.ones(5)[1.1.1.1.1.]數(shù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作5.NumPy.asarray此函數(shù)類似于NumPy.array,除了它有較少的參數(shù)。對于將Python序列轉(zhuǎn)換為ndarray非常有用。NumPy.asarray(a,dtype=None,order=None)a:任意形式的輸入?yún)?shù),比如列表、列表的元組、元組、元組的元組、元組的列表dtype:通常,輸入數(shù)據(jù)的類型會應(yīng)用到返回的ndarrayorder:'C'為按行的C風(fēng)格數(shù)組,'F'為按列的Fortran風(fēng)格數(shù)組x=[1,2,3]a=np.asarray(x)[123]數(shù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作6.NumPy.arange該函數(shù)返回ndarray對象,包含給定范圍內(nèi)的等間隔值。NumPy.arange(start,stop,step,dtype)start:范圍的起始值,默認(rèn)為0stop:范圍的終止值(不包含)step:兩個(gè)值的間隔,默認(rèn)為1dtype:返回ndarray的數(shù)據(jù)類型,如果沒有提供,則會使用輸入數(shù)據(jù)的類型。x=np.arange(5)[01234]數(shù)據(jù)分析基礎(chǔ)與NumPy3NumPy的基本操作7.ndarray的隨機(jī)創(chuàng)建NumPy.random用于生成隨機(jī)數(shù)據(jù)。arr=np.random.rand(3,4)數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)NumPy提供了很多統(tǒng)計(jì)函數(shù),用于從數(shù)組中查找最小元素,最大元素,百分位標(biāo)準(zhǔn)差和方差等。1.numpy.amin和numpy.amax計(jì)算數(shù)組中的元素沿指定軸的最小值numpy.amax(a[,axis=None,out=None))a:輸入數(shù)據(jù)。axis:指定沿著某個(gè)軸來計(jì)算最大值,axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組。out:替代輸出數(shù)組,用于放置結(jié)果,默認(rèn)值為None。x=np.arange(5)[01234]計(jì)算數(shù)組中的元素沿指定軸的最大值numpy.max(a[,axis=None,out=None])數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)2.numpy.ptp函數(shù)numpy.ptp函數(shù)返回沿某軸(axis)方向上的最大值與最小值的差值即maximum-minimum的值形成的數(shù)組。numpy.ptp(a[,axis=None,out=None])a:輸入數(shù)據(jù)。axis:指定沿著某個(gè)軸來計(jì)算最大值,axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組。out:替代輸出數(shù)組,用于放置結(jié)果,默認(rèn)值為None。print('每行元素最大值和最小值之差:',np.ptp(a,axis=1))print('每列元素最大值和最小值之差:',np.ptp(a,axis=0))數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)3.numpy.percentile函數(shù)numpy.percentile函數(shù)用于計(jì)算數(shù)組中元素的百分位數(shù)。numpy.percentile(a,q,axis)a:輸入數(shù)組;q:要計(jì)算的百分位數(shù),在0~100之間;axis:沿著它計(jì)算百分位數(shù)的軸。print("在縱列上求50%的分位數(shù):",np.percentile(a,50,axis=0))print("在橫列上求50%的分位數(shù):",np.percentile(a,50,axis=1))數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)4.numpy.median函數(shù)沿某軸(axis)方向計(jì)算數(shù)組中的中位數(shù)。numpy.median(a[,axis=None])a:數(shù)組或可以轉(zhuǎn)化成數(shù)組的對象;axis:指定沿著某個(gè)軸來計(jì)算中位數(shù),axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組。print('所有數(shù)組元素的中位數(shù):',np.median(a))print('在縱列上元素的中位數(shù):',np.median(a,axis=0))print('在橫列列上元素的中位數(shù):',np.median(a,axis=1))數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)5.numpy.mean函數(shù)計(jì)算數(shù)組或者軸方向的算術(shù)平均數(shù)。numpy.mean(a[,axis=None])a:數(shù)組或可以轉(zhuǎn)化成數(shù)組的對象;axis:指定沿著某個(gè)軸來計(jì)算中位數(shù),axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組。數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)6.numpy.average函數(shù)根據(jù)在另一個(gè)數(shù)組中給出的各自的權(quán)重計(jì)算數(shù)組中元素的加權(quán)平均值。numpy.average(a[,axis=None,weights=None])a:輸入數(shù)組;axis:指定沿著某個(gè)軸來計(jì)算平均值,axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組;weights:表示權(quán)重值。當(dāng)權(quán)重值為—維數(shù)組時(shí),其長度必須與沿指定軸方向的長度一致。另外,權(quán)重值數(shù)組也可以與a數(shù)組的形狀相同。average()函數(shù)除了a參數(shù)外,其余參數(shù)為可選項(xiàng)。wts=np.array([4,3,2,1])print('指定權(quán)重,求平均值:',np.average(a,weights=wts))數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)7.標(biāo)準(zhǔn)差與標(biāo)準(zhǔn)差(1)標(biāo)準(zhǔn)差計(jì)算標(biāo)準(zhǔn)差的公式如下:std=sqrt(mean((x-x.mean())**2))a:輸入數(shù)組;axis:指定沿著某個(gè)軸來計(jì)算平均值,axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組。numpy.std(a[,axis=None])數(shù)據(jù)分析基礎(chǔ)與NumPy4NumPy統(tǒng)計(jì)函數(shù)(2)方差方差是每個(gè)樣本值與全體樣本值的平均數(shù)之差的平方值的平均數(shù)。mean((x-x.mean())**2)a:輸入數(shù)組;axis:指定沿著某個(gè)軸來計(jì)算平均值,axis=0表示按列,axis=l表示按行,默認(rèn)值None表示對整個(gè)數(shù)組;dtype:數(shù)據(jù)類型。numpy.var(a[,axis=None,dtype=None])數(shù)據(jù)分析基礎(chǔ)與NumPy數(shù)據(jù)統(tǒng)計(jì)分析與Pandas數(shù)據(jù)可視化與Matplotlib目錄這里說明圖片內(nèi)容數(shù)據(jù)統(tǒng)計(jì)分析與PandasPandas的核心是Series和DataFrame兩大數(shù)據(jù)結(jié)構(gòu)Series數(shù)據(jù)結(jié)構(gòu)用于存儲—個(gè)序列的—維數(shù)組DataFrame數(shù)據(jù)結(jié)構(gòu)用于存儲復(fù)雜數(shù)據(jù)的二維數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)統(tǒng)計(jì)分析與Pandas1Series對象及常用操作Series由一組數(shù)據(jù)以及—組與之相關(guān)的數(shù)據(jù)標(biāo)簽組成的。數(shù)據(jù)(即值)存放在value主數(shù)組標(biāo)簽(即索引)存儲在index數(shù)組中Series的表現(xiàn)形式為:索引在左邊,值在右邊。例如,Series對象[1,3,5,2]的內(nèi)部結(jié)構(gòu)數(shù)據(jù)統(tǒng)計(jì)分析與Pandas1Series對象及常用操作1.創(chuàng)建Series對象(1)通過Series構(gòu)造函數(shù)創(chuàng)建。pandas.Series(data=None[,index=None,dtype=None,name=None,copy=False])data:傳遞給序列的數(shù)據(jù),可以是ndarray、list或字典。index:設(shè)置軸的索引,索引值的個(gè)數(shù)與data參數(shù)的長度相同。如果沒有設(shè)置index參數(shù),那么默認(rèn)值是np.arange(n),或者RangeIndex(0,1,2,…,n)。dtype:設(shè)置序列元素的數(shù)據(jù)類型,如果沒有設(shè)置,那么將推斷數(shù)據(jù)類型。name:序列是一個(gè)多行的結(jié)構(gòu),name是序列的名稱。copy:復(fù)制數(shù)據(jù),默認(rèn)值是false。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas1Series對象及常用操作2.查看Series值和標(biāo)簽通過Series的屬性values和index可查看值和標(biāo)簽。print("查看Series對象的值:",m1.values)print("查看Series對象的標(biāo)簽:",m1.index)數(shù)據(jù)統(tǒng)計(jì)分析與Pandas1Series對象及常用操作3.選擇內(nèi)部元素與賦值Series索引的工作方式類似于NumPy數(shù)組的索引,但Series的索引值不只是整數(shù)。(1)選擇單個(gè)元素看成普通的NumPy數(shù)組,指定索引即可。如,m1[1]獲取元素是-3。(2)選擇多個(gè)元素切片“[起始值:終止值:步長]”來選擇多個(gè)元素時(shí),所指定的元素是不包含終止值位置的元素,如沒有指定終止值,則終止值是包含Series最后索引的元素。(3)給元素賦值數(shù)據(jù)統(tǒng)計(jì)分析與Pandas1Series對象及常用操作4.統(tǒng)計(jì)Series對象的組成元素(1)統(tǒng)計(jì)元素重復(fù)出現(xiàn)的次數(shù)unique()函數(shù)返回一個(gè)由Series去重后的元素所組成的數(shù)組value_counts()函數(shù)返回各個(gè)不同的元素,而且還能計(jì)算每個(gè)元素在Series中的出現(xiàn)次數(shù)。運(yùn)行結(jié)果中左邊是元素,右邊是元素出現(xiàn)的次數(shù)。(2)判斷元素是否存在使用isin()函數(shù)可以判斷給定的一列元素是否包含在Series數(shù)據(jù)結(jié)構(gòu)中。在則返回True,否則返回Falseimportnumpyasnpm1=pd.Series([2,-3,4,5,2,4,2])print("對Series各個(gè)元素的值去重:",m1.unique())print("返回Series各個(gè)元素以及重復(fù)出現(xiàn)的次數(shù):\n",m1.value_counts())print("判斷5是否在Series中間:\n",m1.isin([5]))數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作DataFrame是一個(gè)類似于二維數(shù)組或表格型的數(shù)據(jù)結(jié)構(gòu),既有行索引,又有列索引。行索引,表明不同行,橫向索引,叫index,0軸,axis=0列索引,表名不同列,縱向索引,叫columns,1軸,axis=1數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作1.創(chuàng)建DataFrame對象使用DataFrame構(gòu)造函數(shù):pandas.DataFrame(data=None,index=None,columns=None)data:為ndarray、list或dict類型數(shù)據(jù)。index:行標(biāo)簽。如果沒有傳入?yún)?shù),默認(rèn)自動創(chuàng)建一個(gè)從0-N的整數(shù)索引。columns:列名列表列標(biāo)簽。如果沒有傳入?yún)?shù),默認(rèn)自動創(chuàng)建一個(gè)從0-N的整數(shù)索引。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作通常情況下,我們使用pd.DataFrame函數(shù)來創(chuàng)建DataFrame,當(dāng)然也可以根據(jù)需要使用pd.DataFrame.from_dict函數(shù)來創(chuàng)建DataFrame。(1)使用字典來創(chuàng)建DataFrameimportpandasaspddata={'name':['Tom','Jhon','Strong','Sea','Sun'],'birthyear':[2000,2001,2002,2001,2002],'height':[150,170,165,185,175]}row_index=['1','2','3','4','5']col_names=['birthyear','name','height']df=pd.DataFrame(data,columns=col_names,index=row_index)print(df)birthyearnameheight12000Tom15022001Jhon17032002Strong16542001Sea18552002Sun175數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作(2)使用列表(列表項(xiàng)是List)來創(chuàng)建DataFrameimportpandasaspdstudents=[['jack',34,'CAU'],['Tom',30,'Tsinghua'],['Aadi',16,'PKU']]df=pd.DataFrame(students)print(df)importpandasaspdstudents=[('jack',34,'CAU'),('Tom',30,'Tsinghua'),('Aadi',16,'PKU')]df=pd.DataFrame(students)print(df)(3)使用列表(列表項(xiàng)是元組)來創(chuàng)建DataFrame對象數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作(4)使用from_dict創(chuàng)建DataFramepd.DataFrame.from_dict(data)中,data是一個(gè)字典結(jié)構(gòu),字典的Key是列名,Value是一個(gè)列表,通過這種格式創(chuàng)建DataFrame。importpandasaspddata={'col_1':[3,2,1,0],'col_2':['a','b','c','d']}df=pd.DataFrame.from_dict(data)print(df)數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作2.DataFrame的屬性DataFrame的屬性主要是索引、數(shù)據(jù)類型、值和形狀。(1)DataFrame的索引通過index屬性來訪問DataFrame的行標(biāo)簽,通過columns屬性訪問DataFrame的列標(biāo)簽。(2)數(shù)據(jù)類型:df.dtypes(3)DataFrame的值:df.values(4)DataFrame的軸和形狀:df.axes和df.shape數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作2.DataFrame的屬性DataFrame的屬性主要是索引、數(shù)據(jù)類型、值和形狀。(1)DataFrame的索引通過index屬性來訪問DataFrame的行標(biāo)簽,通過columns屬性訪問DataFrame的列標(biāo)簽。(2)數(shù)據(jù)類型:df.dtypes(3)DataFrame的值:df.values(4)DataFrame的軸和形狀:df.axes和df.shape數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作3.列操作和行操作(1)追加列通過為一個(gè)新列賦值來向DataFrame中追加新列,新列始終處于列名序列的末尾:df['new']='a'(2)插入列insert()函數(shù),該函數(shù)向DataFrame中插入一列,并制定新列的位置:DataFrame.insert(self,loc,column,value)loc:插入列的位置column:插入列的名稱value:插入列的值數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作(3)刪除列或行使用drop函數(shù)來刪除行或列:DataFrame.drop(self,labels=None,axis=0,index=None,columns=None,level=None,inplace=False,errors='raise')labels和axis:labels參數(shù)指定要?jiǎng)h除的標(biāo)簽,如果axis=0或'index',表示行標(biāo)簽;如果axis=1或'columns',表示列標(biāo)簽。axis的默認(rèn)值是0;index:設(shè)置index等價(jià)于設(shè)置labels和axis=0;columns:設(shè)置columns等價(jià)于設(shè)置labels和axis=1。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作(4)追加數(shù)據(jù)行DataFrame.append(self,other,ignore_index=False,verify_integrity=False,sort=None)就是把一個(gè)結(jié)構(gòu)相同的DataFrame追加到另一個(gè)DataFrame的后面,把兩個(gè)DataFrame合并為一個(gè)。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2DataFrame對象及常用操作4.列數(shù)據(jù)類型轉(zhuǎn)換df['col_name'].astype(str)df['col_name'].astype('object')astype(dtype)函數(shù)用于把DataFrame的列轉(zhuǎn)換為特定的類型,dtype可以是pandas支持的類型,也可以是NumPy.dtype,也可以是Python類型:數(shù)據(jù)分析基礎(chǔ)與NumPy數(shù)據(jù)統(tǒng)計(jì)分析與Pandas數(shù)據(jù)可視化與Matplotlib目錄這里說明圖片內(nèi)容數(shù)據(jù)可視化與Matplotlib數(shù)據(jù)可視化是以圖形或圖表的形式展示數(shù)據(jù)。數(shù)據(jù)可視化后,可以更加直觀地幫助人們快速地理解數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)的關(guān)鍵點(diǎn)。數(shù)據(jù)可視化與Matplotlib1常用的數(shù)據(jù)可視化工具在Python中已經(jīng)有很多數(shù)據(jù)可視化方面的第三方庫:專門用于開發(fā)2D圖表提供多樣化的輸出格式優(yōu)點(diǎn):使用起來極其簡單;以漸進(jìn)、交互式方式實(shí)現(xiàn)數(shù)據(jù)可視化;表達(dá)式和文本使用LaTeX排版;對圖像元素控制力更強(qiáng);可輸出PNG、PDF、SVG和EPS等多種格式。Matplotlib基于Matplotlib產(chǎn)生的一個(gè)模塊,專攻于統(tǒng)計(jì)可視化,可以和Pandas進(jìn)行無縫鏈接相對于Matplotlib,Seaborn語法更簡潔SeabornHoloViews開源的Python庫,可用非常少的代碼行完成數(shù)據(jù)分析和可視化適合于數(shù)據(jù)的交互式探索數(shù)據(jù)可視化與Matplotlib1常用的數(shù)據(jù)可視化工具在Python中已經(jīng)有很多數(shù)據(jù)可視化方面的第三方庫:它的API簡單、友好、一致,并建立在強(qiáng)大的vega-lite(交互式圖形語法)之上AltairAPI不包含實(shí)際的可視化呈現(xiàn)代碼,而是按照vega-lite規(guī)范發(fā)出JSON數(shù)據(jù)結(jié)構(gòu)。由此產(chǎn)生的數(shù)據(jù)可以在用戶界面中呈現(xiàn)Altair提供了交互式的、公開的,高質(zhì)量的圖表集,可與R、Python、Matlab等軟件對接。擁有在別的庫中很難找到的幾種圖表類型,如等值線圖,樹形圖和三維圖表等,圖標(biāo)類型豐富,申請了API密鑰后,可以一鍵將統(tǒng)計(jì)圖形同步到云端。Plotly數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程1.創(chuàng)建簡單圖表通過pipinstallmatplotlib命令進(jìn)行自動安裝Matplotlib庫后,用Matplotlib畫圖一般需要如下5個(gè)流程:繪圖流程:導(dǎo)入模塊、創(chuàng)建畫布、制作圖形、美化圖片(添加各類標(biāo)簽和圖例)、保存并顯示圖表。1)導(dǎo)入matplotlib.pyplot模塊。importmatplotlib.pyplotasplt數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程2)利用figure函數(shù)創(chuàng)建畫布。由于Matplotlib的圖像均位于繪圖對象中,在繪圖前,先要?jiǎng)?chuàng)建繪圖對象。deffigure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True,FigureClass=Figure,clear=False,**kwargs)數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程3)繪制圖表。通過調(diào)用plot函數(shù)可實(shí)現(xiàn)在當(dāng)前繪圖對象中繪制圖表plt.plot(x,y,label,color,linewidth,linestyle)或plt.plot(x,y,fmt,label)4)添加各類標(biāo)簽和圖例在調(diào)用plot函數(shù)完成繪圖后,還需要為圖表添加各類標(biāo)簽和圖例。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程pyplot中添加各類標(biāo)簽和圖例的函數(shù)包括:1)plt.xlabel:指定x軸的名稱,可以指定位置、顏色、字體大小等參數(shù)。2)plt.ylabel:指定y軸的名稱,可以指定位置、顏色、字體大小等參數(shù)。3)plt.title:指定圖表的標(biāo)題,可以指定標(biāo)題名稱、位置、顏色、字體大小等參數(shù)。4)plt.xlim:指定圖形x軸的范圍,只能輸入一個(gè)數(shù)值區(qū)間,不能使用字符串。5)plt.ylim:指定圖形y軸的范圍,只能輸入一個(gè)數(shù)值區(qū)間,不能使用字符串。6)plt.xticks:指定x軸刻度的數(shù)目與取值。7)plt.yticks:指定y軸刻度的數(shù)目與取值。8)plt.legend:指定當(dāng)前圖形的圖例,可以指定圖例的大小、位置和標(biāo)簽。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程5)保存和顯示圖表plt.savefig:保存繪制的圖表為圖片,可以指定圖表的分辨率、邊緣和顏色等參數(shù)。plt.show:在本機(jī)顯示圖表?!纠坷肕atplotlib繪制折線圖,展現(xiàn)北京一周的天氣,比如從星期一到星期日的天氣溫度:8,7,8,9,11,7,5。#1.導(dǎo)入模塊importmatplotlib.pyplotasplt#2.創(chuàng)建畫布plt.figure(figsize=(10,10),dpi=100)#3.繪制折線圖plt.plot([1,2,3,4,5,6,7],[8,7,8,9,11,7,5])#4.添加標(biāo)簽plt.xlabel("Week")plt.ylabel("Temperature")#5.顯示圖像plt.show()數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程2.創(chuàng)建子圖在Matplotlib中,可以將—個(gè)繪圖對象分為幾個(gè)繪圖區(qū)域,在每個(gè)繪圖區(qū)域中可以繪制不同的圖像,這種繪圖形式稱為創(chuàng)建子圖。創(chuàng)建子圖可以使用subplot()函數(shù)subplot(numRows,numCols,plotNum)numRows:表示將整個(gè)繪圖區(qū)域等分為numRows行;numCols:表示將整個(gè)繪圖區(qū)域等分為numCols列;plotNum:表示當(dāng)前選中要操作的區(qū)域。數(shù)據(jù)統(tǒng)計(jì)分析與Pandas2Matplotlib繪圖的基本流程【例】創(chuàng)建3個(gè)子圖,分別繪制正弦函數(shù)、余弦函數(shù)和線性函數(shù)。#1.導(dǎo)入模塊importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(0,10,80)y=np.sin(x)z=np.cos(x)k=x#第一行的左圖plt.subplot(221)plt.plot(x,z,"r--",label="$cos(x)$")#第一行的右圖plt.subplot(222)plt.plot(x,y,label="$sin(x)$",color="blue",linewidth=2)#第二整行plt.subplot(212)plt.plot(x,k,"g--",label="$x$")plt.legend()plt.savefig("image.png",dpi=100)plt.show()數(shù)據(jù)統(tǒng)計(jì)分析與Pandas3Matplotlib的基礎(chǔ)繪圖功能1.完善原始折線圖:給圖形添加輔助功能(1)準(zhǔn)備數(shù)據(jù)并畫出初始折線圖y_hangzhou=[random.uniform(15,18)foriinx](2)添加自定義x,y刻度1)plt.xticks(x,**kwargs)x:要顯示的刻度值2)plt.yticks(y,**kwargs)y:要顯示的刻度值#構(gòu)造x軸刻度標(biāo)簽x_ticks_label=["11點(diǎn){}分".format(i)foriinx]#構(gòu)造y軸刻度y_ticks=range(40)#修改x,y軸坐標(biāo)的刻度顯示plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])數(shù)據(jù)統(tǒng)計(jì)分析與Pandas3Matplotlib的基礎(chǔ)繪圖功能(3)解決中文顯示問題在Python腳本中動態(tài)設(shè)置matplotlibrc,這樣也可以避免由于更改配置文件而造成的麻煩frompylabimportmpl#設(shè)置顯示中文字體mpl.rcParams["font.sans-serif"]=["SimHei"]有時(shí)候字體更改后,會導(dǎo)致坐標(biāo)軸中的部分字符無法正常顯示,此時(shí)需要更改axes.unicode_minus參數(shù)。#設(shè)置正常顯示符號mpl.rcParams["axes.unicode_minus"]=False(4)添加網(wǎng)格顯示plt.grid(True,linestyle='--',alpha=0.5)數(shù)據(jù)統(tǒng)計(jì)分析與Pandas3Matplotlib的基礎(chǔ)繪圖功能(5)添加描述信息添加x軸、y軸描述信息及標(biāo)題,通過fontsize參數(shù)修改圖像中字體大小。plt.xlabel("時(shí)間")plt.
溫馨提示
- 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)境下木地板銷售的客戶關(guān)系管理策略
- 甲基四氫苯酐生產(chǎn)安全與質(zhì)量監(jiān)管策略
- 電子商務(wù)平臺用戶體驗(yàn)優(yōu)化實(shí)戰(zhàn)
- 2025年蚌埠b2貨運(yùn)資格證模擬考試
- 電商平臺品牌故事的力量與消費(fèi)者心理研究
- 校園文化與班級文化的互動關(guān)系研究
- 電商平臺快遞業(yè)務(wù)管理與供應(yīng)鏈協(xié)調(diào)
- 生產(chǎn)設(shè)備改造中的節(jié)能潛力挖掘研究
- 班級文化的情感教育與價(jià)值觀塑造
- 電子商務(wù)物流配送的智能倉儲技術(shù)應(yīng)用
- 鋼結(jié)構(gòu)考試試題(含答案)
- 彭大軍橋牌約定卡
- 新能源整車裝配工藝培訓(xùn)的資料課件
- 房車露營地的研究課件
- 園藝療法共課件
- DB33T 628.1-2021 交通建設(shè)工程工程量清單計(jì)價(jià)規(guī)范 第1部分:公路工程
- 醫(yī)院-9S管理共88張課件
- 設(shè)立登記通知書
- 2022醫(yī)學(xué)課件前列腺炎指南模板
- MySQL數(shù)據(jù)庫項(xiàng)目式教程完整版課件全書電子教案教材課件(完整)
- 藥品生產(chǎn)質(zhì)量管理工程完整版課件
評論
0/150
提交評論