版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章
Matplotlib
《Python數(shù)據(jù)分析與應(yīng)用》MatplotlibMatplotlib發(fā)布于2007年,在其函數(shù)設(shè)計(jì)時(shí)參考MATLAB相關(guān)函數(shù),故命名以“Mat”開頭,“Plot”表示繪圖,“Lib”為集合。Matplotlib可以繪制線圖、直方圖、餅圖、散點(diǎn)圖以及誤差線圖等各種圖形,主要用于將NumPy統(tǒng)計(jì)計(jì)算結(jié)果可視化。Matplotlib官方網(wǎng)址為:/Matplotlib繪圖步驟Matplotlib畫圖流程大致分為如下步驟:步驟1:figure函數(shù)創(chuàng)建畫布,決定是否創(chuàng)建子圖。步驟2:使用plot函數(shù)繪制圖形。步驟3:設(shè)置繪圖對(duì)象的各種屬性。importmatplotlib.pyplotaspltfig=plt.figure()ax=fig.add_subplot(111)ax.set(xlim=[0.5,4.5],ylim=[-2,8],title='AnExample Axes‘,ylabel='Y-Axis',xlabel='X-Axis')plt.show()
繪圖函數(shù)Matplotlib中繪圖函數(shù)為plot,使用語法如下:plt.plot(x,y,color,marker,linestyle,**kwargs)參數(shù)接收值說明默認(rèn)值x,yarray表示
x軸與
y軸對(duì)應(yīng)的數(shù)據(jù);無colorstring表示折線的顏色;Nonemarkerstring表示折線上數(shù)據(jù)點(diǎn)處的類型;Nonelinestylestring表示折線的類型;-linewidth數(shù)值線條粗細(xì):linewidth=1.=5.=0.31alpha
0~1之間的小數(shù)表示點(diǎn)的透明度;Nonelabelstring數(shù)據(jù)圖例內(nèi)容:label=‘實(shí)際數(shù)據(jù)’None子圖Matplotlib提供如下三種方式繪制子圖:(1)通過plt的subplot;(2)通過figure的add_subplot;(3)通過plt的subplots。子圖subplot(233)表示在當(dāng)前畫布的右上角創(chuàng)建一個(gè)兩行三列的繪圖區(qū)域,選擇在第3個(gè)位置繪制子圖二維圖函數(shù)名稱描述函數(shù)名稱描述Bar繪制條形圖Polar繪制極坐標(biāo)圖Barh繪制水平條形圖Scatter繪制x與y的散點(diǎn)圖Boxplot繪制箱型圖Stackplot繪制堆疊圖Hist繪制直方圖Stem繪制二維離散數(shù)據(jù)(“火柴圖”)his2d繪制2D直方圖Step繪制階梯圖Pie繪制餅狀圖Quiver繪制一個(gè)二維按箭頭線性圖使用plot函數(shù)實(shí)現(xiàn)畫線。plot函數(shù)的第一個(gè)數(shù)組是橫軸的值,第二個(gè)數(shù)組是縱軸的值,最后一個(gè)參數(shù)表示線的顏色。importmatplotlib.pyplotaspltplt.plot([1,2,3],[3,6,9],'-r')plt.plot([1,2,3],[2,4,9],':g')plt.show()
散點(diǎn)圖
scatter函數(shù)用來繪制散點(diǎn)圖。scatter函數(shù)也需要兩組配對(duì)的數(shù)據(jù)指定x和y軸的坐標(biāo)。importmatplotlib.pyplotaspltimportnumpyasnp
N=20
plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='r',s=100,alpha=0.5)plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='g',s=200,alpha=0.5)plt.scatter(np.random.rand(N)*100,np.random.rand(N)*100,c='b',s=300,alpha=0.5)
plt.show()餅狀圖pie函數(shù)用來繪制餅狀圖,用來表達(dá)集合中各個(gè)部分的百分比。importnumpyasnplabels=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']data=np.random.rand(7)*100plt.pie(data,labels=labels,autopct='%1.1f%%')plt.axis('equal')plt.legend()plt.show()條形圖bar函數(shù)用來繪制條形圖,用來描述一組數(shù)據(jù)的對(duì)比情況,例如:一周七天,每天的城市車流量。直方圖直方圖用hist函數(shù)用來繪制,看起來與條形圖有些類似。但它們的含義是不一樣,直方圖描述了某個(gè)范圍內(nèi)數(shù)據(jù)出現(xiàn)的頻度。箱線圖importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltnp.random.seed(2)df=pd.DataFrame(np.random.rand(5,4),columns=['A','B','C','D'])#生成0~1的5*4維度數(shù)據(jù)并存入4列DataFrame中
df.boxplot()plt.show()#顯示圖像三維圖三維圖創(chuàng)建主要有如下兩種方式:(1)利用關(guān)鍵字projection='3d’來實(shí)現(xiàn)(2)通過從mpl_toolkits.mplot3d導(dǎo)入對(duì)象Axes3D來實(shí)現(xiàn)三維曲線圖frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
#三維線的數(shù)據(jù)zline=np.linspace(0,15,1000)xline=np.sin(zline)yline=np.cos(zline)ax.plot3D(xline,yline,zline,'gray')三維散點(diǎn)圖importmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')三維等高線圖frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp
deff(x,y):returnnp.sin(np.sqrt(x**2+y**2))x=np.linspace(-6,6,30)y=np.linspace(-6,6,30)X,Y=np.meshgrid(x,y)Z=f(X,Y)
fig=plt.figure()ax=plt.axes(projection='3d')ax.contour3D(X,Y,Z,50,cmap='binary')ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel('z')#俯仰角設(shè)為60度,把方位角調(diào)整為35度ax.view_init(60,35)動(dòng)態(tài)圖matplotlib畫圖有阻塞和交互兩種顯示模式:(1)阻塞模式:采用plt.show顯示圖片,且圖片關(guān)閉之前代碼將阻塞在該行(2)交互模式:采用plt.plot顯示圖片,且不阻塞代碼的繼續(xù)運(yùn)行。Matplotlib中默認(rèn)是使用阻塞模式。
matplotlib的animation模塊實(shí)現(xiàn)動(dòng)態(tài)圖較為繁瑣。而交互式繪圖和暫停功能較為簡(jiǎn)單,通過“畫圖-->清理-->畫圖”的循環(huán)實(shí)現(xiàn)動(dòng)態(tài)效果。相關(guān)函數(shù)如下所示:plt.ion():打開交互模式plt.ioff():關(guān)閉交互模式plt.clf():清除當(dāng)前的Figure對(duì)象plt.cla():清除當(dāng)前的Axes對(duì)象plt.pause():暫停功能概率分布泊松分布正態(tài)分布均勻分布二項(xiàng)分布泊松分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.poisson(9,10000)plt.hist(list,bins=8,color='b',alpha=0.4,edgecolor='r')plt.show()正態(tài)分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.normal(0,1,10000)plt.hist(list,bins=8,color='r',alpha=0.5,edgecolor='r')plt.show()均勻分布importnumpyasnpimportmatplotlib.pyplotasplt
list=np.random.uniform(0,10,10000)plt.hist(list,bins=7,color='g',alpha=0.4,edgecolor='b')plt.show()二項(xiàng)分布importnumpyasnpimportmatplotlib.pyplotaspltlist=np.random.binomial(n=10,p=0.5,size=10000)plt.hist(list,bins=8,color='g',alpha=0.4,edgecolor='b')plt.show()三維圖三維圖創(chuàng)建主要有如下兩種方式利用關(guān)鍵字projection='3d’來實(shí)現(xiàn)通過從mpl_toolkits.mplot3d導(dǎo)入對(duì)象Axes3D來實(shí)現(xiàn)三維曲線圖frommpl_toolkitsimportmplot3dimportmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
#三維線的數(shù)據(jù)zline=np.linspace(0,15,1000)xline=np.sin(zline)yline=np.cos(zline)ax.plot3D(xline,yline,zline,'gray')三維散點(diǎn)圖importmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')三維等高線圖importmatplotlib.pyplotaspltimportnumpyasnp
ax=plt.axes(projection='3d')
zdata=15*np.random.random(100)xdata=np.sin(zdata)+0.1*np.random.randn(100)ydata=np.cos(zdata)+0.1*np.random.randn(100)ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap='Reds')第10章Pandas
《Python數(shù)據(jù)分析與應(yīng)用》pandaspandas是基于NumPy的數(shù)據(jù)分析工具,官方網(wǎng)址是。pandas提供了快速,靈活和富有表現(xiàn)力的數(shù)據(jù)結(jié)構(gòu),目的是使“關(guān)系”或“標(biāo)記”數(shù)據(jù)的工作既簡(jiǎn)單又直觀。Pandas用于數(shù)據(jù)清洗,對(duì)噪音等數(shù)據(jù)進(jìn)行處理,從而便于機(jī)器學(xué)習(xí)和數(shù)據(jù)分析。pandaspandas常用6個(gè)類Series:基本數(shù)據(jù)結(jié)構(gòu),一維標(biāo)簽數(shù)組,能夠保存任何數(shù)據(jù)類型DataFrame:基本數(shù)據(jù)結(jié)構(gòu),一般為二維數(shù)組,是一組有序的列Index:索引對(duì)象,負(fù)責(zé)管理軸標(biāo)簽和其他元數(shù)據(jù)(比如軸名稱)groupby:分組對(duì)象,通過傳入需要分組的參數(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)分組Timestamp:時(shí)間戳對(duì)象,表示時(shí)間軸上的一個(gè)時(shí)刻Timedelta:時(shí)間差對(duì)象,用來計(jì)算兩個(gè)時(shí)間點(diǎn)的差值Pandas2個(gè)重要類創(chuàng)建Series
創(chuàng)建Series對(duì)象的函數(shù)是Series,它的主要參數(shù)是data和index,其基本語法格式如下。pandas.Series(data=None,
index=None,
name=None)
參數(shù)說明如下:data:接收array或dict。表示接收的數(shù)據(jù)。默認(rèn)為None。index:接收array或list。表示索引,必須與數(shù)據(jù)長(zhǎng)度相同name:接收string或list。表示Series對(duì)象的名稱。默認(rèn)為None。通過ndarray創(chuàng)建Seriesimportpandasaspdimportnumpyasnpprint('通過ndarray創(chuàng)建的Series為:\n',pd.Series(np.arange(5),index=['a','b','c','d','e'],name='ndarray'))通過dict創(chuàng)建Seriesdict的鍵作為Series的索引,dict的值作為Series的值,無須傳入index參數(shù)。通過dict創(chuàng)建Series對(duì)象,代碼如下所示:importpandasaspddict={'a':0,'b':1,'c':5,'d':3,'e':4}print('通過dict創(chuàng)建的Series為:\n',pd.Series(dict))通過list創(chuàng)建Seriesimportpandasaspdlist1=[0,1,5,3,4]print('通過list創(chuàng)建的Series為:\n',pd.Series(list1,index=['a','b','c','d','e'],name='list'))Series屬性Series擁有8個(gè)常用屬性,如下所示。values:以ndarray的格式返回Series對(duì)象的所有元素index:返回Series對(duì)象的索引dtype:返回Series對(duì)象的數(shù)據(jù)類型shape:返回Series對(duì)象的形狀nbytes:返回Series對(duì)象的字節(jié)數(shù)ndim:返回Series對(duì)象的維度size:返回Series對(duì)象的個(gè)數(shù)T:返回Series對(duì)象的轉(zhuǎn)置訪問Series的屬性importpandasaspdseries1=pd.Series([1,5,3,4])print("series1:\n{}\n".format(series1))print("series1.values:{}\n".format(series1.values))#數(shù)據(jù)print("series1.index:{}\n".format(series1.index))#索引print("series1.shape:{}\n".format(series1.shape))#形狀print("series1.ndim:{}\n".format(series1.ndim))#維度訪問Series數(shù)據(jù)通過索引位置訪問Series的數(shù)據(jù)與ndarray相同,importpandasaspdseries5=pd.Series([1,5,3,4,5,6,7],index=["C","D","E","F","G","A","B"])#通過索引位置訪問Series數(shù)據(jù)子集print("series5位于第1位置的數(shù)據(jù)為:",series5[0])#通過索引名稱(標(biāo)簽)也可以訪問Series數(shù)據(jù)print("Eis{}\n".format(series5["E"]))更新Seriesimportpandasaspdseries1=pd.Series(list1,index=['a','b','c','d','e'],name='list')print("series1:\n{}\n".format(series1))#更新元素series1['a']=3print('更新后的Series1為:\n',series1)追加Series和插入單個(gè)值importpandasaspdseries1=pd.Series(list1,index=['a','b','c','d','e'],name='list')print("series1:\n{}\n".format(series1))series1=pd.Series([4,5],index=['f','g'])#追加Seriesprint('在series插入series1后為:\n',series.append(series1))刪除Series元素importpandasaspdseries=pd.Series(list1,index=['a','b','c','d','e'],name='list')print("series:\n{}\n".format(series))#刪除數(shù)據(jù)series.drop('e',inplace=True)print('刪除索引e對(duì)應(yīng)數(shù)據(jù)后的series為:\n',series)。DataFrameDataFrame是pandas基本數(shù)據(jù)結(jié)構(gòu),類似數(shù)據(jù)庫中的表。DataFrame既有行索引,也有列索引,可以看作是Series組成的dict,每個(gè)Series是DataFrame的一列
創(chuàng)建DataFrameDataFrame函數(shù)用于創(chuàng)建DataFrame對(duì)象,其基本語法格式如下pandas.DataFrame(data=None,
index=None,
columns=None,
dtype=None,
copy=False)參數(shù)說明如下所示:data:接收ndarray、dict、list或DataFrame。表示輸入數(shù)據(jù)。默認(rèn)為None。index:接收Index,ndarray。表示索引。默認(rèn)為None。columns:接收Index,ndarray。表示列標(biāo)簽(列名)。默認(rèn)為None。通過dict創(chuàng)建DataFrameimportpandasaspddict1={'col1':[0,1,5,3,4],'col5':[5,6,7,8,9]}print('通過dict創(chuàng)建的DataFrame為:\n',pd.DataFrame(dict1,index=['a','b','c','d','e']))通過list創(chuàng)建DataFrameimportpandasaspdlist5=[[0,5],[1,6],[5,7],[3,8],[4,9]]print('通過list創(chuàng)建的DataFrame為:\n',pd.DataFrame(list5,index=['a','b','c','d','e'],columns=['col1','col5']))通過Series創(chuàng)建DataFrameimportpandasaspdnoteSeries
=
pd.Series(["C",
"D",
"E",
"F",
"G",
"A",
"B"],
index=[1,
5,
3,
4,
5,
6,
7])weekdaySeries
=
pd.Series(["Mon",
"Tue",
"Wed",
"Thu","Fri",
"Sat",
"Sun"],
index=[1,
5,
3,
4,
5,
6,
7])df4
=
pd.DataFrame([noteSeries,
weekdaySeries])print("df4:\n{}\n".format(df4))DataFrame屬性values:以ndarray的格式返回DataFrame對(duì)象的所有元素index:返回DataFrame對(duì)象的Indexcolumns:返回DataFrame對(duì)象的列標(biāo)簽dtypes:返回DataFrame對(duì)象的數(shù)據(jù)類型axes:返回DataFrame對(duì)象的軸標(biāo)簽ndim:返回DataFrame對(duì)象的軸尺寸數(shù)size:返回DataFrame對(duì)象的個(gè)數(shù)shape:返回DataFrame對(duì)象的形狀更新DataFrameimportpandasaspddf=pd.DataFrame({'col1':[0,1,5,3,4],'col5':[5,6,7,8,9]},index=['a','b','c','d','e'])print('DataFrame為:\n',df)#更新列df['col1']=[10,11,15,13,14]print('更新列后的DataFrame為:\n',df)插入和刪除DataFrameimportpandasaspddf3=pd.DataFrame({"note":["C","D","E","F","G","A","B"],"weekday":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]})print("df3:\n{}\n".format(df3))df3["No."]=pd.Series([1,5,3,4,5,6,7])#采用賦值的方法插入列print("df3:\n{}\n".format(df3))deldf3["weekday"]#刪除列的方法有多種,如del、pop、dropprint("df3:\n{}\n".format(df3))Index
(1)
隱式創(chuàng)建
創(chuàng)建Series或DataFrame等對(duì)象時(shí),索引會(huì)轉(zhuǎn)換為Index對(duì)象
(2)顯式創(chuàng)建
Index對(duì)象可以通過pandas.Index()函數(shù)創(chuàng)建
。
plotMatplotlib繪制一張圖表需要各個(gè)基礎(chǔ)組件對(duì)象,工作量較大。而pandas中使用行標(biāo)簽和列標(biāo)簽以及分組信息,較為簡(jiǎn)便的完成圖表的制作。散點(diǎn)圖
importnumpyasnpimportpandasaspdwdf=pd.DataFrame(np.arange(20),columns=['W'])wdf['Y']=wdf['W']*1.5+2wdf.iloc[3,1]=128wdf.iloc[18,1]=150wdf.plot(kind='scatter',x='W',y='Y')
條形圖importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltdf2=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])df2.plot.bar()plt.show()
直方圖與密度圖importpandasas
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電影行業(yè)安全生產(chǎn)工作總結(jié)
- 傳統(tǒng)制造業(yè)技術(shù)職位展望
- 二零二五年度航空航天材料試驗(yàn)委托協(xié)議3篇
- 二零二五年度房屋收購(gòu)合同環(huán)保驗(yàn)收與評(píng)估范本3篇
- 二零二五版養(yǎng)老院專業(yè)保潔及消毒服務(wù)合同2篇
- 二零二五版?zhèn)€人二手房購(gòu)房合同與產(chǎn)權(quán)過戶指導(dǎo)書
- 航空行業(yè)助理的職位介紹
- 汽車行業(yè)財(cái)務(wù)預(yù)測(cè)分析工作總結(jié)
- 二零二五年度產(chǎn)品責(zé)任糾紛民事答辯狀范文3篇
- 二零二五年度木材市場(chǎng)樹木買賣協(xié)議3篇
- 問題探究如何讓城市不再看海(教學(xué)課件)高一地理
- 2024年人教版五年級(jí)數(shù)學(xué)(上冊(cè))模擬考卷及答案(各版本)
- 人教版八年級(jí)下冊(cè)歷史第1課 中華人民共和國(guó)成立 說課稿
- 《地球物理勘查》全冊(cè)配套完整教學(xué)課件
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 九年級(jí)上冊(cè)-備戰(zhàn)2024年中考?xì)v史總復(fù)習(xí)核心考點(diǎn)與重難點(diǎn)練習(xí)(統(tǒng)部編版)
- 健康指南如何正確護(hù)理蠶豆病學(xué)會(huì)這些技巧保持身體健康
- 老客戶的開發(fā)與技巧課件
- 26個(gè)英文字母書寫(手寫體)Word版
- GB/T 13813-2023煤礦用金屬材料摩擦火花安全性試驗(yàn)方法和判定規(guī)則
- 日語專八分類詞匯
評(píng)論
0/150
提交評(píng)論