《python數(shù)據(jù)分析原理與應(yīng)用》教案全套 王華清 第1-8章 數(shù)據(jù)分析概述 - sklearn與機(jī)器學(xué)習(xí)_第1頁
《python數(shù)據(jù)分析原理與應(yīng)用》教案全套 王華清 第1-8章 數(shù)據(jù)分析概述 - sklearn與機(jī)器學(xué)習(xí)_第2頁
《python數(shù)據(jù)分析原理與應(yīng)用》教案全套 王華清 第1-8章 數(shù)據(jù)分析概述 - sklearn與機(jī)器學(xué)習(xí)_第3頁
《python數(shù)據(jù)分析原理與應(yīng)用》教案全套 王華清 第1-8章 數(shù)據(jù)分析概述 - sklearn與機(jī)器學(xué)習(xí)_第4頁
《python數(shù)據(jù)分析原理與應(yīng)用》教案全套 王華清 第1-8章 數(shù)據(jù)分析概述 - sklearn與機(jī)器學(xué)習(xí)_第5頁
已閱讀5頁,還剩206頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE100《python數(shù)據(jù)分析原理與應(yīng)用》教案適用課程:大數(shù)據(jù)分析技術(shù)、大數(shù)據(jù)分析基礎(chǔ)、數(shù)據(jù)挖掘基礎(chǔ)、現(xiàn)代商務(wù)數(shù)據(jù)分析等322《大數(shù)據(jù)分析技術(shù)》課程教案時(shí)間安排:課程周學(xué)時(shí)4,共8周,總學(xué)時(shí)32(1PPT講解與學(xué)生代碼實(shí)操相結(jié)合,并結(jié)合時(shí)效性較強(qiáng)的素材,以便加強(qiáng)學(xué)生對(duì)重點(diǎn)知識(shí)點(diǎn)的理解和實(shí)際編程操作。(2)針對(duì)授課過程中擬用的程序和案例,鼓勵(lì)學(xué)生對(duì)代碼的可行性和可替(3)在部分章節(jié)知識(shí)點(diǎn)講解結(jié)束后安排學(xué)生進(jìn)行分組實(shí)驗(yàn),完成代碼編寫(4)采用課堂講解、隨堂練習(xí)、分組實(shí)驗(yàn)、報(bào)告撰寫、閉卷開始等多元化教學(xué)特色Python語+代碼編寫+師資隊(duì)伍:本課程主講教師應(yīng)該具有講師及以上職稱,獲得相關(guān)專業(yè)博士學(xué)位,具有管理學(xué)、計(jì)算機(jī)科學(xué)等相關(guān)專業(yè)背景,熟悉Python語言,具有一定建模工作能力和科研經(jīng)驗(yàn)。教學(xué)目標(biāo)Python作為主要工具,要求學(xué)生掌握大數(shù)據(jù)分析的思維方學(xué)生能夠基于科學(xué)原理和數(shù)學(xué)模型方法對(duì)具體行業(yè)相關(guān)的復(fù)雜問題尋求解決方案并給出合理有效的結(jié)論和預(yù)測方案,以滿足解決實(shí)際管理問題的需求。先修課程:高等數(shù)學(xué)、數(shù)理統(tǒng)計(jì)、Python等《大數(shù)據(jù)分析技術(shù)》課程教案授課內(nèi)容第一章導(dǎo)論計(jì)劃課時(shí)2教學(xué)目的與要求使學(xué)生了解數(shù)據(jù)分析的概念和一般流程使學(xué)生掌握大數(shù)據(jù)分析的基本流程和方法使學(xué)生明晰大數(shù)據(jù)分析的研究方向、職業(yè)前景和崗位要求使學(xué)生熟悉Python(Anaconda拓展庫JupyterNotebook開發(fā)工具(主界面使用技巧、快捷鍵用法)重點(diǎn)難點(diǎn)PythonJupyterNotebook主界面和代碼編輯界面功能,以及快捷鍵用法教學(xué)進(jìn)程安排授課內(nèi)容:(1《大數(shù)據(jù)分析技術(shù)》課程概述介紹本課程的學(xué)科地位、后續(xù)學(xué)習(xí)和研究的方向、課程內(nèi)容、考核方式、教材和參考書目。(2)數(shù)據(jù)分析的概念和基本流程講解數(shù)據(jù)分析的概念和基本流程。(3)為什么選用Python進(jìn)行大數(shù)據(jù)分析講解大數(shù)據(jù)分析的特點(diǎn)和要求,Python語言的優(yōu)點(diǎn)和適用性。(4)數(shù)據(jù)分析標(biāo)準(zhǔn)環(huán)境Anaconda部署講解Anaconda版本、安裝包下載、拓展庫安裝等。(5)JupyterNotebook開發(fā)工具界面和使用說明講解Jupyter用途、主界面和代碼編輯界面功能、快捷鍵用法等。一、 課程導(dǎo)入5G時(shí)代的到來,使得每個(gè)人都可以隨時(shí)隨地創(chuàng)造新的商業(yè)價(jià)值,以及發(fā)現(xiàn)企業(yè)自身的問題和預(yù)測企業(yè)的未來。在實(shí)際工作中,無論從事什么行業(yè)、什么崗位,從數(shù)據(jù)分析師、市場營銷策劃、析的基本流程、為什么選用Python進(jìn)行大數(shù)據(jù)分析、數(shù)據(jù)分析環(huán)境Anaconda、JupyterNotebook開發(fā)工具使用說明等。二、 新課講解知識(shí)點(diǎn)1:數(shù)據(jù)分析簡介及基本流程教師通過PPT、視頻演示和流程圖展示的方式講解數(shù)據(jù)分析的基本流程。數(shù)據(jù)分析是利用數(shù)學(xué)、統(tǒng)計(jì)學(xué)理論與實(shí)踐相結(jié)合的科學(xué)統(tǒng)計(jì)分析方Excel下圖為數(shù)據(jù)分析的基本流程,主要環(huán)節(jié)包括熟悉工具、明確目的、獲取數(shù)據(jù)、數(shù)據(jù)處理、數(shù)據(jù)分析、驗(yàn)證結(jié)果、結(jié)果呈現(xiàn)和數(shù)據(jù)應(yīng)用。熟悉工具問題定義數(shù)據(jù)收集數(shù)據(jù)處理熟悉工具問題定義數(shù)據(jù)收集數(shù)據(jù)處理報(bào)告撰寫數(shù)據(jù)展現(xiàn)結(jié)果驗(yàn)證數(shù)據(jù)分析報(bào)告撰寫數(shù)據(jù)展現(xiàn)結(jié)果驗(yàn)證數(shù)據(jù)分析ExcelSPSSR語言、PythonPython(2)問題定義:這是首先要明確的,也就是說我們分析的問題是什那么在問題定義的時(shí)候你就需要想清楚,需要針對(duì)哪些因素進(jìn)行重點(diǎn)分析。(5)數(shù)據(jù)分析:用適當(dāng)?shù)姆治龇椒肮ぞ?,?duì)處理好的數(shù)據(jù)進(jìn)行分(6)結(jié)果驗(yàn)證:對(duì)數(shù)據(jù)分析的結(jié)果進(jìn)行驗(yàn)證,找到結(jié)果的影響因素,方便做出更好的決策。(7)數(shù)據(jù)展現(xiàn):通過數(shù)據(jù)分析,隱藏在數(shù)據(jù)中內(nèi)部的關(guān)系和規(guī)律逐知識(shí)點(diǎn)2:為什么用Python進(jìn)行大數(shù)據(jù)分析教師通過PPT的方式講解大數(shù)據(jù)分析的特點(diǎn)和為什么用Python進(jìn)行大數(shù)據(jù)分析4Excel等工具軟件進(jìn)行大數(shù)據(jù)分析Excel等工具軟件承載的數(shù)據(jù)量有限。Excel工作表中最多只能有104萬行記錄,這對(duì)大數(shù)據(jù)來說是遠(yuǎn)遠(yuǎn)不夠的,即使是在范圍內(nèi)的幾萬條數(shù)據(jù)量,在操作時(shí)也會(huì)出現(xiàn)較長時(shí)間的等待和卡頓。Excel等工具軟件功能固化。深入的數(shù)據(jù)分析需要用復(fù)雜的公式、Excel等工具軟件菜單欄中的操作選項(xiàng)只適合用戶進(jìn)行簡單的表層分析,中間步驟出錯(cuò)很多環(huán)節(jié)需要重新調(diào)整,浪費(fèi)很多時(shí)間。Python語言進(jìn)行大數(shù)據(jù)分析Python語言功能完善。Python不僅在數(shù)據(jù)分析方面有突出的表現(xiàn)Python第三方庫功能強(qiáng)大。Python語言是開源的,第三方庫一直NumpyPythonPython數(shù)據(jù)結(jié)構(gòu)高效的多;PandasPython數(shù)據(jù)分析的核心庫,提供了一系分析過程可控、復(fù)用性強(qiáng)Python知識(shí)點(diǎn)3:Python數(shù)據(jù)分析標(biāo)準(zhǔn)環(huán)境部署教師通過PPT和視頻演示的方式講解如何搭建數(shù)據(jù)分析標(biāo)準(zhǔn)環(huán)境AnacondaAnacondaPython180Pythonconda常用命令來進(jìn)JupyteMtplotlibumpy、ScipyPandasScikit-learnAnaconda(/)Anaconda包含了大量的第三方庫,安裝文件較大(1GB,又是國外網(wǎng)站,下載速度較慢,可以到國內(nèi)清華大學(xué)開源軟件鏡像站(/anaconda/archive/)下載。下載步驟如下:(1)查看計(jì)算機(jī)操作系統(tǒng)位數(shù),確認(rèn)下載版本;(2)進(jìn)入官網(wǎng)下載Anaconda;(3)選擇安裝Anaconda菜單項(xiàng);(4)根據(jù)計(jì)算機(jī)操作系統(tǒng)選擇相應(yīng)的操作系統(tǒng),同時(shí)選擇Python版本,并開始下載Anaconda。AnacondaNavigtor:用于管理工具包和環(huán)境的圖形用戶界面;AnacondapowershellAnacondaJupyterNotebookweb的交互式環(huán)境,可以編輯符合人們閱讀習(xí)慣的程序或文檔,用于展示數(shù)據(jù)分析的過程;SpyderPython變成的集成開發(fā)環(huán)境。Anaconda拓展庫具體步驟如下:(1)在開始菜單選擇AnacondaPrompt命令,彈出終端界面;(2)使用pip、conda工具安裝拓展庫,具體為:condainstallnumpy:numpy拓展庫condalist:列示所有安裝的拓展庫condaupgradenumpy:numpy拓展庫condaupgradeall:更新所有的拓展庫condaversion:conda的安裝版本-condaupgradeconda:升級(jí)conda到最新版本拓展庫名-I鏡像網(wǎng)站網(wǎng)址知識(shí)點(diǎn)4:JupyterNotebook開發(fā)工具的使用PPTJupyterNotebook開發(fā)工具特點(diǎn)、功能和使用要求。JupyterNotebook用戶在網(wǎng)頁頁面編寫程序和運(yùn)行代碼,運(yùn)行結(jié)果會(huì)直接顯示在代碼塊下Jupyternotebook環(huán)境中進(jìn)行的。下面介紹Jupyter的使用:Jupyter主界面功能JupyterNotebook啟動(dòng)編譯軟件,進(jìn)入如下界面:也可以在終端運(yùn)行:jupyternotebook--port8888來打開JupyterNotebook。主界面是代碼文件的列表管理界面,為代碼文件提供了建立、刪除、Files用于創(chuàng)建和管理文件,New選擇創(chuàng)建的文件類型。代碼編輯界面的功能如下圖:文檔名稱

菜單欄

工具欄在下面剪切復(fù)制粘貼選選運(yùn)保插入一單元單元單元上下行

重重啟內(nèi)中新核,重新存?zhèn)€新的格 格 格cell

一當(dāng)個(gè)個(gè)前

斷開運(yùn)行所始有的cell雙擊文檔名稱可以進(jìn)行重命名,菜單欄和工具欄我們會(huì)在后面的使用中逐漸熟悉起來。JupyterNotebook(Command、編輯模式(EditMode,綠色單元格。Jupyter快捷鍵用法在命令模式下,快捷鍵及相應(yīng)的用法如下:Y:單元格進(jìn)入代碼格式MMarkdown模式1:一級(jí)標(biāo)題2:二級(jí)標(biāo)題Shift+M:合并單元格A/B:在上(下)插入單元格X:剪切單元格C:復(fù)制單元格Shift+L:全部代碼塊顯示行號(hào)0:隱藏輸出在編輯模式下,快捷鍵及相應(yīng)的用法如下:Ctrl+]:縮進(jìn)Ctrl+/:注釋Ctrl+M:進(jìn)入命令模式Ctrl+Shift+-:切分代碼塊Shift+Enter:運(yùn)行并選中下一塊Ctrl+Enter:運(yùn)行代碼塊Alt+Enter:運(yùn)行并在下方插入新塊三、代碼練習(xí)Eg1:古詩橫排改豎排#古詩橫排改豎排str1,str2,str3,str4='千山鳥飛絕,','萬徑人蹤滅,','孤舟蓑笠翁,','獨(dú)釣寒江雪。'verse=[list(str1),list(str2),list(str3),list(str4)]print('\n 橫排 ')print('\n***********************')foriinrange(4):forjinrange(6):ifj==0:print('**'+verse[i][j],end=' ')elifj==5:print(verse[i][j]+ '** ')else:print(verse[i][j],end='')print('************************\n')代碼運(yùn)行效果(橫排)如下:verse.reverse()print('\n 豎排 ')print('\n************************')foriinrange(6):forjinrange(4):ifj==0:print(' *** '+verse[j][i],end=' ')elifj==3:print(verse[j][i]+' ***')else:print(verse[j][i],end='')print(' ************************\n')代碼運(yùn)行效果(豎排)如下:四、 歸納總結(jié)Anaconda下載及拓展庫安裝、JupyterNotebook五、 布置作業(yè)教師通過超星智慧教育平臺(tái)布置本節(jié)課作業(yè),并安排下節(jié)課的預(yù)習(xí)任務(wù)。教學(xué)方式PPT示等方式進(jìn)行教學(xué)主要參考資料①《Python機(jī)械工業(yè)出版社,2025年11月②《Python②《Python數(shù)據(jù)分析從入門到實(shí)踐》明日科技高春艷劉志銘編著,吉林大學(xué)出版社③《Python數(shù)據(jù)分析從入門到精通》明日科技編著,清華大學(xué)出版社《大數(shù)據(jù)分析技術(shù)》課程教案授課內(nèi)容第二章Numpy與數(shù)組運(yùn)算計(jì)劃課時(shí)4教學(xué)目的與要求Numpy安裝和數(shù)組的相關(guān)概念使學(xué)生能夠熟練進(jìn)行數(shù)組的基本操作Numpy矩陣的基本操作使學(xué)生能夠靈活運(yùn)用常用統(tǒng)計(jì)分析函數(shù)重點(diǎn)難點(diǎn)數(shù)組的創(chuàng)建、運(yùn)算、索引、切片和重塑矩陣的創(chuàng)建、運(yùn)算、轉(zhuǎn)換數(shù)學(xué)運(yùn)算函數(shù)和統(tǒng)計(jì)分析函數(shù)的運(yùn)用教學(xué)進(jìn)程安排授課內(nèi)容:Numpy概述和數(shù)組概念介紹Numpy相關(guān)概念和安裝Numpy。創(chuàng)建數(shù)組和數(shù)組屬性講解數(shù)組基礎(chǔ)和創(chuàng)建,包括數(shù)組參數(shù)、元素類型、數(shù)組屬性等。數(shù)組的基本操作講解數(shù)組索引、切片、運(yùn)算、排序等。矩陣的基本操作講解矩陣的創(chuàng)建和運(yùn)算。Numpy隨機(jī)函數(shù)和常用統(tǒng)計(jì)分析函數(shù)講解數(shù)學(xué)運(yùn)算函數(shù)和統(tǒng)計(jì)分析函數(shù)的運(yùn)用。(6)圖像的數(shù)組表示和轉(zhuǎn)換講解PIL庫圖像的數(shù)組表示和轉(zhuǎn)換。一、復(fù)習(xí)鞏固和課程導(dǎo)入Python進(jìn)行大數(shù)據(jù)分析、以及數(shù)據(jù)分析的標(biāo)準(zhǔn)環(huán)境Anaconda部署和JupyterNotebook開發(fā)工具的用法。接下來,我們將具體學(xué)習(xí)核心拓展庫的用法。本節(jié)課開始我們將對(duì)Numpy模塊的相關(guān)概念和用法進(jìn)行介紹,包括創(chuàng)建數(shù)組、數(shù)學(xué)計(jì)算、矩陣運(yùn)算、隨機(jī)函數(shù)和統(tǒng)計(jì)函數(shù)。二、新課講解知識(shí)點(diǎn)1:Numpy概述和數(shù)組概念教師通過PPT的方式講解Numpy和數(shù)組的相關(guān)概念NumpyPython在學(xué)習(xí)Numpy前我們需要先學(xué)習(xí)數(shù)組的概念。數(shù)組可以分為一維數(shù)組、二維數(shù)組、三維數(shù)組,其中三維數(shù)組是常見的多維數(shù)組。Python原始數(shù)組,也就是說,如果對(duì)數(shù)組進(jìn)行修改,原始數(shù)組也會(huì)跟著改變。1 2 3 4axis0axis0二維數(shù)組:以數(shù)組作為數(shù)組元素的數(shù)組,包括行和列,類似于表格形式,又成為矩陣。axis012344axis15673的數(shù)組結(jié)構(gòu),也稱為矩陣列表。axis013254axis01325464 5 63468 910583 7 7axis1axis進(jìn)行相關(guān)操作。知識(shí)點(diǎn)2:創(chuàng)建數(shù)組和數(shù)組屬性教師通過PPT和代碼演示的方式講解用不同方式創(chuàng)建數(shù)組的做法,并介紹數(shù)組屬性Numpy創(chuàng)建簡單的數(shù)組主要使用array函數(shù),語法如下:numpy.array(object,dtype=None,copy=True,order=’k’,subok=False,ndmin=0)object:任何具有數(shù)組接口方法的對(duì)象。dtype:數(shù)據(jù)類型。copy:Trueobject對(duì)象可復(fù)制。order:KACFobject參(CFobject按行按列A(原順序、K(元素在內(nèi)存中的出現(xiàn)順序。subok:True,則將傳遞子類,否則返回的數(shù)組將強(qiáng)制為基類數(shù)組。ndmin:指定生成數(shù)組的最小維數(shù)。下面通過幾個(gè)例子來演示如何創(chuàng)建數(shù)組,并介紹數(shù)組屬性。Eg1:創(chuàng)建簡單的數(shù)組importnumpyasnpn1=np.array([1,2,3])n2=np.array([0.1,0.2,0.3])n3=np.array([[1,2],[3,4]])print(n1,n2,n3)程序運(yùn)行結(jié)果如下:Eg2:為數(shù)組指定數(shù)據(jù)類型importnumpyasnplist=[1,2,3]n4=np.array(list,dtype=np.float_)n4=np.array(list,dtype=float)print(n4)print(n4.dtype)print(type(n4[0]))程序運(yùn)行結(jié)果如下:Eg3:數(shù)組的屬性importnumpyasnpn5=np.array([[0,1,2,3,4],[9,8,7,6,5]])n5.ndimn5.shapen5.sizen5.dtypen5.itemsize程序運(yùn)行結(jié)果如下:表示這個(gè)數(shù)組有2個(gè)維度表示這個(gè)數(shù)組的形狀,有2個(gè)維度,第一個(gè)維度有2個(gè)方向,第2個(gè)維度有5個(gè)元素表示這個(gè)數(shù)組中有10個(gè)元素表示該數(shù)組為32位的整數(shù)類型表示每個(gè)元素是由4個(gè)字節(jié)構(gòu)成Eg4:數(shù)組的復(fù)制copy參數(shù)實(shí)現(xiàn),示例代碼如下:importnumpyasnpn6=np.array([1,2,3])n7=np.array(n6,copy=True)n7[0]=3n7[2]=1print(n6)print(n7)程序運(yùn)行結(jié)果如下:Eg5:通過數(shù)值范圍創(chuàng)建數(shù)組通過arange()函數(shù)創(chuàng)建數(shù)組,arange()函數(shù)與range()函數(shù)相似,但arange()range()arange()函數(shù)的語法與應(yīng)用如下:arange([start,]stop[,step,],dtype=None)參數(shù)說明:start:0。stop:終止值,不包含。step:步長,默認(rèn)值為1。dtype:創(chuàng)建數(shù)組的數(shù)據(jù)類型,如果不設(shè)置數(shù)據(jù)類型,則使用輸入數(shù)據(jù)的數(shù)據(jù)類型。importnumpyasnpn8=np.arange(1,12,2)print(n8)程序運(yùn)行結(jié)果如下:Eg6:使用linspace函數(shù)創(chuàng)建等差數(shù)列通過linspace函數(shù)創(chuàng)建等差數(shù)列,其語法與應(yīng)用如下:linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)參數(shù)說明:start:序列的起始值。stop:endpointTrue,則該值包含于數(shù)列中。num:要生成的等步長的樣本數(shù)量,默認(rèn)值為50.endpoint:如果值為True,數(shù)列中包含stop參數(shù)的值,反之不包含,默認(rèn)值為True。retstep:True,則生成的數(shù)組中會(huì)顯示間距,反之不顯示。dtype:數(shù)組的數(shù)據(jù)類型。importnumpyasnpn9=np.linspace(500,2500,6)print(n9)程序運(yùn)行結(jié)果如下:Eg7:使用logspace函數(shù)創(chuàng)建等比數(shù)列l(wèi)ogspace函數(shù)語法和應(yīng)用如下:numpy.logspace(start, stop, num=50, endpoint=True, dtype=None)參數(shù)說明:start:序列的起始值。stop:序列的終止值,如果endpoint參數(shù)的值為True,則該值包含于數(shù)列中。num:要生成的等步長的樣本數(shù)量,默認(rèn)值為50。endpoint:如果值為True,數(shù)列中包含stop參數(shù)的值,反之不包含,默認(rèn)值為True。base:對(duì)數(shù)log的底數(shù)。dtype:數(shù)組的數(shù)據(jù)類型。importnumpyasnpn10=np.logspace(0,63,64,base=2,dtype=’int’)print(n10)程序運(yùn)行結(jié)果如下:知識(shí)點(diǎn)3:數(shù)組的基本操作教師通過PPT和代碼演示的方式講解數(shù)組的基本操作,包括切片、索引、運(yùn)算、排序等(1)數(shù)組的索引和切片數(shù)組中第一個(gè)元素的索引為0,numpy數(shù)組可以使用Python語法x[obj]x0開始向右遞增,或者從最右側(cè)向左遞減兩種索引方式。Numpy[start:stop:step]參數(shù)說明:start:起始索引。stop:終止索引,不包含。step:步長。一維數(shù)組的索引和切片Eg8:importnumpyasnpn11=np.array([9,8,7,6,5])print(n11[2])print(n11[1:4:2])print(n11[4:1:-2])print(n11[:-1])程序運(yùn)行結(jié)果如下:表示該數(shù)組索引為2的元素為714結(jié)束(42的元素,即索138651(1,步長為2的元素,5357表示從左向右索引從0遞增到4,步長為-1的元素,即索引為0、1、2、3的元素為9、8、7、6。多維數(shù)組的索引和切片Eg9:importunmpyasnpn12=np.arange(24).reshape((2,3,4))print(n12)程序運(yùn)行結(jié)果為:為了方便大家理解,將三維數(shù)組的示意圖表示如下:axis=0:縱深axis=2:水平12 13 14 150 1 2 316 17 18 19axis=1:垂直 4 5 6 720 21 22 238 9 10 11print(n12[1,2,3])1(2層2(3行3(4列)23。print(n12[0,1,2])0(1層1(2行2(3列)的元素,即為6。print(n12[-1,-2,-3])注意:參數(shù)為負(fù)值時(shí)表示反向索引,反向索引示意圖如下:正向索引: 0 1 2 3 4 5 6 7 8 9反向索引: -10 -9 -8 -7 -6 -5 -4 -3 -2 -1請(qǐng)大家注意,多維數(shù)組的每一個(gè)維度的索引值用逗號(hào)分隔。print(n12[:,1,-3])012301234567891(2行,第三個(gè)維度索引值為3(3列)517。print(n12[:,1:3,13(不包含3,即垂直第2行到第3行)的元素,結(jié)果為上圖。print(n12[:,:,::2])2,結(jié)果如上。請(qǐng)大家注意,和一維數(shù)組一樣,多維數(shù)組的切片也是用冒號(hào)分隔。(2)數(shù)組運(yùn)算數(shù)組的標(biāo)量運(yùn)算。數(shù)組與標(biāo)量之間的運(yùn)算作用于數(shù)組的每一個(gè)元n12計(jì)算它與各個(gè)元素的算數(shù)平均值的商,代碼如下:print(n12/n12.mean())程序運(yùn)行結(jié)果如下:Numpy一元/體函數(shù)和相關(guān)說明如下表所示。Numpy一元函數(shù)Numpy二元函數(shù)下面我們做幾個(gè)例子鞏固一下:Eg10:n12的平方print(np.square(n12))程序運(yùn)行結(jié)果如下:函數(shù)說明函數(shù)說明np.abs(x).fabs(x)計(jì)算數(shù)組各元素的絕對(duì)值np.sqrt(x)計(jì)算數(shù)組各元素的平方根np.square(x)計(jì)算數(shù)組各元素的平方np.log(x)np.log10(x)np.log2(x)計(jì)算數(shù)組各元素的自然對(duì)數(shù)、10底對(duì)數(shù)和2底對(duì)數(shù)np.ceil(x)np.floor(x)計(jì)算數(shù)組各元素的ceiling值或floor值np.rint(x)計(jì)算數(shù)組各元素的四舍五入值np.modf(x)將數(shù)組各元素的小數(shù)和整數(shù)部分以兩個(gè)獨(dú)立數(shù)組形式返回np.cos(x)np.cosh(x)np.sin(x)np.sinh(x)np.tan(x)np.tanh(x)計(jì)算數(shù)組各元素的普通型和雙曲型三角函數(shù)np.exp(x)計(jì)算數(shù)組各元素的指數(shù)值np.sign(x)計(jì)算數(shù)組各元素的符號(hào)值,如1(+),0,-1(-)函數(shù)說明+-*/**兩個(gè)數(shù)組各元素進(jìn)行對(duì)應(yīng)運(yùn)算np.maximum(x,y)np.fmax()np.minimum(x,y)np.fmin()元素級(jí)的最大值、最小值計(jì)算np.mod(x,y)元素級(jí)的模運(yùn)算np.copysign(x,y)將數(shù)組y中各元素值的符號(hào)賦值給數(shù)組x對(duì)應(yīng)元素><>===!=算數(shù)比較,產(chǎn)生布爾型數(shù)組Eg11:計(jì)算數(shù)組n12的平方根print(np.sqrt(n12))程序運(yùn)行結(jié)果如下:Eg12:n12n13元素中的最大值n13=np.sqrt(n12)print(np.maximum(n12,n13))程序運(yùn)行結(jié)果如下(結(jié)果為浮點(diǎn)數(shù):數(shù)組排序數(shù)組排序是對(duì)數(shù)組的元素進(jìn)行排序。sort函數(shù)。sortaxis指定按行排序還是按列排序。Eg13:importnumpyasnpn14=np.array([[4,7,3],[2,8,5],[9,1,6]])print(‘?dāng)?shù)組排序:’)print(np.sort(n14))print(‘按行排序:’)print(np.sort(n14,axis=0))print(‘按列排序:’)print(np.sort(n14,axis=1))程序運(yùn)行結(jié)果為:argsortargsortEg14:importnumpyasnpn15=np.array([4,7,3,2,8,5,1,9,6])print(‘升序排序之后的索引值’)n16=np.argsort(n15)print(n16)print(‘排序后的順序重構(gòu)原數(shù)組’)print(n16[n15])程序運(yùn)行結(jié)果如下:lexsort函數(shù)。用于對(duì)多個(gè)序列進(jìn)行排序,可以把它看做是對(duì)電子lexsort函數(shù)的用法。某班級(jí)錄取學(xué)生按照總成績錄取,但名額優(yōu)先,在總成績相同時(shí),數(shù)學(xué)成績高的的學(xué)生會(huì)被優(yōu)先錄取,lexsort函數(shù)對(duì)學(xué)生成績進(jìn)行排序,代碼如下:Eg15:importnumpyasnpmath=np.array([101,109,115,108,118,118])en=np.array([117,105,118,108,98,109])total=np.array([621,623,620,620,615,615])sort_total=np.lexsort((en,match,total))print(‘排序后的索引值’)print(sort_total)print(‘通過排序后的索引獲取排序后的數(shù)組:’)print(np.array([[en[i],math[i],total[i]]foriinsort_total]))程序運(yùn)行結(jié)果如下:620的兩名同615的兩知識(shí)點(diǎn)4:矩陣的基本操作教師通過PPT和代碼演示的方式講解矩陣的基本操作,包括矩陣創(chuàng)建、轉(zhuǎn)換、求逆、運(yùn)算等。在Numpy中,矩陣是數(shù)組的分支,數(shù)組和矩陣有時(shí)候是通用的,二維數(shù)組也稱為矩陣。(1)矩陣創(chuàng)建用mat函數(shù)創(chuàng)建矩陣,通過以下示例來創(chuàng)建常見的矩陣。注意,mat函數(shù)只適用于二維矩陣,當(dāng)維數(shù)超過2后,mat就不適用了。3*30-1importnumpyasnpn17=np.mat(np.random.rand(3,3))print(n17)程序運(yùn)行結(jié)果如下:Eg17:創(chuàng)建對(duì)角矩陣。代碼如下:importnumpyasnpn18=np.mat(np.eye(2,2,dtype=int))print(n18)n19=np.mat(np.eye(4,4,,dtype=int))print(n19)程序運(yùn)行結(jié)果如下:(2)矩陣運(yùn)算如果兩個(gè)矩陣的大小相同,我們可以用算數(shù)運(yùn)算符+-*/對(duì)矩陣進(jìn)行加、減、乘、除的運(yùn)算。矩陣的加法運(yùn)算Eg18:importnumpyasnon20=np.mat([[1,2],[3,4],[5,6]])n21=np.mat([1,2])print(n20+n21)程序運(yùn)行結(jié)果如下:加法示意圖如下:n201 2

n21

n201 2

n211 2 2 4n20+n21=34+12=34+12=4656561268矩陣的減法、乘法和除法運(yùn)算Eg19:importnumpyasnpn20=np.mat([[1,2],[3,4],[5,6]])n21=np.mat([1,2])print(n20-n21)print(n20/n21)程序運(yùn)行結(jié)果如下:n21是一行,所以導(dǎo)致程序出錯(cuò)。下面修改矩陣并進(jìn)行乘法運(yùn)算,代碼如下:Eg20:importnumpyasnpn20=np.mat([[1,2],[3,4],[5,6]])n22=np.mat([[1,2],[3,4]])print(n20*n22)程序運(yùn)行結(jié)果如下:矩陣相乘是第一個(gè)矩陣中與該元素行號(hào)相同的元素與第二個(gè)矩陣與該元素列號(hào)相同的元素,兩兩相乘后再求和,乘法示意圖如下:n20 n221 2 1 2 1 * 1 + 2 * 3n20*n22=3 4*3 4 = 3 * 1 + 4 * 35 6 5 * 1 + 6 * 31 * 2 + 2 * 4 7 103 * 2 + 4 * 4 = 15225 * 2 + 6 * 4 2334矩陣轉(zhuǎn)換使用T屬性實(shí)現(xiàn)矩陣轉(zhuǎn)置。Eg21:importnumpyasnpn23=np.mat(‘133;456;789’)print(n23)print(‘矩陣轉(zhuǎn)置結(jié)果為:\n’,n23.T)程序運(yùn)行結(jié)果為:矩陣求逆(即矩陣的行列式的值為0I屬性。Eg22:importnumpyasnpn23=np.mat(‘133;456;789’)print(‘矩陣的逆矩陣結(jié)果:\n’,n23.I)程序運(yùn)行結(jié)果如下:知識(shí)點(diǎn)5:Numpy隨機(jī)函數(shù)和常用統(tǒng)計(jì)分析函數(shù)教師通過PPT和代碼演示的方式講解Numpy隨機(jī)函數(shù)和常用統(tǒng)計(jì)分析函數(shù)的用法和說明。(1)隨機(jī)數(shù)函數(shù)Numpy的random子庫有np.random.* np.random.rand()np.random.rand() np.random.randn() np.random.randint()np.random的隨機(jī)數(shù)函數(shù)1函數(shù)說明rand(d0,d1,…,dn)根據(jù)維度的形狀生成隨機(jī)數(shù)數(shù)組,其中每一個(gè)元素是[0,1]之間的浮點(diǎn)數(shù),元素之間均勻分布randn(d0,d1,…,dn)生成n維隨機(jī)數(shù)組,元素符合標(biāo)準(zhǔn)正態(tài)分布randint(low,[,high,shape])在shapeseed(s)隨機(jī)數(shù)種子,s是給定的種子值下面我們看一些具體的例子:Eg23:importnumpyasnpn24=np.random.rand(3,4,5)print(n24)程序運(yùn)行結(jié)果如下:Eg24:importnumpyasnpn25=np.random.randn(3,4,5)print(n25)程序運(yùn)行結(jié)果如下:Eg25:在整數(shù)100到200之間生成3層4維的隨機(jī)數(shù)組importnumpyasnpn26=np.random.randint(100,200,(3,4))print(n26)程序運(yùn)行結(jié)果如下:除了上述的隨機(jī)數(shù)子庫,random還提供了一些具有高級(jí)功能的隨機(jī)數(shù)子庫,如下表。np.random的隨機(jī)數(shù)函數(shù)2下面我們看一些具體的例子比較這些函數(shù)的用法:Eg26:importnumpyasnpn26=np.random.randint(100,200,(3,4))函數(shù)函數(shù)說明shuffle(a)alxpermutation(a)根據(jù)數(shù)組a的第l軸產(chǎn)生一個(gè)新的亂序數(shù)組,不改變數(shù)組xchoice(a[,size,replace,p])apsize認(rèn)為Falseprint(n26)n27=np.random.shuffle(n26)print(n26)n28=np.random.shuffle(n26)print(n26)程序運(yùn)行結(jié)果如下:Eg27:importnumpyasnpn26=np.random.randint(100,200,(3,4))print(n26)n29=np.random.permutation(n26)print(n29)print(n26)程序運(yùn)行結(jié)果如下:結(jié)合這兩個(gè)例子可以發(fā)現(xiàn),shuffle函數(shù)使原數(shù)組發(fā)生了變化,而permutation函數(shù)并沒有使原數(shù)組改變。Eg28:importnumpyasnpn30=np.random.randint(100,200,(8,))print(n30)n31=np.random.choice(n30,(3,2))print(n31)n32=np.random.choice(n30,(3,2),replace=False)print(n32)n33=np.random.choice(n30,(3,2),p=n30/np.sum(n30))print(n33)程序運(yùn)行結(jié)果如下:從上面的結(jié)果可以看到,choice函數(shù)生成的隨機(jī)數(shù)組中有元素被重replaceFalse,運(yùn)行出來的結(jié)果就沒有重復(fù)出p為每一個(gè)元素賦值一個(gè)抽取的概p=n30/np.sum(n30),也就是說,元素的值越大,它被抽取的概率越高。random函數(shù),Numpyrandom還提供了帶有分布的函數(shù),如下表:np.random的隨機(jī)數(shù)函數(shù)3下面我們看具體的例子:Eg29:importnumpyasnpn34=np.random.uniform(0,10,(3,4))print(n34)程序運(yùn)行結(jié)果為:函數(shù)函數(shù)說明uniform(low,high,size)產(chǎn)生元素能夠均勻分布的數(shù)組類型,low指定起始值,high指定結(jié)束值,size為新生成數(shù)組的形狀normal(loc,scale,size)產(chǎn)生元素為正態(tài)分布的數(shù)組,loc為均值,scale為標(biāo)準(zhǔn)值,size為數(shù)組形狀poisson(lam,size)產(chǎn)生元素為泊松分布的數(shù)組,lam為隨機(jī)事件發(fā)生率,size為數(shù)組的形狀Eg30:importnumpyasnpn35=np.random.normal(10,5,(3,4))print(n35)程序運(yùn)行結(jié)果如下:(2)統(tǒng)計(jì)函數(shù)統(tǒng)計(jì)函數(shù)就是對(duì)Numpy中的數(shù)組進(jìn)行統(tǒng)計(jì)分析的函數(shù),下面我們看Numpy提供的常用的統(tǒng)計(jì)函數(shù)有哪些。np.random的統(tǒng)計(jì)函數(shù)1函數(shù)說明sum(a,axis=None)根據(jù)給定軸axis計(jì)算數(shù)組a相關(guān)元素之和,axis整數(shù)或元素mean(a,axis=None)axisa,aisaverage(a,axis=None,weights=None)根據(jù)給定軸axis計(jì)算數(shù)組a相關(guān)元素的加權(quán)平均值std(a,axis=None)根據(jù)給定軸axis計(jì)算數(shù)組a相關(guān)元素的標(biāo)準(zhǔn)差var(a,axis=None)根據(jù)給定軸axis計(jì)算數(shù)組a相關(guān)元素的方差其中,axis=None是統(tǒng)計(jì)函數(shù)的標(biāo)配參數(shù),不指定軸的話就是對(duì)所有軸進(jìn)行統(tǒng)計(jì)分析。我們我們看一些例子。Eg31:importnumpyasnpn36=np.arange(15).reshape(3,5)print(n36)n37=np.sum(n36)print(n37)n38=np.mean(n36,axis=1)print(n38)n39=np.mean(n36,axis=0)print(n39)n40=np.average(n36,axis=0,weights=[10,5,1])print(n40)n41=np.std(n36)print(n41)n42=np.var(n36)print(n36)程序運(yùn)行結(jié)果如下:這里注意區(qū)分軸。np.random的統(tǒng)計(jì)函數(shù)2下面我們繼續(xù)看一些例子。Eg32:n43=np.arange(15,0,-1).reshape(3,5)print(n43)n44=np.max(n43)print(n44)n45=np.argmax(n43)print(n45)n46=np.unravel_index(np.argmax(n43),n43.shape)print(n46)n47=np.ptp(n43)函數(shù)函數(shù)說明min(a) max(a)計(jì)算數(shù)組a中元素的最小值、最大值argmin(a)argmax(a)a(扁平化后的下標(biāo))unravel_index(index,shape)shapeindex(維下標(biāo))ptp(a)計(jì)算數(shù)組a中元素最大值與最小值的差median(a)計(jì)算數(shù)組a中元素的中位數(shù)(中值,結(jié)果為浮點(diǎn)數(shù))print(n47)n48=np.median(n43)print(n48)程序運(yùn)行結(jié)果為:知識(shí)點(diǎn)6:圖像的數(shù)組表示和變換教師通過PPT和代碼演示的方式講解圖像的數(shù)組表示方法。RB(R(256RGB形成的顏色包括RGB色彩。PythonPIL(PythonImage這個(gè)AnacondaIDE的話,這個(gè)庫已pipinstallpillowPILpillow,但是我們PIL。在PIL庫中,可以使用fromPILimportImage來引入一個(gè)圖像的類(Image),ImagePILImage對(duì)象代表了一個(gè)圖像,下面我們看圖像的數(shù)組表示。圖像是一個(gè)由像素組成的二維矩陣,每個(gè)元素是一個(gè)RGB值。通過PILImageEg33:fromPILimportImageimportnumpyasnpim1=np.array(Image.open(“C:/Users/lenovo/wanankuangda.jpg”))print(im1.shape,im1.dtype)程序運(yùn)行結(jié)果為:RGBRGB值上有三個(gè)元素,R、G、B分別由一個(gè)uint8類型來表示。RGB值的數(shù)Eg34:fromPILimportImageimportnumpyasnpim2=np.array(Image.open(“C:/Users/lenovo/wanankuangda.jpg”))print(im2.shape,im2.dtype)im3=[255,255,255]-im2im4=Image.fromarray(im3.astype(‘uint8‘))im4.save(“C:/Users/lenovo/wanankuangdahb.jpg“)程序運(yùn)行結(jié)果如下:圖像由上述左圖變?yōu)橛覉D。Eg35:fromPILimportImageimportnumpyasnpim5=np.array(Image.open(“C:/Users/lenovo/wanankuangda.jpg”).conver#將一個(gè)彩色的圖片變?yōu)橐粋€(gè)灰度的圖片im6=255-im5 #對(duì)灰度值取反im7=Image.fromarray(im6.astype(‘uint8’)) #還原回圖像的類型im7.save(“C:/Users/lenovo/wanankuangda3.jpg“)程序運(yùn)行結(jié)果如下:產(chǎn)生的圖片由左邊彩色的圖變?yōu)橛疫吇叶葓D。Eg36:fromPILimportImageim5=np.array(Image.open(“C:/Users/lenovo/wanankuangda.jpg”).conver#將一個(gè)彩色的圖片變?yōu)橐粋€(gè)灰度的圖片im7=(100/255)*im5+150 #區(qū)間轉(zhuǎn)換im8=Image.fromarray(im7.astype(‘uint8’)) #還原回圖像的類型im8.save(“C:/Users/lenovo/wanankuangda4.jpg“)程序運(yùn)行結(jié)果如下:Eg37:fromPILimportImageim5=np.array(Image.open("C:/Users/lenovo/wanankuangda.jpg").convert('L'))im9=255*(im5/255)**2 #像素平方im10=Image.fromarray(im9.astype('uint8'))程序運(yùn)行結(jié)果如下:三、 歸納總結(jié)教師回顧本節(jié)課所講的內(nèi)容和知識(shí)點(diǎn),包括數(shù)組概念、屬性和創(chuàng)建、數(shù)組的基本操作(切片、索引、運(yùn)算、矩陣的基本操作(創(chuàng)建、轉(zhuǎn)換、Numpy四、布置作業(yè)務(wù)。教學(xué)方式課堂教學(xué)以教師PPT講授、視頻演示、流程圖展示、代碼編寫操作演示等方式進(jìn)行教學(xué)主要參考資料①《PythonPython《大數(shù)據(jù)分析技術(shù)》課程教案授課內(nèi)容第三章Matplotlib與可視化計(jì)劃課時(shí)4教學(xué)目的與要求使學(xué)生熟悉可視化元素的基本概念使學(xué)生掌握二維圖繪制的基本做法和要求使學(xué)生掌握三維圖繪制的基本做法和要求matplotlib重點(diǎn)難點(diǎn)matplotlib二維圖和三維圖繪制的要點(diǎn)和技巧教學(xué)進(jìn)程安排授課內(nèi)容:matplotlib庫介紹matplotlibplotmatplotlib二維基礎(chǔ)繪圖函數(shù)講解matplotlib庫中的基礎(chǔ)繪圖函數(shù),包括餅圖、直方圖、極坐標(biāo)、散點(diǎn)圖的繪制等。三維圖可視化的應(yīng)用練習(xí)三維圖的繪制。一、 復(fù)習(xí)鞏固和課程導(dǎo)入Numpy庫中數(shù)組的創(chuàng)建、切片、matplotlib二、 新課講解知識(shí)點(diǎn)1:matplotlib庫簡介和plot函數(shù)用法教師通過PPT和代碼演示的方式講解matplotlib庫的相關(guān)概念和plot函數(shù)的使用。matplotlib庫簡介和安裝MatplotlibPythonMatplotlib支持超過100種的可視化效果,功能十分強(qiáng)大。在命令行的方式下使用pipinstallmatplotlibplot函數(shù)的使用Matplotlibmatlab的啟發(fā)。matplotlib.pyplotimportmatplotlib.pyplotasplt其中,plt為模塊的別名。接下來通過一個(gè)小例子展示如何使用plot函數(shù)進(jìn)行繪圖。Eg1:importmatplotlib.pyplotaspltplt.plot([3,1,4,5,2])plt.ylabel(“Grade”)plt.show()程序運(yùn)行結(jié)果如下:如果要將繪制出的圖形保存下來,并且指定圖片的質(zhì)量,需要加下面一行代碼:plt.savefig(‘test’,dpi=600)plt.savefig()PNGdpi修改輸出質(zhì)量。也可以通過plt.plot(x,y)繪制兩個(gè)列表的圖形,即當(dāng)有兩個(gè)以上參數(shù)時(shí),按照X軸和Y軸順序繪制數(shù)據(jù)點(diǎn)。Eg2:importmatplotlib.pyplotaspltplt.plot([0,2,4,6,8],[3,1,4,5,2])plt.ylabel(“Grade”)plt.axis([-1,10,0,6])plt.show()程序運(yùn)行結(jié)果如下:其中,plt.axis()函數(shù)是設(shè)定橫縱坐標(biāo)尺度的函數(shù),參數(shù)是具有四個(gè)變xy軸的起始坐標(biāo)和終止坐標(biāo)。plot()函數(shù)語法plt.plot(x,y,format_string,**kwargs)參數(shù)說明:x:X軸數(shù)據(jù),列表或數(shù)組,可選y:Y軸數(shù)據(jù),列表或數(shù)組。format_string:format_string顏色字符顏色字符 說明 顏色字符 說明‘b’ 藍(lán)色 ‘m’ 洋紅色‘g’ 綠色 ‘y’ 黃色‘r’ 紅色 ‘k’ 黑色‘c’ 青綠色 ‘w’ 白色‘#008000’ RGB某顏色 ‘0.8’ 灰度值符串format_string風(fēng)格字符風(fēng)格字符說明‘-’實(shí)線‘--’破折線‘-.’點(diǎn)劃線‘’虛線‘‘’無線條format-string標(biāo)記字符標(biāo)記 標(biāo)記 標(biāo)記字說明 說明 說明字符 字符 符‘.’ 點(diǎn)標(biāo)記 ‘1’ 下花三標(biāo)記 ‘h’ 豎六邊標(biāo)記像素標(biāo)記‘’ ‘2’ 上花三標(biāo)記 ‘’ 橫六邊標(biāo)記(極小點(diǎn))‘’ 實(shí)心圈記 ‘3’ 左花三標(biāo)記 ‘+’ 十字標(biāo)記‘v’ 倒三角記 ‘4’ 右花三標(biāo)記 ‘x’ x標(biāo)記‘^’ 上三角記 ‘s’ 實(shí)心方標(biāo)記 ‘D’ 菱形標(biāo)記‘>’ 右三角記 ‘p’ 實(shí)心五標(biāo)記 ‘d’ 瘦菱形記‘<’ 左三角記 ‘*’ 星形標(biāo)記 ‘l’ 垂直線記color:控制顏色,color=’green’linestyle:線條風(fēng)格,linestyle=’dashed’marker:標(biāo)記風(fēng)格,marker=’o’markerfacecolor:標(biāo)記顏色,markerfacecolor=’blue’markersize:標(biāo)記尺度,markersize=20**kwgs:第二組或更多(x,,fomat_strinx不能省略。Eg3:importnumpyasnpimportmatplotlib.pyplotasplta=np.arange(10)plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)plt.show()程序運(yùn)行結(jié)果如下:Eg4:importmatplotlib.pyplotaspltimportnumpyasnpa=np.arange(10)plt.plot(a,a*1.5,’go-’,a,a*2.5,’rx’,a,a*3.5,’*’,a,a*4.5,’b-.’)plt.show()程序運(yùn)行結(jié)果為:pyplot的中文顯示方法一:pyplot并不默認(rèn)支持中文顯示,需要rcParams修改字體實(shí)現(xiàn)。rcParams的屬性如下:reParams[‘font.family’]中文字體包括:‘SimHei’中文黑’Kaiti’’Lisu’’Fangsong’中屬性屬性說明‘font.family’用于顯示字體的名字,例如’SimHei’是黑體‘font.style’字體風(fēng)格,正?!痭ormal’或斜體‘italic’‘font.size’字體大小,整數(shù)字號(hào)或者’large’、’x-small’文幼圓、’STSong’華文宋體。使用該方法將圖中的中文、英文字體及字號(hào)都設(shè)置為一致的。Eg5:importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlibmatplotlib.rcParams[‘font.family’]=’STSong’matplotlib.rcParams[‘font.size’]=20a=np.arange(0,5,0.02)plt.xlabel(‘橫軸:時(shí)間’)plt.ylabel(‘縱軸:振幅’)plt.plot(a,np.cos(2*np.pi*a),’r--’)plt.show()程序運(yùn)行結(jié)果為:方法二:在有中文輸出的地方,增加一個(gè)屬性:fontproperties,建議使用第二種方法。Eg6:importnumpyasnpimportmatplotlib.pyplotasplta=np.arange(0,5,0.02)plt.xlabel(‘橫軸:時(shí)間’,fontproperties=’SimHei’,fontsize=20)plt.ylabel(‘縱軸:振幅’,fontproperties=’SimHei’,fontsize=20)plt.plot(a,np.cos(2*np.pi*a),’r--’)plt.show()程序運(yùn)行結(jié)果如下:pyplot的文本顯示函數(shù)pyplot的文本顯示函數(shù)函數(shù)說明plt.xlabel()對(duì)x軸增加文本標(biāo)簽plt.ylabel()對(duì)y軸增加文本標(biāo)簽plt.title()對(duì)圖形整體增加文本標(biāo)簽plt.text()對(duì)任意位置增加本文plt.annotate()在圖形中增加帶箭頭的注解plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)參數(shù)說明:s:要注解的字符串xy:箭頭所在的位置xytext:文本顯示的位置arrowprops:字典類型。Eg7:importnumpyasnpimportmatplotlib.pyplotasplta=np.arange(0,5,0.02)plt.plot(a,np.cos(2*np.pi*a),’r--’)plt.xlabel(‘橫軸:時(shí)間’,fontproperties=’SimHei’,fontsize=15,color=’green’)plt.ylabel(‘縱軸:時(shí)間’,fontproperties=’SimHei’,fontsize=15)plt.title(r’正弦波實(shí)例$y=cos(2\pi x)$’,fontproperties=’SimHei’,fontsize=25) #Latex格式plt.annotate(r’$\mu=100$’,xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor=’black’,shrink=0.1,width=2)) #shrink為箭頭兩側(cè)為空白plt.axis([-1,6,-2,2])plt.grid(True) #加入網(wǎng)格曲線plt.show()程序運(yùn)行結(jié)果為:plot繪圖區(qū)域(在一個(gè)區(qū)域里繪制兩個(gè)及兩個(gè)以上的圖形),使用plt.subplot()函數(shù)分割繪圖區(qū)域,語法如下:plt.subplot(nrows,ncols,plot_number)plt.subplot()nrows作為橫軸數(shù)量,ncolsplot_number是當(dāng)前所處的區(qū)域。例如plt.subplot(3,2,4)(或者把逗號(hào)去掉,表示為plt.subplot(324))將繪制區(qū)域分割為3個(gè)橫軸兩個(gè)縱軸,共6塊,如下圖分布:ncols 在全局繪圖區(qū)域中創(chuàng)建一個(gè)分區(qū)體系,并定位到一個(gè)子繪圖區(qū)域。Eg8:importnumpyasnpimportmatplotlib.pyplotaspltdeff(t):子區(qū)域1子區(qū)域2子區(qū)域3當(dāng)前繪圖區(qū)域子區(qū)域1子區(qū)域2子區(qū)域3當(dāng)前繪圖區(qū)域子區(qū)域5子區(qū)域6returnnp.exp(-t)*np.cos(2*np.pi*t)a=np.arange(0,5,0.02)plt.subplot(211)plt.plot(a,f(a))plt.subplot(212)plt.plot(a,np.cos(2*np.pi*t2),’r--’)plt.show()如果是在復(fù)雜的多個(gè)區(qū)域內(nèi)繪圖,可以用plt.subplot2grid()函數(shù),語法如下:plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)基本理念是:設(shè)定網(wǎng)格數(shù)量,選中網(wǎng)格,確定選中行列區(qū)域數(shù)量,編號(hào)從0開始。例如,plt.subplot2grid((3,3),(1,0),colspan=2),就是選中下圖中黃色區(qū)域進(jìn)行繪圖。0 1 2012subplot2gridsubplotGridSpec實(shí)現(xiàn)相同的功能。這里也需要給定一段代碼來指定復(fù)雜的區(qū)域:Eg9:importmatplotlib.gridspecasgridspecgs=gridspec.GridSpec(3,3)a1=plt.subplot(gs[0,:]) #0行的所有列a2=plt.subplot(gs[1,:-1])a3=plt.subplot(gs[1:,-1])a4=plt.subplot([2,0])a5=plt.subplot(gs[2,1])知識(shí)點(diǎn)2:pyplot二維基礎(chǔ)圖表函數(shù)PPTpyplot的基礎(chǔ)圖表函數(shù),包括餅圖、直方圖、極坐標(biāo)、散點(diǎn)圖等(1)pyplot基礎(chǔ)圖表函數(shù)介紹pyplot的基礎(chǔ)圖表函數(shù)(2)餅圖繪制餅圖用于表示不同分類的占比情況,通過弧度大小來對(duì)比各種分類。一般是將一個(gè)圓餅按照分類的占比劃分成多個(gè)區(qū)域,整個(gè)圓餅代表數(shù)據(jù)的總量,每個(gè)區(qū)塊表示該分類占總體的比例大小。語法如下:plt.pie(x,explode,labels,colors,autopct,pctdistance,shadow,labeldistance,sold,data)參數(shù)說明:x:sum(x)>1sum(x)進(jìn)行歸一化。labels:每一塊餅圖外側(cè)顯示的說明文字。explode:每一塊餅圖離中心的距離。函數(shù)函數(shù)說明plt.plot(x,y,fmt,…)繪制一個(gè)坐標(biāo)圖plt.boxplot(data,notch,position)繪制一個(gè)箱型圖plt.bar(left,height,width,bottom)繪制一個(gè)條形圖plt.barh(width,bottom,left,height)繪制一個(gè)橫向條形圖plt.polar(theta,r)繪制極坐標(biāo)圖plt.pie(data,explode)繪制餅圖plt.psd(x,NFFT=256,pad_to,Fs)繪制功率譜密度圖plt.specgram(x,NFFT=256,pad_to,F)繪制譜圖plt.cohere(x,y,NFFT=256,Fs)繪制X-Y的相關(guān)性函數(shù)plt.scatter(x,y)繪制散點(diǎn)圖,其中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ù)日期startangle:起始繪制角度,默認(rèn)是從x軸正方向逆時(shí)針畫起,如設(shè)置值為90,則從y軸正方向畫起。shadow:False,即不畫陰影。labeldistance:標(biāo)記的繪制位置,相對(duì)于半徑的比例,默認(rèn)值為1.1,如<1,則繪制在餅圖內(nèi)側(cè)。autopct:format函數(shù),如’%1.1f’保留小數(shù)點(diǎn)后一位。pctdistance:類似于labeldistance參數(shù),指定百分比的位置刻度,默認(rèn)值為0.6。radius:餅圖半徑,默認(rèn)值為1。counterclock:True,表False,表示順時(shí)針。wedgeprops:None。textprops:設(shè)置標(biāo)簽和比例文字的格式,字典類型,可選參數(shù),默認(rèn)None。center:浮點(diǎn)類型的列表,可選參數(shù),默認(rèn)值為(0,0),表示圖表中心位置。me:Flse,不顯示軸框架(網(wǎng)格;如果值為Truegrid函數(shù)配合使用。建議使用默認(rèn)設(shè)置。rotatelabels:FalseTrue,則旋轉(zhuǎn)每個(gè)標(biāo)簽到指定的角度。Eg10:importmatplotlib.pyplotaspltlabels=’Frogs’,‘Hogs’,‘Dogs’,‘Logs’sizes=[15,30,45,10]explode=(0,0.1,0,0)plt.pie(sizes,explode=explode,labels=labels,autopct=’%1.1f%%’,shadow=False,startangle=90)plt.show()程序運(yùn)行結(jié)果為:(3)直方圖的繪制直方圖是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)的分布情況,一般用橫軸表示數(shù)據(jù)類型,縱軸表示數(shù)據(jù)的分布情況。語法如下:plt.hist(x,bins=None,range=None,density=None,bottom=None,histtype=’bar’,align=’mid’,color=None,label=None,stacked=False,normed=None)參數(shù)說明:x:數(shù)據(jù)集,最終的直方圖將對(duì)數(shù)據(jù)集進(jìn)行統(tǒng)計(jì)。bins:統(tǒng)計(jì)數(shù)據(jù)的區(qū)間分布(表示直方圖的個(gè)數(shù)。range:元組類型,顯示的區(qū)間。densityNone。設(shè)置值為False不顯示頻率統(tǒng)計(jì)結(jié)果;設(shè)置值為True則顯示頻率統(tǒng)計(jì)結(jié)果。頻率統(tǒng)計(jì)結(jié)果=區(qū)間數(shù)目/(總數(shù)*區(qū)間寬度)。histtype:可選參數(shù),設(shè)置值為bar、barstacked、step或stepfilled,默認(rèn)值為bar,推薦使用默認(rèn)值,step使用的是梯狀,stepfilled則對(duì)梯狀內(nèi)部進(jìn)行填充,效果與bar參數(shù)類似。alignleft、midrightmid,控制柱狀圖的水平分布,leftright,會(huì)有部分空白區(qū)域,推薦使用默認(rèn)值。log:布爾型,默認(rèn)值為False,即y坐標(biāo)軸是否選擇指數(shù)刻度。stacked:布爾型,默認(rèn)值為False,是否為堆積狀圖。10表示每個(gè)分組數(shù)據(jù)出現(xiàn)的個(gè)數(shù)。Eg11:importnumpyasnpimportmatplotlib.pyplotaspltnp.random.seed(0)mu,sigma=100,20a=np.random.normal(mu,sigma,size=100)plt.title(‘Histogram’) #添加標(biāo)題plt.show()程序運(yùn)行結(jié)果為:(4)極坐標(biāo)圖的繪制極坐標(biāo)圖是在平面內(nèi)由極坐標(biāo)系描述的曲線方程圖,由極點(diǎn)、極軸、極徑構(gòu)成,用于對(duì)多維數(shù)組進(jìn)行直接對(duì)比分析。Eg12:importnumpyasnpimportmatplotlib.pyplotaspltN=20theta=np.linspace(0,2*np.pi,N,endpoint=False)radii=10*np.random.rand(N)width=np.pi/4*np.random.rand(N)ax=plt.subplot(111,projection=’polar’)bars=ax.bar(theta,radii,width=width,bottom=0)forr,barinzip(radii,bars):bar.set_facecolor(plt.cm.viridis(r/10.))bar.set_alpha(0.5)plt.show()程序運(yùn)行結(jié)果為:theta,radii,widthleft,height,widthleft為極坐標(biāo)圖中為繪圖區(qū)域角度范圍內(nèi)輻射的面積。極坐標(biāo)圖是角度范圍內(nèi)展示數(shù)據(jù)的類型,但不太常用,學(xué)生了解即可。(5)散點(diǎn)圖的繪制散點(diǎn)圖在回歸分析中使用比較多,將序列顯示為一組點(diǎn),查看數(shù)據(jù)點(diǎn)在坐標(biāo)系平面上的分布情況,通常用于比較跨類別的聚合數(shù)據(jù)。與折線圖相比,散點(diǎn)圖不會(huì)將各個(gè)點(diǎn)之間按照前后關(guān)系用線條連接起來。語法如下:plt.scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors參數(shù)說明:x,y:數(shù)據(jù)。s:標(biāo)記大小,用平方磅為單位的標(biāo)記面積。c:標(biāo)記顏色,可選參數(shù),默認(rèn)為藍(lán)色。marker:標(biāo)記樣式,可選參數(shù),默認(rèn)為’?!?cmap:顏色地圖,可選參數(shù)。norm:可選參數(shù)。vmin,vmax:標(biāo)量,可選。alpha:表示透明度,可選參數(shù),0~1之間的數(shù)。linewidths:線寬,標(biāo)記邊緣的寬度,可選參數(shù)。vrts(x,y)maker,這些頂點(diǎn)將用于構(gòu)建標(biāo)記,標(biāo)記的中心位于在(0,0)為標(biāo)準(zhǔn)化單位,整體標(biāo)記重新s完成。edgecolors:輪廓顏色,和參數(shù)c類似,可選參數(shù),默認(rèn)為None。data:關(guān)鍵字參數(shù),如果給定一個(gè)數(shù)據(jù)參數(shù),所有的位置和關(guān)鍵字參數(shù)將被替換。**kwargs:關(guān)鍵字參數(shù),其他可選參數(shù)。Eg13:importnumpyasnpimportmatplotlib.pyplotaspltfig,ax=plt.subplots()ax.plot(10*np.random.randn(100),10*np.random.randn(100),’o’)ax.set_title(‘SimpleScatter’)plt.show()程序運(yùn)行結(jié)果為:(6)箱形圖的繪制plt.boxplot(x,notch=None,sym=None,vert=None,whis=None,position=None,widths=None,patch_artist=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None)參數(shù)說明:x:制定要繪制箱形圖的數(shù)據(jù)。notch:是否以凹口的形式展現(xiàn)箱形圖,默認(rèn)非凹口。sym:指定異常點(diǎn)的形狀,默認(rèn)為(+)顯示。vert:是否需要將箱形圖垂直擺放,默認(rèn)垂直擺放。whis1.5倍的四分位差。positions[0,1,2…]。widths:指定箱形圖的寬度,默認(rèn)為0.5。patch_artist:是否填充箱體的顏色。meanline:是否用線的形式表示均值,默認(rèn)用點(diǎn)來表示。showmeans:是否顯示均值,默認(rèn)不顯示。showcaps:是否顯示箱形圖頂端和末端的兩條線,默認(rèn)顯示。showbox:是否顯示箱形圖的箱體,默認(rèn)顯示。showfliers:是否顯示異常值,默認(rèn)顯示。boxprops:設(shè)置箱體的屬性,如邊框色、填充色等。labels:為箱形圖添加標(biāo)簽,類似于圖例的作用。fileprops:設(shè)置異常值的屬性,如異常點(diǎn)的形狀、大小、填充色等。medianprops:設(shè)置中位數(shù)的屬性,如線的類型、粗細(xì)等。meanprops:設(shè)置均值的屬性,如點(diǎn)的大小、顏色等。capprops:設(shè)置箱形圖頂端和末端線條的屬性,如顏色、粗細(xì)等。whiskerprops:設(shè)置必須的屬性,如顏色、粗細(xì)、線的類型等。Eg14:importmatplotlib.pyplotaspltx1=[1,2,3,5,7,9]x2=[10,22,13,15,8,19]x3=[18,31,18,19,14,29]plt.boxplot([x1,x2,x3])plt.show()程序運(yùn)行結(jié)果為:箱形圖每部分的含義如下:上限上四分位數(shù)中位數(shù)下四分位數(shù)下限(7)面積圖的繪制plt.stckplot(x,*args,data=None,**kwargs)參數(shù)說明:x:x軸數(shù)據(jù)。*args:當(dāng)傳入的參數(shù)個(gè)數(shù)未知時(shí),使用*args。這里指y軸數(shù)據(jù)中可以傳入多個(gè)y軸。data:data關(guān)鍵字參數(shù)。如果給定一個(gè)數(shù)據(jù)參數(shù),所有位置和關(guān)鍵字參數(shù)都將被替換。**kwargs:關(guān)鍵字參數(shù),其他可選參數(shù),如color(顏色)、alpha(透明度)等。Eg15:importmatplotlib.pyplotaspltx=[1,2,3,4,5]y1=[6,9,5,8,4]y2=[3,2,5,4,3]y3=[8,7,8,4,3]y4=[7,4,6,7,12]plt.stackplot(x,y1,y2,y3,y4,colors=[‘g’,’c’,’r’,’b’])plt.show()程序運(yùn)行結(jié)果為:(8)折線圖的繪制知識(shí)點(diǎn)3:三維圖可視化的應(yīng)用教師通過PPT和代碼演示的方式講解三維圖的繪制要求和應(yīng)用。繪制3D圖表需要安裝mpl_toolkits工具包,安裝命令如下:pipinstall–upgradematplotib。然后,使用下面的語句導(dǎo)入相應(yīng)的對(duì)象:frommpl_toolkits.mplot3dimportAxes3D,axplot()方法繪制三維曲線、plot_surface()方法繪制三維曲面、scatter()方法繪制三維散點(diǎn)圖或bar3d()方法繪制三維柱狀圖了。Eg16:importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3d.axes3dimportAxes3Dimportnumpyasnpfig=plt.figure()axes3d=Axes3D(fig)zs=[1,5,10,15,20]forzinzsx=np.arange(0,10)y=np.random.randint(0,30,size=10)axes3d.bar(x,y,zs=z,zdir=’x’,color=[‘r’,’green’,’yellow’,’c’])plt.show()Eg17: importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3d.axes3dimportAxes3Dimportnumpyasnpfig=plt.figure()axes3d=Axes3D(fig)x=np.arange(-4,4,0.125)y=np.arange(-3,3,0.125)x,y=np.meshgrid(x,y)z1=np.exp(-x**2-y**2)z2=np.exp(-(x-1)**2-(y-1)**2)z=(z1-z2)*2axes3d.plot_surface(x,y,z,cmap=plt.get_cmap(‘rainbow’))plt.show()Eg18:importnumpyasnpimportmatplotlib.pyplotaspltimportmpl_toolkits.mplot3dfig=plt.figure(figsize=(10,10))ax=fig.add_subplot(projection=’3d’)x=np.random.randint(0,40,20)y=np.random.randint(0,40,20)z=80*abs(np.sin(x+y))forxx,yy,zzinzip(x,y,z):color=np.random.random(3)ax.bar3d(xx,yy,0,dx=1,dy=1,dz=zz,color=color)ax.set_xlabel(‘X’)ax.set_ylabel(‘Y’)ax.set_zlabel(‘Z’)plt.show()程序運(yùn)行結(jié)果為:Eg19:importma

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論