![Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第1頁(yè)](http://file4.renrendoc.com/view12/M0A/37/04/wKhkGWdOtceAOhPVAACaavzriFU677.jpg)
![Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第2頁(yè)](http://file4.renrendoc.com/view12/M0A/37/04/wKhkGWdOtceAOhPVAACaavzriFU6772.jpg)
![Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第3頁(yè)](http://file4.renrendoc.com/view12/M0A/37/04/wKhkGWdOtceAOhPVAACaavzriFU6773.jpg)
![Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第4頁(yè)](http://file4.renrendoc.com/view12/M0A/37/04/wKhkGWdOtceAOhPVAACaavzriFU6774.jpg)
![Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第5頁(yè)](http://file4.renrendoc.com/view12/M0A/37/04/wKhkGWdOtceAOhPVAACaavzriFU6775.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第
12
章
第三方庫(kù)應(yīng)用編程XXXX
大學(xué)XX
學(xué)院XXX
教授2學(xué)習(xí)目標(biāo):了解各個(gè)應(yīng)用領(lǐng)域的第三方庫(kù)掌握第三方庫(kù)之?dāng)?shù)據(jù)分析庫(kù)NumPy
和Pandas
的應(yīng)用編程掌握第三方庫(kù)之?dāng)?shù)據(jù)可視化庫(kù)Matplotlib
的應(yīng)用編程掌握第三方庫(kù)之文本分析庫(kù)jieba
和詞云庫(kù)wordcloud
的應(yīng)用編程思政內(nèi)涵:利用第三方庫(kù)解決實(shí)際問(wèn)題是Python
開(kāi)放生態(tài)的巨大優(yōu)勢(shì)。廣大學(xué)子要善于兼容并蓄,樹(shù)立海納百川的開(kāi)放精神。第
12
章
第三方庫(kù)應(yīng)用編程312.1 概述隨著開(kāi)源運(yùn)動(dòng)的興起,一批開(kāi)源項(xiàng)目誕生,降低了編寫(xiě)程序的難度,實(shí)現(xiàn)了專業(yè)級(jí)別的代碼復(fù)用。開(kāi)源運(yùn)動(dòng)的深入發(fā)展,使得許多專業(yè)人士開(kāi)始貢獻(xiàn)各領(lǐng)域優(yōu)秀的研究和開(kāi)發(fā)成果,并通過(guò)開(kāi)源庫(kù)的形式發(fā)布出來(lái),形成了龐大的編程計(jì)算生態(tài)。Python
語(yǔ)言能夠?qū)⒉煌Z(yǔ)言、不同特點(diǎn)、不同使用方式的代碼統(tǒng)一起來(lái)。Python
語(yǔ)言從誕生之初就致力于開(kāi)源開(kāi)放,建立起了全球最大的編程計(jì)算生態(tài)。Python
語(yǔ)言擁有十幾萬(wàn)個(gè)第三方庫(kù),它們的基本信息都可以通過(guò)
Python官方網(wǎng)站或GitHub
網(wǎng)站搜索到。這些庫(kù)幾乎覆蓋了信息技術(shù)的所有領(lǐng)域。第三方庫(kù)常用的應(yīng)用領(lǐng)域有網(wǎng)絡(luò)爬蟲(chóng)、數(shù)據(jù)分析、數(shù)據(jù)可視化、自然語(yǔ)言處理、辦公自動(dòng)化、音視頻處理、圖像處理、圖形藝術(shù)等。當(dāng)然,一個(gè)人不可能熟悉所有的庫(kù),只需要記住其名稱即可。在解決某一領(lǐng)域的問(wèn)題時(shí),再進(jìn)行深入研4究。1.
網(wǎng)絡(luò)爬蟲(chóng)用于爬取網(wǎng)絡(luò)數(shù)據(jù)的常用庫(kù)如表
12-1
所示。表
12-1 網(wǎng)絡(luò)爬蟲(chóng)常用庫(kù)庫(kù)名功能描述requests網(wǎng)絡(luò)請(qǐng)求庫(kù),提供多種網(wǎng)絡(luò)請(qǐng)求方法并可定義復(fù)雜的發(fā)送信息BeautifulSoup網(wǎng)頁(yè)數(shù)據(jù)解析和格式化處理工具,通常配合
Python
的urllib、urllib2
等庫(kù)一起使用Scapy分布式爬蟲(chóng)框架,可用于模擬用戶發(fā)送、偵聽(tīng)和解析網(wǎng)絡(luò)報(bào)文,常用于大型網(wǎng)絡(luò)數(shù)據(jù)爬取Pyspider爬蟲(chóng)系統(tǒng)python-gooseHTML
內(nèi)容/文章提取器第
12
章
第三方庫(kù)應(yīng)用編程52.
數(shù)據(jù)分析用于進(jìn)行數(shù)據(jù)計(jì)算和分析的常用庫(kù)如表
12-2
所示。表
12-2 數(shù)據(jù)分析常用庫(kù)庫(kù)名功能描述NumPy使用Python
進(jìn)行科學(xué)計(jì)算的基礎(chǔ)包SciPy用于進(jìn)行數(shù)學(xué)、科學(xué)和工程計(jì)算的
Python
開(kāi)源庫(kù)生態(tài)系統(tǒng)Pandas提供高性能、易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具3.
統(tǒng)計(jì)分析用于進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析的常用庫(kù)如表
12-3
所示。表
12-3 統(tǒng)計(jì)分析常用庫(kù)庫(kù)名
功能描述6statsmodels是一個(gè)Python
庫(kù),用于擬合多種統(tǒng)計(jì)模型、執(zhí)行統(tǒng)計(jì)測(cè)試,以及進(jìn)行數(shù)據(jù)探索和可視化,包含更多的“經(jīng)典”頻率學(xué)派統(tǒng)計(jì)方法,而貝葉斯方法和機(jī)器學(xué)習(xí)模型可在其他庫(kù)中找到4.
數(shù)據(jù)可視化用于將數(shù)據(jù)進(jìn)行圖形化展示的繪圖庫(kù)如表
12-4
所示。表
12-4 常用繪圖庫(kù)庫(kù)名功能描述Matplotlib是Python
的
2D
繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形,開(kāi)發(fā)者只需要輸入幾行代碼,便可以生成多種高質(zhì)量圖形Seaborn是在Matplotlib
的基礎(chǔ)上進(jìn)行了更高級(jí)的API
封裝,它可以作為第
12
章
第三方庫(kù)應(yīng)用編程7Matplotlib
的補(bǔ)充Bokeh一種交互式可視化庫(kù),可以在
Web
瀏覽器中實(shí)現(xiàn)美觀的視覺(jué)效果Plotly提供的圖形庫(kù)可以進(jìn)行在線Web
交互,并提供具有出版品質(zhì)的圖形,支持線圖、散點(diǎn)圖、區(qū)域圖、條形圖、誤差條、框圖、直方圖熱圖、子圖、多軸、極坐標(biāo)圖、氣泡圖、玫瑰圖、熱力圖、漏斗圖等眾多圖形、5.
自然語(yǔ)言處理用于進(jìn)行自然語(yǔ)言處理與分析的庫(kù)如表
12-5
所示。表
12-5 自然語(yǔ)言分析庫(kù)庫(kù)名功能描述NLTK一個(gè)先進(jìn)的平臺(tái),用以構(gòu)建處理人類語(yǔ)言數(shù)據(jù)的Python
程序jieba中文分詞工具8SnowNLP一個(gè)用來(lái)處理中文文本的庫(kù)Gensim是一個(gè)專業(yè)的主題模型(發(fā)掘文字中隱含主題的一種統(tǒng)計(jì)建模方法)Python
工具包,用來(lái)提供可擴(kuò)展統(tǒng)計(jì)語(yǔ)義、分析純文本語(yǔ)義結(jié)構(gòu)、檢索語(yǔ)義上相似的文檔6.
辦公自動(dòng)化用于實(shí)現(xiàn)辦公文件自動(dòng)化處理的庫(kù)如表
12-6
所示。表
12-6 辦公自動(dòng)化庫(kù)庫(kù)名功能描述python-docx用于讀取、查詢和修改Word
文件的庫(kù)Pyexcel用來(lái)讀寫(xiě)、操作Excel
文件的庫(kù)PDFMiner一個(gè)用于從PDF
文檔中提取信息的工具python-pptx用于創(chuàng)建和修改PowerPoint
文件的Python
庫(kù)第
12
章
第三方庫(kù)應(yīng)用編程97.
圖像處理用于進(jìn)行圖像處理的庫(kù)如表
12-7
所示。表
12-7 圖像處理庫(kù)庫(kù)名功能描述pillow最常用的圖像處理庫(kù)OpenCV開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)scikit-image一個(gè)圖像處理庫(kù),支持顏色模式轉(zhuǎn)換、濾鏡、繪圖、圖像處理特征檢測(cè)等多種功能python-qrcode用于生成二維碼的Python
庫(kù)、8.
圖形藝術(shù)用于進(jìn)行圖形繪制的圖形庫(kù)如表
12-8
所示。10表
12-8 圖形庫(kù)庫(kù)名功能描述Quads基于四叉樹(shù)的計(jì)算機(jī)藝術(shù)庫(kù)ascii_artASCII
藝術(shù)庫(kù),將普通圖片轉(zhuǎn)為
ASCII
藝術(shù)風(fēng)格,可以輸出純文本或彩色文本,支持采用圖片格式輸出9.
音視頻處理用于進(jìn)行音頻視頻處理的庫(kù)如表
12-9
所示。表
12-9 音視頻處理庫(kù)庫(kù)名功能描述audiolazy用于實(shí)時(shí)聲音數(shù)據(jù)流處理的庫(kù),支持實(shí)時(shí)數(shù)據(jù)應(yīng)用處理、無(wú)限數(shù)據(jù)序列表示、數(shù)據(jù)流表示等pydub支持多種格式的音頻文件,可進(jìn)行多種信號(hào)處理(如壓縮、均衡、第
12
章
第三方庫(kù)應(yīng)用編程11歸一化)、信號(hào)生成(如正弦、方波、鋸齒等)、音效注冊(cè)、靜音處理等Dejavu用來(lái)進(jìn)行音頻指紋提取和識(shí)別TimeSide能夠進(jìn)行音頻分析、成像、轉(zhuǎn)碼、流媒體和標(biāo)簽處理的
Python框架,可以對(duì)任何音頻或視頻內(nèi)容非常大的數(shù)據(jù)集進(jìn)行復(fù)雜的處理Moviepy用來(lái)進(jìn)行基于腳本的視頻編輯模塊,適用于多種格式scikit-videoSciPy
視頻處理常用程序10.
機(jī)器學(xué)習(xí)用于實(shí)現(xiàn)機(jī)器學(xué)習(xí)的庫(kù)如表
12-10
所示。表
12-10 機(jī)器學(xué)習(xí)庫(kù)庫(kù)名
功能描述12scikit-learn基于SciPy
構(gòu)建的機(jī)器學(xué)習(xí)Python
模塊PyBrain一個(gè)Python
機(jī)器學(xué)習(xí)庫(kù)gym用于開(kāi)發(fā)和比較強(qiáng)化學(xué)習(xí)算法的工具包H2O開(kāi)源、快速、可擴(kuò)展的機(jī)器學(xué)習(xí)平臺(tái)11.
深度學(xué)習(xí)用于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)訓(xùn)練的深度學(xué)習(xí)庫(kù)如表
12-11
所示。表
12-11 深度學(xué)習(xí)庫(kù)庫(kù)名功能描述PyTorch一個(gè)具有張量和動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)框架,具備強(qiáng)大的GPU
加速能力TensorFlow
2.0谷歌開(kāi)源的深度學(xué)習(xí)框架keras以
TensorFlow/Theano/CNTK
為后端的深度學(xué)習(xí)封第
12
章
第三方庫(kù)應(yīng)用編程13裝庫(kù),可幫助用戶快速上手神經(jīng)網(wǎng)絡(luò)Cafffe一個(gè)深度學(xué)習(xí)框架,主要用于計(jì)算機(jī)視覺(jué),它對(duì)圖像識(shí)別的分類具有很好的應(yīng)用效果12.
醫(yī)學(xué)圖像處理用于進(jìn)行醫(yī)學(xué)圖像處理的庫(kù)如表
12-12
所示。表
12-12 醫(yī)學(xué)圖像處理庫(kù)庫(kù)名功能描述ITK用來(lái)進(jìn)行醫(yī)學(xué)圖像處理和分析的庫(kù)TORCHIO用于處理
3D
醫(yī)學(xué)圖像的庫(kù)MONAI多維醫(yī)學(xué)影像分析,基于PyTorchDLTK醫(yī)學(xué)影像分析,基于TensorFlow1413.
圖形用戶界面用于實(shí)現(xiàn)圖形用戶界面開(kāi)發(fā)的庫(kù)如表
12-13
所示。表
12-13 圖形用戶界面庫(kù)庫(kù)名功能描述PyQt5跨平臺(tái)用戶界面框架wxPython是wxWidgets
C++
類庫(kù)和Python
語(yǔ)言混合的產(chǎn)物Pyglet一個(gè)Python
的跨平臺(tái)窗口及多媒體庫(kù)kivy一個(gè)用來(lái)創(chuàng)建自然用戶交互(NUI)應(yīng)用程序的庫(kù),可以在Windows、Linux、MacOS
X、Android
和
iOS平臺(tái)上運(yùn)行14.
數(shù)據(jù)庫(kù)用于連接數(shù)據(jù)庫(kù)編程的庫(kù)如表
12-14
所示。第
12
章
第三方庫(kù)應(yīng)用編程15表
12-14數(shù)據(jù)庫(kù)操作庫(kù)庫(kù)名功能描述mysql-pythonPython
的MySQL
數(shù)據(jù)庫(kù)連接器pymssql一個(gè)簡(jiǎn)單的Microsoft
SQL
Server
數(shù)據(jù)庫(kù)接口kafka-pythonApache
Kafka
Python
客戶端py2neoNeo4j
restful
接口的
Python
封裝客戶端15.
Web
框架用于實(shí)現(xiàn)Web
程序開(kāi)發(fā)的庫(kù)如表
12-15
所示。表
12-15 Web
開(kāi)發(fā)庫(kù)庫(kù)名功能描述DjangoPython
界最流行的Web
框架Tornado一個(gè)Web
框架和異步網(wǎng)絡(luò)庫(kù)16Flask 一個(gè)Python
微型框架16.
網(wǎng)絡(luò)應(yīng)用用于實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)的庫(kù)如表
12-16
所示。表
12-16 網(wǎng)絡(luò)應(yīng)用庫(kù)庫(kù)名功能描述werobot微信公眾號(hào)開(kāi)發(fā)框架aip百度人工智能gevent協(xié)程開(kāi)發(fā)17.
游戲開(kāi)發(fā)用于實(shí)現(xiàn)游戲程序開(kāi)發(fā)的庫(kù)如表
12-17
所示。表
12-17 游戲開(kāi)發(fā)庫(kù)第
12
章
第三方庫(kù)應(yīng)用編程17庫(kù)名功能描述Pygame是一組Python
模塊,用來(lái)編寫(xiě)游戲Panda3D由迪士尼開(kāi)發(fā)的
3D
游戲引擎,并由卡內(nèi)基梅隆娛樂(lè)技術(shù)中心負(fù)責(zé)維護(hù)。使用C++編寫(xiě),
針對(duì)Python
進(jìn)行了完全的封裝RenPy一個(gè)視覺(jué)小說(shuō)(visual
novel)引擎Harfang3D支持
3D、VR
和游戲開(kāi)發(fā)的Python
框架18.
硬件開(kāi)發(fā)用于實(shí)現(xiàn)硬件程序開(kāi)發(fā)的庫(kù)如表
12-18
所示。表
12-18 硬件開(kāi)發(fā)庫(kù)庫(kù)名功能描述rospyROS(robotoperatingsystem)
庫(kù)18ino操作Arduino
的命令行工具wifi一個(gè)Python
庫(kù)和命令行工具,用來(lái)在
Linux
平臺(tái)上操作Wi-Fi。Pingo為RaspberryPi、pcDuino、Intel
Galileo
等設(shè)備提供統(tǒng)一的API
用以編程19.
經(jīng)濟(jì)金融用于進(jìn)行經(jīng)濟(jì)金融數(shù)據(jù)分析的庫(kù)如表
12-19
所示。表
12-19 經(jīng)濟(jì)金融分析庫(kù)庫(kù)名功能描述TA-Lib專業(yè)的金融市場(chǎng)技術(shù)指標(biāo)庫(kù),用于技術(shù)分析PyAlgoTrade用于自動(dòng)化金融策略開(kāi)發(fā)的庫(kù),可以支持交易記錄和回測(cè)第
12
章
第三方庫(kù)應(yīng)用編程19Quantopian用于構(gòu)建量化交易系統(tǒng)的Python
庫(kù)PyFinance用于分析金融數(shù)據(jù)的Python
庫(kù)20.
金融數(shù)據(jù)用于實(shí)現(xiàn)金融數(shù)據(jù)獲取的庫(kù)如表
12-20
所示。表
12-20 金融數(shù)據(jù)獲取庫(kù)庫(kù)名功能描述pandas-datareader從各種財(cái)經(jīng)網(wǎng)絡(luò)獲取數(shù)據(jù)到Pandas
數(shù)據(jù)結(jié)構(gòu)pandas-finance用于訪問(wèn)和分析金融數(shù)據(jù)的高級(jí)APIwallstreet實(shí)時(shí)的股票和期權(quán)數(shù)據(jù)chinesestockapi獲取中國(guó)股票價(jià)格的Python
API2021.
社會(huì)網(wǎng)絡(luò)分析用于進(jìn)行復(fù)雜網(wǎng)絡(luò)分析的庫(kù)如表
12-21
所示。表
12-21 網(wǎng)絡(luò)分析庫(kù)庫(kù)名功能描述NetworkX是一個(gè)用Python
語(yǔ)言開(kāi)發(fā)的圖論與復(fù)雜網(wǎng)絡(luò)建模工具,內(nèi)置了常用的圖與復(fù)雜網(wǎng)絡(luò)分析算法,可以方便地進(jìn)行復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)分析、仿真建模等工作22.
三維可視化用于實(shí)現(xiàn)數(shù)據(jù)三維圖形顯示的庫(kù)如表
12-22
所示。表
12-22 三維可視化庫(kù)庫(kù)名功能描述TVTK科學(xué)計(jì)算三維可視化庫(kù)第
12
章
第三方庫(kù)應(yīng)用編程21Mayavi三維表達(dá)和可視化TraitUI交互式三維可視化23.
虛擬現(xiàn)實(shí)用于實(shí)現(xiàn)虛擬現(xiàn)實(shí)技術(shù)開(kāi)發(fā)的庫(kù)如表
12-23
所示。表
12-23 虛擬現(xiàn)實(shí)開(kāi)發(fā)庫(kù)庫(kù)名功能描述VR
Zero針對(duì)樹(shù)莓派的VR
開(kāi)發(fā)庫(kù),支持設(shè)備小型化,配置簡(jiǎn)單化,非常適合初學(xué)者實(shí)踐VR
開(kāi)發(fā)及應(yīng)用pyovr針對(duì)Oculus
VR
設(shè)備的開(kāi)發(fā)庫(kù),基于成熟的VR
設(shè)備,提供全套文檔,工業(yè)級(jí)應(yīng)用設(shè)備Vizard通用VR
開(kāi)發(fā)引擎,專業(yè)的企業(yè)級(jí)虛擬現(xiàn)實(shí)開(kāi)發(fā)引擎,提供詳細(xì)的官方文檔,支持多種主流的VR
硬件設(shè)備2224.
區(qū)塊鏈應(yīng)用用于實(shí)現(xiàn)區(qū)塊鏈應(yīng)用程序開(kāi)發(fā)的庫(kù)如表
12-24
所示。表
12-24 區(qū)塊鏈應(yīng)用開(kāi)發(fā)庫(kù)庫(kù)名功能描述Web3Web3
是一組庫(kù),用于與以太坊區(qū)塊鏈交互Python
語(yǔ)言提供了超過(guò)
15
萬(wàn)個(gè)第三方庫(kù),可以使用
pip
安裝。Python
包的官網(wǎng)地址是/。國(guó)內(nèi)常見(jiàn)的鏡像源站點(diǎn)如下。
清華大學(xué):/simple/。阿里云:/pypi/simple/。中國(guó)科學(xué)技術(shù)大學(xué):/simple/。豆瓣(douban):/simple/。第
12
章
第三方庫(kù)應(yīng)用編程23
12.2 數(shù)據(jù)分析與可視化在一個(gè)日益以數(shù)據(jù)為主導(dǎo)的世界中,用戶正在以多種方式收集數(shù)據(jù),每一個(gè)人都想從數(shù)據(jù)中了解更多具有價(jià)值的信息。數(shù)據(jù)分析與可視化就是能夠幫助用戶更好地了解或提取數(shù)據(jù)信息的途徑。數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計(jì)分析方法對(duì)收集來(lái)的大量數(shù)據(jù)進(jìn)行分析研究和概括總結(jié),提取有用信息并形成結(jié)論的過(guò)程。數(shù)據(jù)可視化是以可視化圖表的形式來(lái)顯示數(shù)據(jù)信息,直觀地傳達(dá)數(shù)據(jù)的含義,幫助解釋趨勢(shì)和統(tǒng)計(jì)數(shù)據(jù),展現(xiàn)數(shù)據(jù)的分析結(jié)果,揭示數(shù)據(jù)模式和趨勢(shì)。本節(jié)主要介紹目前非常流行的數(shù)據(jù)分析和數(shù)據(jù)可視化工具,首先介紹數(shù)據(jù)分析“三劍客”,即
NumPy、Pandas
和Matplotlib。NumPy
側(cè)重于科學(xué)計(jì)算,Pandas
側(cè)重于數(shù)據(jù)分析,Matplotlib
側(cè)重于數(shù)據(jù)可視化。24NumPy
科學(xué)計(jì)算庫(kù)NumPy(Numerical
Python)是Python
的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展庫(kù),可用來(lái)存儲(chǔ)和處理大型矩陣,比Python
自身的嵌套列表結(jié)構(gòu)要高效得多,支持大量的多維度數(shù)組與矩陣運(yùn)算,此外,針對(duì)數(shù)組運(yùn)算還提供了大量的數(shù)學(xué)函數(shù)庫(kù)。NumPy
中定義的最重要的對(duì)象是稱為ndarray
的N
維數(shù)組類型對(duì)象,也稱為array
對(duì)象。它描述相同類型的元素集合,可以使用基于零的索引訪問(wèn)集合中的元素。ndarray
中的每個(gè)元素在內(nèi)存中使用相同大小的塊,每個(gè)元素都是數(shù)據(jù)類型對(duì)象(dtype)的對(duì)象。NumPy
支持的數(shù)據(jù)類型比Python
內(nèi)置的類型還要多很多。NumPy
的屬性和方法ndarray
對(duì)象具有矢量算術(shù)能力、復(fù)雜的廣播能力和高維數(shù)組處理能力,第
12
章
第三方庫(kù)應(yīng)用編程25在進(jìn)行復(fù)雜科學(xué)計(jì)算時(shí)還會(huì)自動(dòng)并行計(jì)算,其運(yùn)算效率遠(yuǎn)高于純
Python
代碼。NumPy
的常用屬性和方法分別如表
12-25
和表
12-26
所示。表
12-25 NumPy
的常用屬性屬性名功能描述ndarray.ndim秩,即軸的數(shù)量或維度的數(shù)量ndarray.shape數(shù)組的維度,對(duì)于矩陣,n
行m
列ndarray.size數(shù)組元素的總個(gè)數(shù),相當(dāng)于.shape
中n*m
的值ndarray.dtypendarray
對(duì)象的元素類型ndarray.itemsizendarray
對(duì)象中每個(gè)元素的大小,以字節(jié)為單位ndarray.flagsndarray
對(duì)象的內(nèi)存信息ndarray.realndarray
元素的實(shí)部ndarray.imagndarray
元素的虛部26ndarray.data包含實(shí)際數(shù)組元素的緩沖區(qū)ndarray.T簡(jiǎn)單轉(zhuǎn)置矩陣ndarray表
12-26NumPy
的常用方法(函數(shù))方法名功能描述生成函數(shù)np.array(x)將輸入數(shù)據(jù)轉(zhuǎn)換為一個(gè)ndarraynp.array(x,
dtype)將輸入數(shù)據(jù)轉(zhuǎn)換為一個(gè)類型為dtype
的ndarraynp.ones(N)生成一個(gè)N
長(zhǎng)度的一維全
1
的ndarraynp.ones_like(ndarray)生成一個(gè)形狀與參數(shù)相同的全
1
的ndarraynp.zeros(N)生成一個(gè)N
長(zhǎng)度的一維全
0
的ndarraynp.empty(N)生成一個(gè)N
長(zhǎng)度的未初始化一維ndarraynp.eye(N)創(chuàng)建一個(gè)
N
*
N
的單位矩陣(對(duì)角線為
1,其余為第
12
章
第三方庫(kù)應(yīng)用編程270)np.arange(begin, end,step)生成一個(gè)從
begin
到
end,步長(zhǎng)為
step
的一維ndarray
數(shù)組ndarray.reshape((N,M,...))將
ndarray
轉(zhuǎn)換為
N*M*...
的多維
ndarray(
非copy)ndarray.transpose((xIndex,yIndex,...))根據(jù)維索引xIndex,yIndex...進(jìn)行矩陣轉(zhuǎn)置,依賴于shape,不能用于一維矩陣(非copy)ndarray.swapaxes(xIndex,yIndex)交換維度(非copy)矩陣函數(shù)np.diag(ndarray)以一維數(shù)組的形式返回方陣的對(duì)角線(或非對(duì)角線)元素np.diag([x,y,...])將一維數(shù)組轉(zhuǎn)換為方陣(非對(duì)角線元素為
0)28排序函數(shù)一元計(jì)算函數(shù)np.dot(ndarray,ndarray)矩陣乘法np.trace(ndarray)計(jì)算對(duì)角線元素的和np.sort(ndarray)排序,返回副本np.unique(ndarray)返回ndarray
中的元素,排除重復(fù)元素之后進(jìn)行排序ersect1d(ndarray1,
ndarray2)返回兩者的交集并排序np.setdiff1d(ndarray1,ndarray2)返回兩者的差第
12
章
第三方庫(kù)應(yīng)用編程29np.abs(ndarray)計(jì)算絕對(duì)值np.mean(ndarray)求平均值np.sign(ndarray)計(jì)算正負(fù)號(hào):1(正)、0(0)、-1(負(fù))np.isnan(ndarray)返回一個(gè)判斷是否為NaN
的bool
型數(shù)組cos、sin、tan三角函數(shù)多元計(jì)算函數(shù)np.add(ndarray,ndarray)相加np.maximum(ndarray,ndarray)求最大值np.fmin(ndarray,ndarray)求最小值(忽略NaN)30np.less_equal(ndarray,ndarray)<=logical_and(ndarray,ndarray)&計(jì)算函數(shù)ndarray.mean(axis=0
)求平均值ndarray.sum(axis=
0)求和ndarray.std()方差ndarray.var()標(biāo)準(zhǔn)差ndarray.max()最大值ndarray.min()最小值第
12
章
第三方庫(kù)應(yīng)用編程31隨機(jī)數(shù)函數(shù),,文件讀寫(xiě)np.random.seed(ndarray)確定隨機(jī)數(shù)生成種子np.random.rand(int)產(chǎn)生int
個(gè)均勻分布的樣本值np.random.randn(N,M,
...)生成一個(gè)N*M*...的正態(tài)分布(平均值為
0,標(biāo)準(zhǔn)差為
1)的ndarraynp.random.uniform(low,high,size)隨機(jī)生成指定范圍的浮點(diǎn)數(shù)。low:采樣下界,float類型,默認(rèn)值為
0。high:采樣上界,float
類型默認(rèn)值為
1。size:輸出樣本數(shù)目,為
int
或tuple
類型。例如size=(m,n,k),
則輸出m*n*k
個(gè)樣本,缺省時(shí)輸出1
個(gè)值32np.loadtxt(filename)讀取csv
和txt
文件Np.savetxt(filename,data)寫(xiě)入csv
和txt
文件np.load(filename)讀取npy
文件np.save(filename,data)寫(xiě)入npy
文件2.
NumPy
的使用在Anaconda
的Jupyter
Notebook
開(kāi)發(fā)環(huán)境中,數(shù)據(jù)分析示例代碼和輸出結(jié)果如程序段P12.1
所示。P12.1
NumPy
的使用importnumpyas
npdata
=
np.random.uniform(-0.5,1,(4,4)) #
隨機(jī)生成一個(gè)取值從-0.5
到1
的4×4
的二維數(shù)第
12
章
第三方庫(kù)應(yīng)用編程33組dmax=np.max(data,axis=0) #
求數(shù)組中的最大值。若不加
axis
則求所有元素中的最大值,
若axis=0
則求出每列最大值,若axis=1
或-1
則求出每行最大值dmin=np.min(data,axis=0) #
求數(shù)組中的最小值。若不加
axis
則求所有元素中的最小值,若axis=0
則求出每列最小值,若axis=1
或-1
則求出每行最小值dmea=np.mean(data)dmed=np.median(data)#
求平均值#
求中位數(shù)#
求方差#
求標(biāo)準(zhǔn)差#
維度數(shù)dvar=np.var(data)dstd=np.std(data)data.ndimOut:
234#
數(shù)組形狀及維度#
數(shù)組總元素個(gè)數(shù)data.shapeOut:(4,
4)data.sizeOut:16Data#
數(shù)組ndarray
對(duì)象Out: array([[-0.29251516,
-0.26716819, 0.00611154,
-0.42584762],[0.95526828,-0.4321059,
-0.3225236
, 0.20251456],[
0.66132838,0.25467466,0.56062761,0.79140186],[
0.45864462,0.11906949,0.28115356,0.35725196]])dmax#
每列最大值Out:array([0.95526828,0.25467466,0.56062761,
0.79140186])dmin#
每列最小值Out:array([-0.29251516,-0.4321059,-0.3225236,
-0.42584762])第
12
章
第三方庫(kù)應(yīng)用編程35dmeaOut:dmedOut:dvarOut:dstaOut:#
數(shù)組平均值0.18174287835862635#
數(shù)組中位數(shù)0.22859460782079477#
數(shù)組方差0.18301061868968183#
數(shù)組標(biāo)準(zhǔn)差0.521614053399740812.2.2
Pandas
數(shù)據(jù)分析庫(kù)Pandas
是Python
的一個(gè)擴(kuò)展程序庫(kù),它是一個(gè)強(qiáng)大的用于分析結(jié)構(gòu)化數(shù)據(jù)的工具集,其使用基礎(chǔ)是NumPy(提供高性能的矩陣運(yùn)算)。Pandas
納入了大量的庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,并提供了高效地操作大型數(shù)據(jù)集所需的工具。36Pandas
可以從各種文件格式(如CSV、JSON、SQL、Microsoft
Excel)導(dǎo)入數(shù)據(jù)。Pandas
可以對(duì)數(shù)據(jù)進(jìn)行各種運(yùn)算操作,如歸并、再成形、選擇等,它還有數(shù)據(jù)清洗和數(shù)據(jù)特征加工等功能。Pandas
被廣泛應(yīng)用于學(xué)術(shù)、金融、統(tǒng)計(jì)學(xué)等各個(gè)數(shù)據(jù)分析領(lǐng)域。Pandas
的主要數(shù)據(jù)結(jié)構(gòu)是Series
(一維數(shù)據(jù))與DataFrame(二維數(shù)據(jù)),這兩種數(shù)據(jù)結(jié)構(gòu)足以處理金融、統(tǒng)計(jì)、社會(huì)科學(xué)、工程等領(lǐng)域中的大多數(shù)典型用例。
Series
對(duì)象:是一種類似于一維數(shù)組的對(duì)象,由一組數(shù)據(jù)(各種
NumPy
數(shù)據(jù)類型)及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。僅有一組數(shù)據(jù)也可產(chǎn)生簡(jiǎn)單的Series
對(duì)象。DataFrame
對(duì)象:是
Pandas
中的一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),包含一組有序的列,每列可以是不同的值類型(如數(shù)值、字符串、布爾型等),DataFrame既有行索引也有列索引,可以將其看作由Series
組成的字典。第
12
章
第三方庫(kù)應(yīng)用編程371.
Pandas
的屬性和方法Pandas
對(duì)數(shù)據(jù)的處理主要是通過(guò)Series
對(duì)象和DataFrame
對(duì)象的操作來(lái)實(shí)現(xiàn)的,DataFrame
對(duì)象的每一列都可以看作一個(gè)Series
對(duì)象。因此,除了針對(duì)矩陣或多維數(shù)組的特殊操作方法以外,這兩種數(shù)據(jù)對(duì)象的操作方法基本上是一致的。Panda
的常用屬性和方法如表
12-27
所示。表
12-27Pandas
的常用屬性和方法屬性和方法名功能描述axes返回一個(gè)僅以行軸標(biāo)簽和列軸標(biāo)簽為成員的列表ndim返回輸入數(shù)據(jù)的維數(shù)shape返回?cái)?shù)組維度38size返回輸入數(shù)據(jù)的元素?cái)?shù)量values以ndarray
的形式返回對(duì)象index返回一個(gè)RangeIndex
對(duì)象,用來(lái)描述索引的取值范圍empty返回一個(gè)空的對(duì)象dtype返回對(duì)象的數(shù)據(jù)類型head(n)返回前n
行,默認(rèn)
5
行tail(n)返回最后n
行,默認(rèn)
5
行isnull()如果值不存在或缺失,則返回Truenotnull()如果值不存在或缺失,則返回Falsecount()統(tǒng)計(jì)某個(gè)非空值的數(shù)量sum()求和mean()求均值第
12
章
第三方庫(kù)應(yīng)用編程39median()求中位數(shù)mode()求眾數(shù)var()求方差std()求標(biāo)準(zhǔn)差min()求最小值max()求最大值cumsum()計(jì)算累計(jì)和。axis=0,按照行累加;axis=1,按照列累加describe()顯示與數(shù)據(jù)列相關(guān)的統(tǒng)計(jì)信息摘要read_csv()表示從CSV
文件中讀取數(shù)據(jù),并創(chuàng)建DataFrame
對(duì)象to_csv()用于將DataFrame
轉(zhuǎn)換為CSV
數(shù)據(jù)。若要把
CSV
數(shù)據(jù)寫(xiě)入文件,只需向函數(shù)傳遞一個(gè)文件對(duì)象即可read_excel()讀取Excel
表格中的數(shù)據(jù)40to_excel() 將Dataframe
中的數(shù)據(jù)寫(xiě)入Excel
文件2.
Pandas
的使用在
Anaconda
的
Jupyter
Notebook
開(kāi)發(fā)環(huán)境中,使用
Series
對(duì)象和DataFrame
對(duì)象處理數(shù)據(jù)的示例代碼和輸出結(jié)果如程序段P12.2
所示。P12.2
Pandas
的使用importpandasaspdimportnumpyas
npdser=pd.Series(np.random.uniform(-0.5,1,10))ddat=pd.DataFrame(np.random.uniform(-0.5,1,(4,4)))dser.axesOut:[RangeIndex(start=0,stop=10,
step=1)]ddat.axes第
12
章
第三方庫(kù)應(yīng)用編程41Out:[RangeIndex(start=0,stop=4,step=1),RangeIndex(start=0,stop=4,
step=1)]dser.ndimOut:1ddat.ndimOut:2dser.shapeOut:
(10,)ddat.shapeOut:(4,
4)dserOut:
00.49090210.71097120.635130423 0.1384564 -0.3176095 0.7709186 0.2470757 -0.3431768 0.0870039 0.701167dtype:
float64ddatOut:
0
1
2
30 0.8942640.590067
-0.3966071 0.9652420.004056
-0.2292370.4217540.4404482 0.675990
-0.302653 0.662338
-0.217534第
12
章
第三方庫(kù)應(yīng)用編程433 0.0869900.4054560.249263
0.786460dser.head(2)Out:
0 0.4909021 0.710971dtype:
float64ddat.head(2)Out:
0 1 2 30.4217540.4404480 0.8942640.590067
-0.3966071 0.9652420.004056
-0.229237dser.isnull()Out:
0
FalseFalseFalse44FalseFalseFalseFalseFalseFalseFalsedtype:boolddat.notnull()Out:
0
1
2
30 TrueTrueTrueTrue1 TrueTrueTrueTrue2 TrueTrueTrueTrue第
12
章
第三方庫(kù)應(yīng)用編程453 True
True
True
Truedser.sum()Out:
3.1208372380415312ddat.sum()Out:
02.62248610.69692620.28575631.431127dtype:
float64dser.mean()Out:
0.3120837238041531ddat.mean()Out:
0 0.655621461 0.1742312 0.0714393 0.357782dtype:
float64dser.median()Out:
0.36898865970337613dser.std()Out:
0.41743571186509304dser.var()Out:
0.17425257354031698dser.describe()Out:
countmean10.0000000.312084第
12章第三方庫(kù)應(yīng)用編程std0.417436min-0.34317625%0.09986650%0.36898975%0.684658max0.77091847dtype:
float6412.2.3
Matplotlib
數(shù)據(jù)可視化庫(kù)Matplotlib
是Python
中比較受歡迎的數(shù)據(jù)可視化軟件包之一,它是一個(gè)非常強(qiáng)大的Python
畫(huà)圖工具,我們可以使用該工具將很多數(shù)據(jù)通過(guò)圖表的形式進(jìn)行直觀呈現(xiàn)。Matplotlib
提供多樣化的輸出格式,以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形,不僅可以用來(lái)繪制各種靜態(tài)、動(dòng)48態(tài)、交互式的圖表,還可以繪制線圖、散點(diǎn)圖、等高線圖、條形圖、柱狀圖、3D
圖形,以及圖形動(dòng)畫(huà)等。Matplotlib
通常與NumPy、Pandas
一起使用,是數(shù)據(jù)分析中不可或缺的重要工具之一。Matplotlib
庫(kù)由各種可視化類構(gòu)成,內(nèi)部結(jié)構(gòu)復(fù)雜。Matplotlib
繪圖主要有兩種方式:使用程序性的
pyplot
接口(即matplotlib.pyplot)和面向?qū)ο笤膍atplotlib
API。matplotlib.pyplot
是一個(gè)用于繪制各類可視化圖形的命令子庫(kù),相當(dāng)于快捷方式,主要用于進(jìn)行交互式繪圖和較為簡(jiǎn)單的繪圖。對(duì)于復(fù)雜的繪圖任務(wù),使用面向?qū)ο驛PI
更合適。例如,pyplot
的大部分繪圖函數(shù),axes
對(duì)象也有,通過(guò)調(diào)用
axes
對(duì)象的繪圖函數(shù)完全可以達(dá)到pyplot
的繪圖功能。Matplotlib
繪圖的核心是理解
figure(畫(huà)布)對(duì)象、axes(坐標(biāo)系)對(duì)象和axis(坐標(biāo)軸)對(duì)象三者之間的關(guān)系,如圖
12.1
所示。第
12
章
第三方庫(kù)應(yīng)用編程49圖
12.1 畫(huà)布、坐標(biāo)系與坐標(biāo)軸的關(guān)系從圖中可知,axis
對(duì)象處于axes
對(duì)象中,而
axes
對(duì)象又處于figure
對(duì)象中。用戶可以在一個(gè)畫(huà)布中建立多個(gè)坐標(biāo)系(子圖),也可以在一個(gè)坐標(biāo)系中建立50多個(gè)坐標(biāo)軸。Matplotlib
繪圖流程如圖
12.2
所示。用戶可以在整個(gè)畫(huà)布(figure
對(duì)象)上直接繪圖,也可以在畫(huà)布上建立多個(gè)坐標(biāo)系(子圖,axes
對(duì)象)后繪圖。第
12
章
第三方庫(kù)應(yīng)用編程51圖
12.2 Matplotlib
繪圖流程
1.
Matplotlib
的屬性和方法Matplotlib
提供了以下
3
種繪圖接口。pyplot:面向畫(huà)布對(duì)象的繪圖接口。axes:面向坐標(biāo)系對(duì)象的繪圖接口。Pylab:與
Matplotlib
一起安裝的獨(dú)立模塊,用
import
pylab
導(dǎo)入,沿用了Matlab
的風(fēng)格。本節(jié)學(xué)習(xí)pyplot
和axes
兩種接口的繪圖方法。Matplotlib
的常用屬性和方法如表
12-28
所示。表
12-28Matplotlib
的常用屬性和方法屬性和方法名功能描述figure
對(duì)象52fig=
plt.figure()創(chuàng)建畫(huà)布對(duì)象ax=fig.add_subplot()創(chuàng)建、選擇子圖對(duì)象ax=plt.subplot()創(chuàng)建、選擇子圖對(duì)象fig,axes=plt.subplots()創(chuàng)建多個(gè)子圖對(duì)象pyplot
對(duì)象plt.plot()繪制線條或標(biāo)記圖plt.axis()指定坐標(biāo)軸范圍plt.xscale()設(shè)置對(duì)數(shù)軸和其他非線性軸plt.xlim()設(shè)置x
軸的數(shù)值顯示范圍plt.xlabel()設(shè)置x
軸的標(biāo)簽文本plt.grid()繪制刻度線的網(wǎng)格線plt.axhline()繪制平行于x
軸的水平參考線第
12
章
第三方庫(kù)應(yīng)用編程53plt.axvspan()繪制垂直于x
軸的參考區(qū)域plt.xticks()獲取或設(shè)置當(dāng)前x
軸刻度位置和標(biāo)簽plt.annotate()添加圖形內(nèi)容細(xì)節(jié)的指向型注釋文本plt.text()添加圖形內(nèi)容細(xì)節(jié)的無(wú)指向型注釋文本(水印)plt.title()添加圖形內(nèi)容的標(biāo)題plt.legeng()標(biāo)示不同圖形的文本標(biāo)簽圖例plt.table()向子圖中添加表格plt.rcParams["font.family"]="SimHei"全局設(shè)置字體plt.pie()繪制餅圖plt.hist()繪制直方圖54axes
對(duì)象ax.plot(x,y)將y
對(duì)x
繪制為線條或標(biāo)記圖ax.scatter(x,y)y
與x
的散點(diǎn)圖ax.step()繪制一個(gè)階梯圖ax.plot_date()將浮點(diǎn)數(shù)轉(zhuǎn)換為日期,繪制日期軸ax.loglog()在x
軸和y
軸上使用對(duì)數(shù)縮放繪制圖ax.bar()繪制條形圖plt.scatter()繪制散點(diǎn)圖plt.Rectangle()繪制長(zhǎng)方形plt.Circle()繪制圓形plt.show()顯示繪制的圖形plt.savefig()存儲(chǔ)圖形第
12
章
第三方庫(kù)應(yīng)用編程55ax.barh()繪制水平條形圖ax.pie()繪制餅圖ax.csd()繪制交叉光譜密度ax.axis()獲取或設(shè)置某些軸屬性的便捷方法ax.grid
()增加網(wǎng)格線ax.set_xlim()設(shè)置x
軸范圍ax.get_ylim
()返回y
軸范圍ax.set_xbound()設(shè)置x
軸的上下邊界ax.set_xlabel()設(shè)置x
軸的標(biāo)簽ax.set_xticks()設(shè)置x
軸的刻度ax.annotate()在圖形上給數(shù)據(jù)添加文本注解ax.add_patch()添加到圖中562.
Matplotlib
的使用使用Matplotlib
繪圖,首先要?jiǎng)?chuàng)建畫(huà)布對(duì)象,其語(yǔ)法格式如下。plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)
參數(shù)說(shuō)明如下。num:圖像編號(hào)或名稱,數(shù)字為編號(hào),字符串為名稱。figsize:指定figure
的寬和高,單位為英寸。dpi:指定繪圖對(duì)象的分辨率,即每英寸多少像素,缺省值為
80。facecolor:背景顏色。edgecolor:邊框顏色。frameon:是否顯示邊框。1)
pyplot
和axes
繪制簡(jiǎn)單圖形第
12
章
第三方庫(kù)應(yīng)用編程57在Anaconda
的Jupyter
Notebook
開(kāi)發(fā)環(huán)境中,使用pyplot
繪制簡(jiǎn)單圖形的示例代碼如程序段P12.3
所示。P12.3 pyplot
繪制簡(jiǎn)單圖形importmatplotlib.pyplotaspltimportnumpyasnpfig=plt.figure(num=1,figsize=(4,4))plt.plot([1,2,3,4],[1,2,3,4])plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.3
所示。58圖
12.3 pyplot
繪制簡(jiǎn)單圖形使用axes
繪制簡(jiǎn)單圖形的示例代碼如程序段P12.4
所示。P12.4 axes
繪制簡(jiǎn)單圖形fig=plt.figure(num=1,figsize=(4,4))ax=fig.add_subplot(1,1,1)ax.plot([1,2,3,4],[1,2,3,4])plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.4
所示。圖
12.4axes
繪制簡(jiǎn)單圖形第
12
章
第三方庫(kù)應(yīng)用編程59從結(jié)果可知,兩種畫(huà)圖方式可視化結(jié)果并無(wú)不同。第一種方式用
pyplot
對(duì)象先生成了一個(gè)畫(huà)布,然后在這個(gè)畫(huà)布上隱式地生成一個(gè)畫(huà)圖區(qū)域來(lái)進(jìn)行畫(huà)圖;第二種方式用axes
對(duì)象先生成一個(gè)畫(huà)布,然后在此畫(huà)布上選定一個(gè)子區(qū)域畫(huà)了一個(gè)子圖。2)
創(chuàng)建子圖使用pyplot
創(chuàng)建簡(jiǎn)單子圖的示例代碼如程序段P12.5
所示。P12.5
pyplot
創(chuàng)建簡(jiǎn)單子圖importmatplotlib.pyplotaspltimportnumpyasnpfig=plt.figure(num=1,figsize=(4,4))#
創(chuàng)建
4
個(gè)子圖,選擇第一個(gè)子圖plt.subplot(2,2,1)plt.plot([1,2,3,4],[1,2,3,4])plt.subplot(2,2,4)#
選擇第四個(gè)子圖60plt.plot([1,2,3,4],[1,3,2,4])plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.5
所示。圖
12.5 pyplot
創(chuàng)建簡(jiǎn)單子圖使用pyplot
創(chuàng)建復(fù)雜子圖的示例代碼如程序段P12.6
所示。P12.6
pyplot
創(chuàng)建復(fù)雜子圖importmatplotlib.pyplotas
pltimportmatplotlib.gridspec
as
gridspec #
調(diào)用網(wǎng)格第
12
章
第三方庫(kù)應(yīng)用編程61#
創(chuàng)建畫(huà)布#
設(shè)定網(wǎng)格,是
3×3
的大小#
選定網(wǎng)格,第一行,所有列#
選定網(wǎng)格,第二行,前兩列#
選定網(wǎng)格,后兩行,最后一列#
選定網(wǎng)格,最后一行,第一列#
選定網(wǎng)格,最后一行,第二列fig=plt.figure(num=1,figsize=(4,6))gs=gridspec.GridSpec(3,3)ax1=fig.add_subplot(gs[0,:])ax1.plot([1,2,3,4],[1,3,4,2])ax2=fig.add_subplot(gs[1,:
-1])ax2.plot([1,2,3,4],[1,2,2,4])ax3=fig.add_subplot(gs[1:,-1])ax3.plot([1,2,3,4],[1,2,4,3])ax4=fig.add_subplot(gs[2,0])ax4.plot([1,2,3,4],[1,2,2,4])ax5=fig.add_subplot(gs[2,1])ax5.plot([1,2,3,4],[1,3,3,4])plt.show()62運(yùn)行代碼,輸出結(jié)果如圖
12.6
所示。圖
12.6 pyplot
創(chuàng)建復(fù)雜子圖12.2.4 花園超市水果銷售統(tǒng)計(jì)圖繪制過(guò)程在Jupyter
Notebook
中演示花園超市水果銷售統(tǒng)計(jì)圖繪制過(guò)程。第
12
章
第三方庫(kù)應(yīng)用編程631.
繪制簡(jiǎn)單曲線示意圖繪制簡(jiǎn)單曲線圖,示例代碼如程序段P12.7
所示。P12.7
繪制曲線圖程序importmatplotlib.pyplotas
pltimportnumpyas
np#
西瓜銷售量數(shù)據(jù)watermelon=[78,80,79,81,91,95,96]x=np.arange(1,8)fig=plt.figure(num=1,figsize=(6,4))ax=fig.add_subplot(1,1,1)ax.plot(x,watermelon)plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.7
所示。64圖
12.7 簡(jiǎn)單曲線圖2.
繪制加上坐標(biāo)后的曲線示意圖繪制加上坐標(biāo)后的曲線圖,示例代碼如程序段P12.8
所示。P12.8
加上繪圖坐標(biāo)的程序watermelon=[78,80,79,81,91,95,96]x=np.arange(1,8)fig=plt.figure(num=1,figsize=(6,4))ax=fig.add_subplot(111)第
12
章
第三方庫(kù)應(yīng)用編程65ax.plot(x,watermelon)ax.set_xlim([1,7.1])ax.set_ylim([40,100])ax.set_xticks(np.linspace(1,7,7))ax.set_yticks(np.linspace(50,100,6))ax.set_xticklabels(["星期一","
星期二","
星期三","
星期四","
星期五","
星期六","
星期日"],fontproperties="SimHei",fontsize=12,rotation=10)ax.set_yticklabels(["50kg","60kg","70kg","80kg","90kg","100kg"])plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.8
所示。66圖
12.8 加上坐標(biāo)后的曲線圖3.
繪制完整曲線圖繪制完整曲線圖,示例代碼如程序段P12.9
所示。P12.9
完整曲線圖程序#
設(shè)置字體為中文黑體plt.rcParams["font.family"]="SimHei"watermelon=
[78,80,79,81,91,95,96]durian=
[70,80,81,82,75,90,89]x=
np.arange(1,8)第
12
章
第三方庫(kù)應(yīng)用編程67fig=
plt.figure(num=1,figsize=(6,4))ax=
fig.add_subplot(1,1,1)#
'r'紅色,'-.'點(diǎn)劃線,'d'細(xì)菱形標(biāo)記ax.plot(x,watermelon,"r-.d",label="西瓜")#
'c'青綠色,'-'實(shí)線,'d'細(xì)菱形標(biāo)記ax.plot(x,durian,"c-d",label="榴蓮")#
設(shè)置x
軸的區(qū)間范圍,x
軸從
1
到
7.1ax.set_xlim([1,7.1])#
設(shè)置y
軸的區(qū)間范圍,y
軸從
40
到
100ax.set_ylim([40,100])#
設(shè)置顯示刻度,np.linspace()函數(shù)為等差數(shù)列,1
至
7
的
7
個(gè)數(shù)ax.set_xticks(np.linspace(1,7,7))ax.set_yticks(np.linspace(50,100,6))68#
設(shè)置刻度標(biāo)簽,屬性fontproperties
設(shè)置x
軸標(biāo)簽的字體為中文黑體#
fontsize
可以設(shè)置字體大小,color
可以設(shè)置字的顏色ax.set_xticklabels(["星期一","星期二","星期三","星期四","星期五","星期六","星期日"],fontproperties="SimHei",fontsize=12)ax.set_yticklabels(["50kg","60kg","70kg","80kg","90kg","100kg"])#
裝飾軸上的刻度線ax.tick_params(left=False,pad=8,direction="in",length=2,width=3,color="b",labelsize=12)ax.tick_params("x",labelrotation=10)#
設(shè)置y
軸標(biāo)簽,設(shè)置字體大小為
16,這里也可以設(shè)字體樣式與顏色ax.set_ylabel("銷售量",fontsize=16)#
設(shè)置標(biāo)題(表頭)ax.set_title("花園超市水果銷售量統(tǒng)計(jì)圖",fontsize=18,backgroundcolor='#3c7f90',fontweight='bold',第
12
章
第三方庫(kù)應(yīng)用編程69color='white',verticalalignment="baseline")#
上軸不顯示#
右軸不顯示#
左軸不顯示ax.spines["top"].set_visible(False)ax.spines["right"].set_visible(False)ax.spines["left"].set_visible(False)#
設(shè)置文本、注釋ax.text(7,97,"max:96",fontsize=14,color="g",alpha=1)ax.text(6,86,"max:90",fontsize=12,alpha=1)#
曲線最小值處的注釋 (min:70
和箭頭)ax.annotate(text="min:70",xy=(1,70),xytext=(1.3,66),arrowprops=dict(facecolor="y",shrink=0.05,headwidth=12,headlength=6,width=4),fontsize=12)#
添加圖例ax.legend(loc=3,labelspacing=1,handlelength=3,fontsize=14,shadow=True)70plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.9
所示。圖
12.9完整曲線圖第
12
章
第三方庫(kù)應(yīng)用編程7112.2.5 學(xué)生成績(jī)統(tǒng)計(jì)分析案例智能終端程序開(kāi)發(fā)課程共有學(xué)生
80
余人,他們的總評(píng)成績(jī)由作業(yè)成績(jī)、課程項(xiàng)目成績(jī)和期末測(cè)試成績(jī)構(gòu)成,各項(xiàng)成績(jī)存儲(chǔ)在“智能終端程序開(kāi)發(fā)課程成績(jī)表.xlsx”Excel
文件中。本案例通過(guò)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析和可視化圖形展示為課程分析報(bào)告提供支撐。在
Jupyter
Notebook
中運(yùn)行智能終端程序開(kāi)發(fā)課程,學(xué)生成績(jī)統(tǒng)計(jì)分析示例代碼如程序段P12.10
所示。P12.10(a)
學(xué)生成績(jī)統(tǒng)計(jì)分析importnumpyas
npimportpandasas
pdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']data=pd.read_excel(r'智能終端程序開(kāi)發(fā)課程成績(jī)表.xlsx')72data.describe()運(yùn)行代碼,輸出結(jié)果如圖
12.10
所示。學(xué)生成績(jī)圖
12.10P12.10(b)
用柱形圖展示學(xué)生成績(jī)data_sum=data.sum()data_sum=data_sum.valuesdata_sum=np.array([data_sum[1],data_sum[2],data_sum[3],data_sum[4]])x=
np.arange(4)第
12
章
第三方庫(kù)應(yīng)用編程73width
=
0.5
#
條形的寬度ax=plt.subplot(1,
1,
1) #
創(chuàng)建一個(gè)子圖ax.bar(x,data_sum,color='r')ax.set_xticks(x)
#
設(shè)置x
軸的刻度#
設(shè)置x
軸的刻度標(biāo)簽ax.set_xticklabels(['作業(yè)成績(jī)',
'項(xiàng)目成績(jī)',
'課堂測(cè)試成績(jī)',
'總成績(jī)'])plt.title('課程教學(xué)目標(biāo)考核成績(jī)對(duì)比柱形圖')plt.show()運(yùn)行代碼,輸出結(jié)果如圖
12.11
所示。74圖
12.11用柱形圖展示學(xué)生成績(jī)P12.10(c)
用餅圖展示學(xué)生成績(jī)dsum=[data_sum[0],data_sum[1],data_sum[2]]#
計(jì)算課程教學(xué)目標(biāo)考核成績(jī)所占百分比,保留兩位小數(shù)percentage=
(dsum/data_sum[3])*100第
12
章
第三方庫(kù)應(yīng)用編程np.set_printoptions(precision=2)labels=
['作業(yè)成績(jī)',
'項(xiàng)目成績(jī)','測(cè)試成績(jī)']plt.axes(aspect=1)plt.pie(x=
percentage,
labels=labels, autopct='%3.2f%%',shadow=True,labeldistance=1.2,startangle
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 魯教版地理七年級(jí)下冊(cè)7.2《“魚(yú)米之鄉(xiāng)”-長(zhǎng)江三角洲地區(qū)》聽(tīng)課評(píng)課記錄1
- 華師大版數(shù)學(xué)九年級(jí)下冊(cè)《圓的對(duì)稱性》聽(tīng)評(píng)課記錄
- 人教版數(shù)學(xué)七年級(jí)下冊(cè)5.1《觀察與思考 看圖時(shí)的錯(cuò)覺(jué)》聽(tīng)評(píng)課記錄
- 魯人版道德與法治七年級(jí)下冊(cè)第11課第2框《讓友誼之樹(shù)常青》聽(tīng)課評(píng)課記錄1
- 【部編版】七年級(jí)歷史上冊(cè) 《動(dòng)蕩的春秋時(shí)期》公開(kāi)課聽(tīng)課評(píng)課記錄
- 冀教版數(shù)學(xué)八年級(jí)下冊(cè)《函數(shù)的自變量取值范圍》聽(tīng)評(píng)課記錄3
- 一年級(jí)第一學(xué)期班級(jí)工作計(jì)劃班級(jí)
- 小學(xué)生課外實(shí)踐活動(dòng)教學(xué)計(jì)劃書(shū)
- 教科版道德與法治九年級(jí)上冊(cè)第六課第一框《第一要義與核心》聽(tīng)課評(píng)課記錄
- 形象代言人合同范本
- 鋼結(jié)構(gòu)工程施工(第五版) 課件 2項(xiàng)目四 高強(qiáng)度螺栓
- 機(jī)票預(yù)訂行業(yè)營(yíng)銷策略方案
- 大學(xué)生就業(yè)指導(dǎo)(高等院校學(xué)生學(xué)習(xí)就業(yè)指導(dǎo)課程)全套教學(xué)課件
- 謝爾塔拉露天煤礦變更環(huán)評(píng)
- 《實(shí)驗(yàn)診斷學(xué)》課件
- 眼的解剖結(jié)構(gòu)與生理功能課件
- 小學(xué)網(wǎng)管的工作總結(jié)
- 診所校驗(yàn)現(xiàn)場(chǎng)審核表
- Q/GDW-1738-2012配電網(wǎng)規(guī)劃設(shè)計(jì)技術(shù)導(dǎo)則
- 派出所上戶口委托書(shū)
- (高清版)TDT 1055-2019 第三次全國(guó)國(guó)土調(diào)查技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論