Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第1頁(yè)
Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第2頁(yè)
Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第3頁(yè)
Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第4頁(yè)
Python編程基礎(chǔ)與應(yīng)用第12章 第三方庫(kù)應(yīng)用編程_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

最新文檔

評(píng)論

0/150

提交評(píng)論