版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于Python的數(shù)據(jù)處理技術(shù)本章知識點(1)了解網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集的概念。(2)理解NumPy數(shù)值計算庫。(3)理解Pandas數(shù)據(jù)分庫。(4)掌握網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集的方法。(5)掌握NumPy和Pandas應(yīng)用。01網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集02數(shù)據(jù)處理PART01網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲是一種數(shù)據(jù)采集的主要方式,也是通過網(wǎng)絡(luò)獲取數(shù)據(jù)信息的主要手段和工具。談起網(wǎng)絡(luò)爬蟲,離不開搜索引擎,搜索引擎是伴隨互聯(lián)網(wǎng)的發(fā)展而產(chǎn)生和發(fā)展的,幾乎每個人上網(wǎng)都會使用搜索引擎,例如百度、谷歌都是大家常用的搜索引擎。搜索引擎的工作過程可以簡單視為從互聯(lián)網(wǎng)上抓取信息、建立索引、搜索信息三個部分,抓取信息的主要方式就是采用網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲,又稱為網(wǎng)絡(luò)蜘蛛,網(wǎng)絡(luò)機器人,是一種按照一定的規(guī)則,自動地抓取互聯(lián)網(wǎng)信息的程序或者腳本。網(wǎng)絡(luò)蜘蛛即WebSpider,是一個非常形象的名字。把互聯(lián)網(wǎng)比喻成一個蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛。網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁,從網(wǎng)站某一個頁面(通常是首頁)開始,讀取網(wǎng)頁的內(nèi)容,找到在網(wǎng)頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網(wǎng)頁,這樣一直循環(huán)下去,直到把這個網(wǎng)站所有的網(wǎng)頁都抓取完為止。如果把整個互聯(lián)網(wǎng)當(dāng)成一個網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁都抓取下來。這樣看來,網(wǎng)絡(luò)蜘蛛就是一個爬行程序,一個抓取網(wǎng)頁的程序。網(wǎng)絡(luò)蜘蛛實際上是一種電腦“機器人”(ComputerRobot),一種專門用于檢索信息的“機器人”程序,就像蜘蛛一樣在網(wǎng)絡(luò)間爬來爬去,反反復(fù)復(fù),不知疲倦。所以,網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)機器人。網(wǎng)絡(luò)爬蟲除了通過頁面進行數(shù)據(jù)采集,也可以通過各種網(wǎng)絡(luò)接口采集數(shù)據(jù),例如通過RestfulAPI接口訪問數(shù)據(jù),這樣獲取的數(shù)據(jù)格式更加規(guī)范,更加易于處理。網(wǎng)絡(luò)爬蟲有網(wǎng)絡(luò)爬蟲就有反爬蟲。有些網(wǎng)站為了避免數(shù)據(jù)被爬取,會采用各種各樣的反爬蟲措施。反爬蟲技術(shù)主要分為兩個環(huán)節(jié),一是識別爬蟲、二是對爬取信息做出限制。對應(yīng)我們的網(wǎng)站也可以設(shè)置網(wǎng)絡(luò)爬蟲的規(guī)則,這里就涉及到robots協(xié)議。Robots協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標準”(RobotsExclusionProtocol),網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。其目的是保護網(wǎng)站數(shù)據(jù)和敏感信息,確保用戶個人信息和隱私不被侵犯。robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的ASCII編碼的文本文件,對搜索引擎訪問的內(nèi)容進行限制。
為什么需要Robots協(xié)議呢?互聯(lián)網(wǎng)上的網(wǎng)頁是通過超級鏈接互相關(guān)聯(lián)起來的,從而形成了網(wǎng)頁的網(wǎng)狀結(jié)構(gòu)。爬蟲的工作方式就像蜘蛛在網(wǎng)上沿著鏈接爬來爬去,對于網(wǎng)站的管理者來說,就存在這樣的需求,某些路徑下是個人隱私或者網(wǎng)站管理使用,不想被搜索引擎抓取,比如說商品數(shù)據(jù);網(wǎng)站內(nèi)容的所有者是網(wǎng)站管理員,搜索引擎應(yīng)該尊重所有者的意愿,為了滿足以上要求,就需要提供一種網(wǎng)站和爬蟲進行溝通的途徑,給網(wǎng)站管理員表達自己意愿的機會。那么robots協(xié)議就此誕生,通過robots協(xié)議設(shè)置允許網(wǎng)絡(luò)爬蟲爬取信息的權(quán)限和范圍。數(shù)據(jù)采集數(shù)據(jù)采集是更大的概念,上節(jié)所述的網(wǎng)絡(luò)爬蟲只是數(shù)據(jù)采集的一種方式。數(shù)據(jù)采集是進行大數(shù)據(jù)分析的前提也是必要條件,在整個流程中占據(jù)重要地位。數(shù)據(jù)采集的流程即使從網(wǎng)絡(luò)爬蟲的方式來講也涉及到幾個環(huán)節(jié),一是通過網(wǎng)絡(luò)爬蟲爬取數(shù)據(jù),二是爬取數(shù)據(jù)需要把數(shù)據(jù)存儲起來,三是存儲的數(shù)據(jù)進行數(shù)據(jù)的清洗等。本節(jié)概述完數(shù)據(jù)采集后,我們對網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集涉及到的一些基本概念和技術(shù)做進一步的介紹。常見的數(shù)據(jù)采集方式有系統(tǒng)日志采集法、數(shù)據(jù)庫采集、網(wǎng)絡(luò)數(shù)據(jù)采集法以及其他數(shù)據(jù)采集法等等。網(wǎng)絡(luò)數(shù)據(jù)采集法就是本章的網(wǎng)絡(luò)爬蟲涉及到的內(nèi)容。數(shù)據(jù)采集系統(tǒng)日志采集法,顯而易見,就是采集日志信息。在我們的操作系統(tǒng)中,我們使用的各種應(yīng)用與服務(wù),大部分都有日志文件,系統(tǒng)日志、應(yīng)用日志、安全日志等。我們都知道Linux操作系統(tǒng)在服務(wù)器中應(yīng)用非常廣泛,Linux就有非常完備的日志管理系統(tǒng);用于記錄Linux操作系統(tǒng)中各種運行的消息,不同的日志文件記載了不同類型的信息,如Linux內(nèi)核消息、用戶登錄事件、程序錯誤等。Linux系統(tǒng)上運行的各種應(yīng)用程序也提供日志管理,例如Web應(yīng)用服務(wù)系統(tǒng)Nginx或者Tomcat應(yīng)用,我們就可以從Nginx或者Tomcat應(yīng)用服務(wù)器中采集到每個訪問用戶的來源IP地址、訪問時間、瀏覽的頁面、用戶使用的瀏覽器信息等等,通過這些信息,我們可以用來分析頁面點擊量,分析哪些頁面更受用戶喜歡。數(shù)據(jù)庫采集數(shù)據(jù)采集數(shù)據(jù)庫采集主要從數(shù)據(jù)庫系統(tǒng)中采集數(shù)據(jù),傳統(tǒng)企業(yè)會使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫MySQL和Oracle等來存儲數(shù)據(jù)。隨著大數(shù)據(jù)時代的到來,Redis、MongoDB和HBase等NoSQL數(shù)據(jù)庫也常用于數(shù)據(jù)的采集。企業(yè)通過在采集端部署大量數(shù)據(jù)庫,并在這些數(shù)據(jù)庫之間進行負載均衡和分片,來完成大數(shù)據(jù)采集工作。關(guān)于數(shù)據(jù)庫,我們知道有關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫之分,關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)定義是嚴格和約束嚴謹?shù)模瑪?shù)據(jù)存儲的單元是數(shù)據(jù)庫表,數(shù)據(jù)庫表有各種數(shù)據(jù)類型的字段,數(shù)據(jù)庫表之間通過外鍵形成關(guān)系。我們把關(guān)系型數(shù)據(jù)庫存儲的數(shù)據(jù)稱之謂結(jié)構(gòu)化數(shù)據(jù)。關(guān)系型數(shù)據(jù)庫對應(yīng)的有非關(guān)系型數(shù)據(jù)庫,存儲的是非結(jié)構(gòu)化的數(shù)據(jù),什么是非結(jié)構(gòu)化的數(shù)據(jù)呢?我們常見的文檔、圖片、視頻這類數(shù)據(jù)就是非結(jié)構(gòu)化數(shù)據(jù)?;ヂ?lián)網(wǎng)上我們?yōu)g覽到的更多的就是這類數(shù)據(jù)。網(wǎng)絡(luò)爬蟲主要針對的就是這類非結(jié)構(gòu)化的數(shù)據(jù)。網(wǎng)絡(luò)采集到的數(shù)據(jù)需要進行存儲,就需要技術(shù)人員選擇存儲的方式,是選擇關(guān)系型數(shù)據(jù)庫還是非關(guān)系型數(shù)據(jù)庫,需要技術(shù)人員對這兩種不同類型的數(shù)據(jù)庫優(yōu)勢、劣勢非常清楚才能做出合理和正確的選型。其他數(shù)據(jù)采集包括感知設(shè)備數(shù)據(jù)采集,通過傳感器、攝像頭和其他智能終端自動采集信號、圖片或錄像來獲取數(shù)據(jù)等,這里不做過多敘述。網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識本章會通過代碼來展示網(wǎng)絡(luò)爬蟲和數(shù)據(jù)采集的過程,讓讀者能夠通過代碼擴展更多的概念,掌握一些入門的技術(shù)。網(wǎng)絡(luò)爬蟲和數(shù)據(jù)采集我們會提供一個完整的、簡單的項目案例,通過從網(wǎng)絡(luò)上爬取未來7天的天氣數(shù)據(jù),進行一些簡單的處理。主要涉及到的知識有Python編程語言、http或https網(wǎng)絡(luò)請求、RestfulAPI編程接口、Python網(wǎng)絡(luò)相關(guān)軟件模塊等。下面逐一進行介紹。案例網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識1.Python編程語言Python編程語言在大數(shù)據(jù)、人工智能技術(shù)中應(yīng)用非常廣泛,后面小節(jié)會采用Python編程語言進行代碼實現(xiàn),代碼實現(xiàn)相對簡單,讀者可以自行安裝一個Python編程環(huán)境,通過代碼來認識Python,掌握最基本的Python語言程序結(jié)構(gòu)即可。讓我們認識一下基本的程序結(jié)構(gòu):#-*-coding:UTF-8-*-defsay_hello():greet_string="hello,world!"#定義一個字符串print(greet_string)#打印字符串if__name__=='__main__':#程序入口say_hello()保存文件為helloWorld.py,運行程序命令:python.\helloWorld.py,就會輸出hello,world!字符串。在這個簡單的程序中,我們定義了一個函數(shù)say_hello(),在main主程序體種調(diào)用了該函數(shù)。并對程序作了部分的注釋。網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識2.網(wǎng)絡(luò)請求網(wǎng)絡(luò)爬蟲需要訪問互聯(lián)網(wǎng),因此,我們需要了解訪問互聯(lián)網(wǎng)所使用的協(xié)議http、https、頁面的請求(request)與響應(yīng)(response)的概念。我們通過瀏覽器訪問一個常用的網(wǎng)站:。打開瀏覽器開發(fā)者工具,訪問截圖如下:通過開發(fā)者工具查看的截圖,我們可以看到請求的網(wǎng)頁的詳細信息,你可以看到請求、響應(yīng)的數(shù)據(jù),可以查看到cookie、session,可以查詢到網(wǎng)頁使用的css樣式文件、js文件以及圖片等數(shù)據(jù)。具體大家可以通過瀏覽器打開開發(fā)者工具詳細探索一番。這里主要講一些基本的概念。這里要講的就是http和https。網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識剛才我們訪問的詳細地址是“”,使用的就是https協(xié)議。http和https是實現(xiàn)網(wǎng)絡(luò)通信的網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)協(xié)議是計算機之間為了實現(xiàn)網(wǎng)絡(luò)通信而達成的一種“約定”或者”規(guī)則“,有了這種”約定“,不同廠商的生產(chǎn)設(shè)備,以及不同操作系統(tǒng)組成的計算機之間,就可以實現(xiàn)通信。HTTP協(xié)議是超文本傳輸協(xié)議的縮寫,英文是HyperTextTransferProtocol。它是從WEB服務(wù)器傳輸超文本標記語言(HTML)到本地瀏覽器的傳送協(xié)議。http協(xié)議支持客戶端/服務(wù)端模式,也是一種請求/響應(yīng)模式的協(xié)議。請求方法常用的有GET、POST、patch、delete。從剛才我們請求的截圖中就能看到采用的請求方法是get。HTTPS是HTTP協(xié)議的安全版本,HTTP協(xié)議的數(shù)據(jù)傳輸是明文的,是不安全的,HTTPS使用了SSL/TLS協(xié)議進行了加密處理。HTTPS協(xié)議(HyperTextTransferProtocoloverSecureSocketLayer),一般理解為HTTP+SSL/TLS,通過SSL證書來驗證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信進行加密來實現(xiàn)數(shù)據(jù)的安全性。SSL(SecureSocketLayer,安全套接字層),為數(shù)據(jù)通訊提供安全支持。http和https使用連接方式不同,默認端口也不一樣,http是80,https是443。網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識通過開發(fā)者工具你可以看到請求頭和響應(yīng)頭,這在網(wǎng)絡(luò)請求、web前端開發(fā)中經(jīng)常用到的知識。請求頭:請求頭是客戶端發(fā)送給服務(wù)器端的一些信息,使用鍵值對表示,常見的請求頭及其含義如下:常見請求頭描述Referer瀏覽器通知服務(wù)器,當(dāng)前請求來自何處。如果是直接訪問,則不會有這個頭。常用于:防盜鏈If-Modified-Since瀏覽器通知服務(wù)器,本地緩存的最后變更時間。與另一個響應(yīng)頭組合控制瀏覽器頁面的緩存。Cookie與會話有關(guān)技術(shù),用于存放瀏覽器緩存的cookie信息。User-Agent瀏覽器通知服務(wù)器,客戶端瀏覽器與操作系統(tǒng)相關(guān)信息Connection保持連接狀態(tài)。Keep-Alive連接中,close已關(guān)閉Host請求的服務(wù)器主機名Content-Length請求體的長度Content-Type如果是POST請求,會有這個頭,默認值為application/x-www-form-urlencoded,表示請求體內(nèi)容使用url編碼Accept:瀏覽器可支持的MIME類型。文件類型的一種描述方式。MIME格式:大類型/小類型[;參數(shù)]例如:text/html,html文件text/css,css文件text/javascript,js文件image/*,所有圖片文件Accept-Encoding瀏覽器通知服務(wù)器,瀏覽器支持的數(shù)據(jù)壓縮格式。如:GZIP壓縮Accept-Language瀏覽器通知服務(wù)器,瀏覽器支持的語言。各國語言(國際化i18n)網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識響應(yīng)頭:響應(yīng)也是鍵值對形式,服務(wù)器端將信息以鍵值對的形式返回給客戶端。常見請求頭描述Location指定響應(yīng)的路徑,需要與狀態(tài)碼302配合使用,完成跳轉(zhuǎn)。Content-Type響應(yīng)正文的類型(MIME類型)取值:text/html;charset=UTF-8Content-Disposition通過瀏覽器以下載方式解析正文取值:attachment;filename=xx.zipSet-Cookie與會話相關(guān)技術(shù)。服務(wù)器向瀏覽器寫入cookieContent-Encoding服務(wù)器使用的壓縮格式取值:gzipContent-length響應(yīng)正文的長度Refresh定時刷新,格式:秒數(shù);url=路徑。url可省略,默認值為當(dāng)前頁。取值:3;url=//三秒刷新頁面到Server指的是服務(wù)器名稱,默認值:Apache-Coyote/1.1。可以通過conf/server.xml配置進行修改。<Connectorport="8080"...server="itcast"/>Last-Modified服務(wù)器通知瀏覽器,文件的最后修改時間。與If-Modified-Since一起使用。網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識3.RESTfulAPI接口與JSON數(shù)據(jù)格式要弄清楚什么是RESTfulAPI,首先要知道REST是什么。1)表示性狀態(tài)轉(zhuǎn)移(representationstatetransfer,REST)用URI表示資源,用HTTP的方法(GET,POST,PUT,DELETE)表征對這些資源進行操作。RESTfulAPI就是REST風(fēng)格的API?,F(xiàn)在終端平臺多樣,移動、平板、PC等許多媒介向服務(wù)端發(fā)送請求后,如果不適用RESTfulAPI,需要為每個平臺的數(shù)據(jù)請求定義相應(yīng)的返回格式,以適應(yīng)前端顯示。但是RESTfulAPI要求前端以一種預(yù)定義的語法格式發(fā)送請求,那么服務(wù)端就只需要定義一個統(tǒng)一的響應(yīng)接口,不必像之前那樣解析各色各式的請求。Resource:資源,即數(shù)據(jù),存在互聯(lián)網(wǎng)上的可被訪問的實體Representation:數(shù)據(jù)的某種表現(xiàn)形式,如HTML,JSON。StateTransfer:狀態(tài)變化,HTTP方法實現(xiàn)網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識2)RESTful是典型的基于HTTP的協(xié)議RESTful有以下設(shè)計原則和規(guī)范資源首先要明確資源就是網(wǎng)絡(luò)上的一個實體,可以是文本、圖片、音頻、視頻。資源總是以一定的格式來表現(xiàn)自己。文本用txt、html;圖片用JPG、JPEG等等。而JSON是RESTfulAPI中最常用的資源表現(xiàn)格式。統(tǒng)一接口對于業(yè)務(wù)數(shù)據(jù)的CRUD,RESTful用HTTP方法與之對應(yīng)。URI統(tǒng)一資源標識符,它可以唯一標識一個資源。注意到,URL(統(tǒng)一資源定位符)是一種URI,因為它可以唯一標志資源。但URL!=URI。應(yīng)該說URL是URI的子集。因為URL使用路徑來唯一標識資源,這只是唯一標識資源的一種方式。還可以用一個唯一編號來標識資源,如example.html.fuce2da23。只不過這種方式并不被廣泛使用??傊?,要在概念上對URL和URI有所區(qū)分。無狀態(tài)所謂無狀態(tài)是指所有資源都可以用URI定位,而且這個定位與其他資源無關(guān),不會因為其他資源的變動而變化。這里引入一個冪等性的概念:無論一個操作被執(zhí)行一次還是多次,執(zhí)行后的效果都相同。比如對某資源發(fā)送GET請求,如果訪問一次和訪問十次獲得的數(shù)據(jù)一樣,那么就說這個請求具有冪等性。01030402網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識3)JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換格式JSON采用完全獨立于語言的文本格式,這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JSON數(shù)據(jù)格式有兩種結(jié)構(gòu):“名稱/值”對的集合(Acollectionofname/valuepairs)。不同的語言中,它被理解為對象(object),記錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關(guān)聯(lián)數(shù)組(associativearray)。示例:{"firstName":"Jack","lastName":"Smith","email":"smith@"}值的有序列表(Anorderedlistofvalues)。在大部分語言中,它被理解為數(shù)組(array)。{"people":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}]}網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集相關(guān)知識4)RESTfulAPI接口以及JSON數(shù)據(jù)格式如何調(diào)用一個http接口。這里有一個開放免費的天氣API,大家可以自己注冊一個免費賬號進行測試。接口如下:接口解釋:Url:/free/week/api方法(method):GET請求的參數(shù):appid、appsecret、city,appid和appsecret是注冊用戶的id和密鑰,用于安全認證使用。接下來我們直接從瀏覽器中訪問查看返回的數(shù)據(jù)。/free/week?appid=53487633&appsecret=eQs06GRV&city=北京網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集應(yīng)用本節(jié)我們希望能夠掌握簡單的數(shù)據(jù)采集的實現(xiàn),主要介紹采用Python語言進行程序編寫,使用Python網(wǎng)絡(luò)請求模塊進行網(wǎng)絡(luò)請求,采集到的數(shù)據(jù)存儲到本地JSON格式文件。數(shù)據(jù)源來至于/網(wǎng),我們通過網(wǎng)絡(luò)請求獲取未來7天的天氣情況。本節(jié)主要是為了示例,不采集所有城市的數(shù)據(jù),選擇10個城市采集未來7天的天氣情況,城市選擇包括:北京、上海、廣州、深圳、南寧、桂林、天津、重慶、哈爾濱、拉薩。采集的接口如下:請求地址(URL):/free/week請求方法:GET請求參數(shù)說明:參數(shù)名必選類型說明備注(示例)appid是string用戶appid需要注冊免費賬號,查看appidappsecret是string用戶appsecret需要注冊免費賬號,查看appsecretcityid否string城市ID請參考城市ID列表city否string城市名稱不要帶市和區(qū),支持市區(qū)縣,不支持鄉(xiāng)鎮(zhèn)級別;如:青島、鐵西ip否stringIP地址查詢IP所在城市天氣callback否stringjsonp參數(shù)如:jQuery.Callbacksvue否string跨域參數(shù)如果您使用的是react、vue、angular請?zhí)顚懼?1網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集應(yīng)用響應(yīng)參數(shù)說明:參數(shù)名類型說明備注cityidString城市ID
cityString城市名稱
update_timeString更新時間
dateString預(yù)報日期
weaString天氣情況
wea_imgString天氣對應(yīng)圖標
tem_dayString白天溫度(高溫)
tem_nightString白天溫度(低溫)
winString風(fēng)向
win_speedString風(fēng)力等級網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集應(yīng)用我們先采用postman軟件工具測試一個城市接口,采集“北京”未來7天的天氣情況:請求地址:/free/week?appid=53487633&appsecret=eQs06GRV&city=北京下面Python程序進行10個城市的數(shù)據(jù)采集,先簡單寫一個城市的數(shù)據(jù)采集代碼:#-*-coding:UTF-8-*-importrequestsif__name__=='__main__':url='/free/week?appid=53487633&appsecret=eQs06GRV&city=北京'response=requests.get(url=url).json()print(response)程序文件保存在本地,文件名稱為dataCollecting.py。這里需要解釋幾個知識點:Python的程序運行體在前面介紹過,執(zhí)行該程序首先需要Python運行環(huán)境,執(zhí)行過程只需要一個命令:python.\dataCollecting.py;requests模塊Python的一個軟件庫,一個常用HTTP請求的模塊,它使用python語言編寫,可以方便的對網(wǎng)頁進行爬取,是學(xué)習(xí)python爬蟲較好的http請求模塊。安裝也非常簡單:pipinstallrequests;json()是Python的內(nèi)置函數(shù),是把Python對象轉(zhuǎn)化成json數(shù)據(jù)格式的函數(shù)。網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集應(yīng)用運行結(jié)果:python.\dataCollecting.py{'cityid':'101010100','city':'北京','update_time':'2021-05-1217:54:01','data':[{'date':'2021-05-12','wea':'多云','wea_img':'yun','tem_day':'26','tem_night':'15','win':'東北風(fēng)','win_speed':'3-4級轉(zhuǎn)<3級'},{'date':'2021-05-13','wea':'多云','wea_img':'yun','tem_day':'26','tem_night':'16','win':'東南風(fēng)','win_speed':'3-4級轉(zhuǎn)<3級'},{'date':'2021-05-14','wea':'多云轉(zhuǎn)陰','wea_img':'yun','tem_day':'28','tem_night':'18','win':'東南風(fēng)','win_speed':'3-4級轉(zhuǎn)<3級'},{'date':'2021-05-15','wea':'小雨','wea_img':'yu','tem_day':'22','tem_night':'14','win':'北風(fēng)','win_speed':'3-4級'},{'date':'2021-05-16','wea':'多云轉(zhuǎn)晴','wea_img':'yun','tem_day':'25','tem_night':'15','win':'北風(fēng)','win_speed':'<3級'},{'date':'2021-05-17','wea':'晴','wea_img':'qing','tem_day':'28','tem_night':'14','win':'北風(fēng)','win_speed':'<3級'},{'date':'2021-05-18','wea':'晴','wea_img':'qing','tem_day':'28','tem_night':'16','win':'西南風(fēng)','win_speed':'<3級'}]}網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集應(yīng)用目前只是調(diào)用了一個城市的數(shù)據(jù),下面程序我們把北京、上海、廣州、深圳、南寧、桂林、天津、重慶、哈爾濱、拉薩10個城市都采集一遍,并保存為JSON格式的文件,保存為文件名alldata.json,程序如下:#-*-coding:UTF-8-*-importrequests#導(dǎo)入requests模塊importjson#導(dǎo)入json模塊if__name__=='__main__':cities=['北京','上海','廣州','深圳','南寧','桂林','天津','重慶','哈爾濱','拉薩']#定義一個列表alldata=[]#定義一個空列表forcityincities:url='/free/week?appid=53487633&appsecret=eQs06GRV&city='+cityresponse=requests.get(url=url).json()alldata.append(response)#增加一個列表元素filename='alldata.json'#把數(shù)據(jù)寫入alldata.json本地文件withopen(filename,'w')asfile_obj:json.dump(alldata,file_obj)上面的程序多增加一些編程知識。首選把10個城市定義為一個list(列表)。編寫了一段for循環(huán),遍歷10個城市,逐一采集相關(guān)城市的天氣數(shù)據(jù)。這里使用了Python的json模塊來編碼和解碼JSON對象,函數(shù)如下:函數(shù)描述json.dump將Python對象編碼成JSON字符串json.load將已編碼的JSON字符串解碼為Python對象網(wǎng)絡(luò)爬蟲及數(shù)據(jù)采集應(yīng)用上面程序就是采用了dump函數(shù),將Python對象編碼成JSON字符串,我們再寫一個程序,讀取剛才保存的alldata.json文件。如下所示:以上兩個程序使用到了采用Python語言進行文件操作,文件的寫入和讀取文件。#-*-coding:UTF-8-*-importjson#導(dǎo)入json模塊if__name__=='__main__':#主程序體filename='alldata.json'#定義一個文件名withopen(filename)asfile_obj:#打開文件data=json.load(file_obj)#把JSON格式數(shù)據(jù)解碼為python對象print(data)#打印輸出數(shù)據(jù)PART02數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)處理有兩個非常強大的python軟件庫,一個是numpy,一個是pandas。NumPy是Python語言的一個擴充程序庫。支持高級大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫。Pandas是基于NumPy的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas納入了大量庫和一些標準的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。Pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。本節(jié)主要介紹numpy和pandas的一些基礎(chǔ)概念和基本用法,詳細使用需要進行進一步的學(xué)習(xí)。Numpy數(shù)值計算庫機器學(xué)習(xí)模型:在編寫機器學(xué)習(xí)算法時,需要對矩陣進行各種數(shù)值計算。例如矩陣乘法、換位、加法等。NumPy提供了一個非常好的庫,用于簡單(在編寫代碼方面)和快速(在速度方面)計算。NumPy數(shù)組用于存儲訓(xùn)練數(shù)據(jù)和機器學(xué)習(xí)模型的參數(shù)。數(shù)學(xué)任務(wù):NumPy對于執(zhí)行各種數(shù)學(xué)任務(wù)非常有用,如數(shù)值積分、微分、內(nèi)插、外推等。因此,當(dāng)涉及到數(shù)學(xué)任務(wù)時,它形成了一種基于Python的MATLAB的快速替代。圖像處理和計算機圖形學(xué):計算機中的圖像表示為多維數(shù)字數(shù)組。NumPy成為同樣情況下最自然的選擇。實際上,NumPy提供了一些優(yōu)秀的庫函數(shù)來快速處理圖像。例如,鏡像圖像、按特定角度旋轉(zhuǎn)圖像等。NumPy是一個功能強大的Python庫,主要用于對多維數(shù)組執(zhí)行計算。NumPy這個詞來源于兩個單Numerical和Python。NumPy提供了大量的庫函數(shù)和操作,可以幫助程序員輕松地進行數(shù)值計算。這類數(shù)值計算廣泛用于以下任務(wù):Numpy數(shù)值計算庫NumPy的安裝就像安裝其他python庫一樣簡單,最快也是最簡單的方法是在shell上使用以下命令:pipinstallnumpy。NumPy圍繞這些稱為數(shù)組展開,創(chuàng)建數(shù)組的4種不同方法的代碼如下:a=np.array([0,1,2,3,4])b=np.array((0,1,2,3,4))c=np.arange(5)d=np.linspace(0,2*np.pi,5)print(a)#>>>[01234]print(b)#>>>[01234]print(c)#>>>[01234]print(d)#>>>[0.1.570796333.141592654.712388986.28318531]print(a[3])#>>>3最基本的方法是將序列傳遞給NumPy的array()函數(shù);你可以傳遞任何序列(類數(shù)組),而不僅僅是常見的列表(list)數(shù)據(jù)類型。Numpy數(shù)值計算庫請注意,當(dāng)我們打印具有不同長度數(shù)字的數(shù)組時,它會自動將它們填充出來。這對于查看矩陣很有用。對數(shù)組進行索引就像列表或任何其他Python序列一樣。接下來我們將看看如何使用多維數(shù)組表示矩陣和更多的信息。a=np.array([[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25],[26,27,28,29,30],[31,32,33,34,35]])print(a[2,4])#>>>25為了創(chuàng)建一個2D(二維)數(shù)組,我們傳遞一個列表的列表(或者是一個序列的序列)給array()函數(shù)。如果我們想要一個3D(三維)數(shù)組,我們就要傳遞一個列表的列表的列表,如果是一個4D(四維)數(shù)組,那就是列表的列表的列表的列表,以此類推。請注意2D(二維)數(shù)組是如何按行和列排列的。要索引2D(二維)數(shù)組,我們只需引用行數(shù)和列數(shù)即可。Pandas數(shù)據(jù)分析庫Pandas是基于NumPy
的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas本質(zhì)上是python的一個數(shù)據(jù)分析包,最初由AQRCapitalManagement于2008年4月開發(fā),并于2009年底開源出來。Pandas最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,因此,pandas為時間序列分析提供了很好的支持。Pandas的名稱來自于面板數(shù)據(jù)(paneldata)和python數(shù)據(jù)分析(dataanalysis)。paneldata是經(jīng)濟學(xué)中關(guān)于多維數(shù)據(jù)集的一個術(shù)語,在Pandas中也提供了panel的數(shù)據(jù)類型。Pandas數(shù)據(jù)分析庫Pandas的主要數(shù)據(jù)結(jié)構(gòu)是Series(一維數(shù)據(jù))與DataFrame(二維數(shù)據(jù)),這兩種數(shù)據(jù)結(jié)構(gòu)足以處理金融、統(tǒng)計、社會科學(xué)、工程等領(lǐng)域里的大多數(shù)典型用例。Series
是一種類似于一維數(shù)組的對象,它由一組數(shù)據(jù)(各種Numpy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標簽(即索引)組成。DataFrame
是一個表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾型值)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共同用一個索引)。參考代碼Pandas數(shù)據(jù)分析庫DataFrame構(gòu)造方法如下:pandas.DataFrame(data,index,columns,dtype,copy)參數(shù)說明:data:一組數(shù)據(jù)(ndarray、series,map,lists,dict等類型)。index:索引值,或者可以稱為行標簽。columns:列標簽,默認為RangeIndex(0,1,2,…,n)。dtype:數(shù)據(jù)類型。copy:拷貝數(shù)據(jù),默認為False。PandasDataFrame是一個二維的數(shù)組結(jié)構(gòu),類似二維數(shù)組。本節(jié)主要以處理一個城市數(shù)據(jù)為例,展示把json數(shù)據(jù)轉(zhuǎn)換成pandas的DataFrame數(shù)據(jù)結(jié)構(gòu)。參考代碼Numpy和Pandas數(shù)據(jù)處理應(yīng)用使用Pandas方法分析以上10各個城市1-7日的天氣數(shù)據(jù)要求如下:1.每個城市有多少天不下雨,以及最高溫度25度以上高溫天數(shù)?2.連續(xù)4天以上不下雨,且最高溫度維持在25度以上的城市有哪些?基本思路:1.按照城市進行分組統(tǒng)計,將天氣字段字符串中不包含“雨”的記錄展示出來,進行計數(shù);將最高溫度大于等于25度的記錄展示出來,進行計數(shù),最后將統(tǒng)計結(jié)果輸出。2.按照城市進行分組統(tǒng)計,對分組數(shù)據(jù)進行循環(huán)遍歷,判斷條件為天氣字段(字符串中不包含“雨”)且最高溫度大于等于25度,符合上述條件,且日期連續(xù)則計數(shù)增加1,達到4天則把對應(yīng)的城市名稱存儲在變量中,最后將統(tǒng)計結(jié)果輸出。習(xí)題1、以下不屬于Python特點的是()。A.免費開源 B.可移植性強 C.豐富的類庫 D.編譯型語言2、以下HTTP請求方法的是()。A.GET
B.POST
C.PUT D.DELETE3、以下哪個Python庫適合做數(shù)值計算()。A.Matplotlib
B.Numpy C.Pandas D.request4、簡述Numpy和Pandas的區(qū)別。THANKYOU基于Python的數(shù)據(jù)統(tǒng)計與可視化本章知識點(1)數(shù)據(jù)的計量尺度(2)數(shù)據(jù)的度量(3)常用距離公式(4)常用概率分布(5)可視化圖表認知(6)Python數(shù)據(jù)可視化(7)使用Matplotlib繪制常用圖表01統(tǒng)計基礎(chǔ)02數(shù)據(jù)可視化PART01統(tǒng)計基礎(chǔ)統(tǒng)計基礎(chǔ)大數(shù)據(jù)運營需要以數(shù)據(jù)分析為基礎(chǔ),從數(shù)據(jù)中得到相應(yīng)指標影響運營決策,而數(shù)據(jù)分析背后充滿了概率統(tǒng)計的知識,本節(jié)內(nèi)容主要介紹數(shù)據(jù)分析中常用的統(tǒng)計學(xué)基礎(chǔ)以及概率分布基礎(chǔ)知識。數(shù)據(jù)的計量尺度據(jù)的計量尺度是指對計量對象量化時采用的具體標準,統(tǒng)計學(xué)中計量尺度可分為四類,分別是定類尺度、定序尺度、定距尺度、定比尺度。定類尺度和定序尺度屬于定性數(shù)據(jù),定距尺度、定比尺度屬于定量數(shù)據(jù)。數(shù)據(jù)的計量尺度1.定類尺度定類尺度,亦稱分類尺度,是最粗略、計量層次最低的尺度。定類尺度只將測量對象分類,數(shù)據(jù)間不存在大小或高低順序,可以用來比較相等或不相等,不能進行四則算術(shù)運算,性別、宗教信仰、民族、職業(yè)類型等都屬于定類尺度。2.定序尺度定序尺度也稱等級尺度、順序尺度,是指對測量對象的屬性和特征的類別進行鑒別并能比較類別大小的一種測量方法。定序尺度也是用來描述對象類別,但是和定類尺度不同的是,定序尺度不僅可以確定事務(wù)類別,而且可以確定類別的優(yōu)劣或順序,即定序尺度不僅可以比較是否相等,而且可以比較大小,年級、產(chǎn)品等級、滿意程度、健康狀況等都屬于定序尺度。數(shù)據(jù)的計量尺度3.定距尺度定距尺度是按照某一數(shù)量標志將總體劃分為若干順序排列的部分或組,對相同數(shù)量或相同數(shù)量范圍的總體單位或其標志值進行計量的方法。定距尺度是對事物類別或次序之間間距的測度,不僅可以區(qū)分不同類型,而且可以進行排序并且可以準確指出類別之間的差距時多少。定距尺度通常使用自然或物理單位作為計量尺度,“0”作為比較標準,代表尺度上的一個點,不代表“不存在”,所以定距尺度可以進行加、減運算,不能進行乘除運算。定距尺度數(shù)據(jù)的差值有意義,但比例無意義,比如年份,你可以說2000年比1000年多1000年,但是不能說2000年是1000年的2倍,年份、攝氏溫度、智商都屬于定距尺度。4.定比尺度定比尺度也稱比率尺度,是指一種用于描述對象計量特征的計量尺度。定必尺度是在定距尺度的基礎(chǔ)上,同時還具有絕對或自然的起點,即存在可以作為比較的共同起點或基數(shù)。在定距尺度中,“0”代表某一數(shù)值,而不是“沒有”;在定比尺度中有絕對零點,即“0”代表“沒有”或“不存在”,所以定比尺度不僅可以進行加、減運算,還可以進行乘、除運算。例如,攝氏溫度是典型的定距尺度,0攝氏度表示水的結(jié)冰點;銷售量是典型的定比尺度,小張5月銷售量為0,即代表5月他沒有賣出去東西。定比尺度數(shù)據(jù)差值和比例都有意義,比如A繩子長5米,B繩子長10米,你可以說B繩子比A繩子長5米,也可以說B繩子長度是A繩子的2倍。長度、質(zhì)量、產(chǎn)值等都屬于定比尺度。數(shù)據(jù)的計量尺度針對4種尺度的總結(jié)如表所示。分類計量尺度舉例特點定性數(shù)據(jù)定類尺度性別、宗教信仰可比較是否相等定序尺度年級、產(chǎn)品等級可比較是否相等可比較大小定量數(shù)據(jù)定距尺度年份、攝氏溫度可比較是否相等可比較大小可進行加、減操作差值有意義,比例無意義定比尺度長度、質(zhì)量、產(chǎn)值可比較是否相等可比較大小可進行加、減操作可進行乘、除操作差值有意義、比例有意義數(shù)據(jù)的度量數(shù)據(jù)的度量可以分為對集中趨勢的度量和對離散程度的度量,平均數(shù)、中位數(shù)、眾數(shù)都是針對數(shù)據(jù)集中趨勢的度量,方差、標準差、協(xié)方差、極差等都是針對數(shù)據(jù)離散程度的度量。數(shù)據(jù)的度量1.數(shù)據(jù)集中趨勢的度量在統(tǒng)計學(xué)中,集中趨勢是指一組數(shù)據(jù)向某一中心值靠攏的程度,可反應(yīng)一組數(shù)據(jù)的中心點位置。了解數(shù)據(jù)的集中趨勢,有助于發(fā)現(xiàn)事務(wù)的本質(zhì)特征,掌握事務(wù)的發(fā)展變化,在數(shù)據(jù)分析前期階段的數(shù)據(jù)探索中有非常重要的作用。集中趨勢度量就是尋找數(shù)據(jù)水平的中心值或代表值,對應(yīng)的衡量指標即為平均數(shù)、中位數(shù)、眾數(shù)。1)平均數(shù)平均數(shù),統(tǒng)計學(xué)中最基本、最常用的衡量數(shù)據(jù)集中趨勢的一項指標。平均數(shù)主要適用于定量數(shù)據(jù),而不適用于定性數(shù)據(jù)。根據(jù)具體數(shù)據(jù)的不同,平均數(shù)有不同的計算公式,這里主要介紹簡單算術(shù)平均數(shù)和加權(quán)算術(shù)平均數(shù)。簡單算術(shù)平均數(shù)又稱均值,是指在一組數(shù)據(jù)中所有數(shù)據(jù)之和再除以這組數(shù)據(jù)的個數(shù),是統(tǒng)計學(xué)中最常用的平均指標。公式如下:參考代碼數(shù)據(jù)的度量加權(quán)算術(shù)平均數(shù)主要用于處理經(jīng)分組整理的數(shù)據(jù),即將各數(shù)值乘以相應(yīng)的權(quán)數(shù),然后加總求和得到總體值,再除以總的單位數(shù)。加權(quán)平均值的大小不僅取決于總體中各單位的數(shù)值大小,而且取決于各數(shù)值出現(xiàn)的次數(shù)(權(quán)數(shù))。公式如下:在Numpy中實現(xiàn)均值和加權(quán)均值的函數(shù)分別是mean()和average(),接下來舉一個例子。數(shù)據(jù)的度量2)中位數(shù)中位數(shù),又稱中值,是一組數(shù)據(jù)按照大小順序排列后,居于中間位置的數(shù)。中位數(shù)將全部數(shù)據(jù)等分為兩部分,每部分占比50%,一組數(shù)據(jù)中只有一個中位數(shù)。中位數(shù)適用于探索定量數(shù)據(jù)的集中趨勢,但是不適用于分類數(shù)據(jù)。假設(shè)有一組數(shù)據(jù)(n個)從小到大排序,那么這組數(shù)據(jù)中位數(shù)的計算有如下兩種情況:(1)當(dāng)n為奇數(shù)時,中位數(shù)等于第(n+1)/2個數(shù)對應(yīng)的值(2)當(dāng)n為偶數(shù)時,中位數(shù)位于第n/2和(n/2)+1的兩個數(shù)的平均值數(shù)據(jù)的度量3)眾數(shù)眾數(shù)是指一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的數(shù)值,代表數(shù)據(jù)的一般水平。眾數(shù)是描述分類數(shù)據(jù)集中趨勢最常用的測度值,一般只有在數(shù)據(jù)量較大的情況下,眾數(shù)才有意義。眾數(shù)的主要特點是不受極端值影響,在一組數(shù)據(jù)中眾數(shù)不唯一,有可能沒有眾數(shù)或有多個眾數(shù),如圖所示。數(shù)據(jù)的度量2.數(shù)據(jù)離散程度的度量與數(shù)據(jù)的集中趨勢度量對應(yīng)的是數(shù)據(jù)的離散程度度量,即一組數(shù)據(jù)向某一中心值分散的程度。其中極差是測量數(shù)據(jù)離散程度的一個簡便方法,極差是一組數(shù)據(jù)中最大值與最小值的差距,它能說明數(shù)據(jù)的最大變動范圍,但由于它是兩個極端值進行計算得到的結(jié)果,沒有考慮到中間值的變動情況,所以只是一個較粗糙的計算離散程度的方法。除了極差以外,平均差、方差、標準差、協(xié)方差都是針對數(shù)據(jù)離散程度的度量方法。數(shù)據(jù)的度量1)平均差平均差是指各個變量值同平均數(shù)的離差絕對值的算術(shù)平均數(shù)。平均差越大,表明各標志值與算術(shù)平均數(shù)的差異程度越大,該算術(shù)平均數(shù)的代表性就越??;平均差越小,表明各標志值與算術(shù)平均數(shù)的差異程度越小,該算術(shù)平均數(shù)的代表性就越大。平均差的公式如下:平均差受極端值影響較小,所以在對數(shù)據(jù)的離散程度進行度量時比較有代表性。數(shù)據(jù)的度量2)方差和標準差方差是各個數(shù)據(jù)分別與其平均數(shù)之差的平方的和的平均數(shù),用表示(也可用var表示),由于方差是數(shù)據(jù)的平方,與檢測值本身相差太大,人們難以直觀的衡量,所以常用方差的算術(shù)平方根來度量變量和均值之間的偏離程度。方差的算術(shù)平方根就是我們常說的標準差,用表示,方差和標準差都是常用的對數(shù)據(jù)離散程度的度量方法。方差的公式如下:標準差的公式如下:其中,x表示樣本的平均數(shù),n表示樣本數(shù)量,表示個體。平均數(shù)相同的兩組數(shù)據(jù),標準差越大,說明數(shù)據(jù)離散程度越大。參考代碼數(shù)據(jù)的度量假設(shè)有A、B兩組數(shù)據(jù),A組數(shù)據(jù)[0,6,8,15,16],B組數(shù)據(jù)[7,8,9,10,11],兩組數(shù)據(jù)的平均值都是9,根據(jù)公式可計算得到A組數(shù)據(jù)的標準差約為5.9,B組數(shù)據(jù)的標準差約為1.4,說明A組數(shù)據(jù)較B組數(shù)據(jù)離散,從數(shù)據(jù)的排列上我們也可看出,A組數(shù)據(jù)間隔較大,B組數(shù)據(jù)較密集。在Numpy中實現(xiàn)方差和標準差的函數(shù)分別是var()和std()。數(shù)據(jù)的度量3)協(xié)方差協(xié)方差表示兩個變量的總體誤差,如果兩個變量的變化趨勢一致,也就是說如果其中一個大于自身的平均值,另外一個也大于自身的平均值,那么兩個變量之間的協(xié)方差就是正值。如果兩個變量的變化趨勢相反,即其中一個大于自身的平均值,另外一個卻小于自身的平均值,那么兩個變量之間的協(xié)方差就是負值。協(xié)方差的公式如下:通俗解釋就是:X變大,同時Y也變大,說明X、Y兩個變量是同向變化的,這時協(xié)方差是正的;X變大,同時Y變小,說明X、Y兩個變量是反向變化的,這時協(xié)方差是負的。總體來說就是如果協(xié)方差結(jié)果為正值,說明兩者是正相關(guān),如果協(xié)方差結(jié)果為負值,則說明兩者是負相關(guān)。如果協(xié)方差結(jié)果為0,就是統(tǒng)計上的“相互獨立“。數(shù)據(jù)的度量方差是協(xié)方差的一種特殊情況(可以理解為:方差描述一維數(shù)據(jù),協(xié)方差描述二維數(shù)據(jù))。協(xié)方差的運算性質(zhì)可總結(jié)如下:Cov(X,Y)=Cov(Y,X)Cov(aX,bY)=abCov(X,Y),(a、b是常數(shù))Cov(X1+X2,Y)=Cov(X1,Y)+Cov(X2,Y)協(xié)方差只能處理二維的問題,如果維數(shù)增加,就需要計算它們兩兩之間的協(xié)方差,這時就用到了協(xié)方差矩陣,以三維數(shù)據(jù)為例,數(shù)據(jù)集{x,y,z}的協(xié)方差矩陣為:可見,協(xié)方差矩陣是一個對稱的矩陣,而且對角線是各個維度上的方差。參考代碼數(shù)據(jù)的度量4)相關(guān)系數(shù)相關(guān)系數(shù)是最早由統(tǒng)計學(xué)家卡爾·皮爾遜設(shè)計的統(tǒng)計指標,是研究變量之間線性相關(guān)程度的量,一般用字母r表示。由于研究對象的不同,相關(guān)系數(shù)有多種定義方式,常見的相關(guān)系數(shù)為簡單相關(guān)系數(shù),簡單相關(guān)系數(shù)又稱皮爾遜相關(guān)系數(shù)或者線性相關(guān)系數(shù),公式如下:從公式中可以看出,X、Y兩個變量的相關(guān)系數(shù)就是用X、Y的協(xié)方差除以X的標準差和Y的標準差,所以相關(guān)系數(shù)也可以看成是一種剔除了兩個變量量綱影響后的特殊協(xié)方差。r值的絕對值介于0~1之間,通常來說,r越接近1,表示X、Y兩個量之間的相關(guān)程度就越強,反之,r越接近于0,X、Y兩個量之間的相關(guān)程度就越弱。數(shù)據(jù)的度量3Numpy中常用的數(shù)據(jù)度量函數(shù)總結(jié)分類度量指標概念Numpy中對應(yīng)方法集中趨勢度量平均值一組數(shù)據(jù)中所有數(shù)據(jù)之和再除以這組數(shù)據(jù)的個數(shù)mean()加權(quán)均值各數(shù)值乘以相應(yīng)的權(quán)數(shù),然后加總求和得到總體值,再除以總的單位數(shù)average()中位數(shù)一組數(shù)據(jù)按照大小順序排列后,居于中間位置的數(shù)median()離散程度度量方差各個數(shù)據(jù)分別與其平均數(shù)之差的平方的和的平均數(shù)var()標準差方差的算術(shù)平方根std()協(xié)方差表示兩個變量的總體誤差,協(xié)方差結(jié)果為正值,說明兩者是正相關(guān),協(xié)方差結(jié)果為負值,則說明兩者是負相關(guān),如果協(xié)方差結(jié)果為0,就是統(tǒng)計上的“相互獨立“cov()相關(guān)系數(shù)研究變量之間線性相關(guān)程度的量,可以看成是一種剔除了兩個變量量綱影響后的特殊協(xié)方差corrcoef()常用距離公式在數(shù)據(jù)分析過程中,經(jīng)常需要計算變量之間的距離,本節(jié)主要介紹歐式距離、曼哈頓距離、馬氏距離這3種常見的距離。1.歐式距離歐式距離,也稱歐幾里得度量(euclideanmetric),指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離,如圖所示。二維空間歐式距離公式如下:參考代碼常用距離公式1.歐式距離常用距離公式2.曼哈頓距離在介紹曼哈頓距離之前,我們先看下圖圖中紅線代表曼哈頓距離,綠色代表歐氏距離,也就是直線距離,而藍色和黃色代表等價的曼哈頓距離。曼哈頓距離(ManhattanDistance),又叫出租車幾何,是由十九世紀的赫爾曼·閔可夫斯基所創(chuàng)詞匯,是一種使用在幾何度量空間的幾何學(xué)用語,用以標明兩個點在標準坐標系上的絕對軸距總和。二維空間曼哈頓距離公式如下:公式表示坐標為(x1,y1)的i點與坐標(x2,y2)的j點的曼哈頓距離,對于一個具有正南正北、正東正西方向規(guī)則布局的城鎮(zhèn)街道,從一點到達另一點的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離,因此曼哈頓距離又稱為出租車距離,曼哈頓距離不是距離不變量,當(dāng)坐標軸變動時,點間的距離就會不同。常用距離公式2.曼哈頓距離N維空間曼哈頓距離公式如下:公式表示N維空間點i(x11,x12,…,x1n)與j(x21,x22,…,x2n)的曼哈頓距離。參考代碼常用距離公式3.馬氏距離馬氏距離(MahalanobisDistance)是由印度統(tǒng)計學(xué)家馬哈拉諾比斯(P.C.Mahalanobis)提出的,表示數(shù)據(jù)的協(xié)方差距離,它是一種有效的計算兩個未知樣本集的相似度的方法。馬氏距離是基于樣本分布的一種距離,物理意義就是在規(guī)范化的主成分空間中的歐氏距離。所謂規(guī)范化的主成分空間就是利用主成分分析對一些數(shù)據(jù)進行主成分分解,再對所有主成分分解軸做歸一化,形成新的坐標軸,由這些坐標軸形成的空間就是規(guī)范化的主成分空間,如圖所示。馬氏距離的公式如下:
常用距離公式歐氏距離雖然很常用,但是它有明顯的缺點,即將樣品的不同屬性之間的差別等同看待,即極易受量綱影響,這一點有時不能滿足實際要求。馬氏距離不受量綱的影響,兩點之間的馬氏距離與原始數(shù)據(jù)的測量單位無關(guān),馬氏距離可以排除變量之間的相關(guān)性的干擾。歐式距離與馬氏距離的對比如圖所示。參考代碼常用距離公式scipy.spatial.distance模塊下的pdist函數(shù)可以實現(xiàn)馬氏距離。舉個例子來說明,如果我們以厘米為單位來測量人的身高,以克(g)為單位測量人的體重。每個人被表示為一個兩維向量,如一個人身高173cm,體重50000g,表示為(173,50000),根據(jù)身高體重的信息來判斷體型的相似程度。我們已知小明(160,60000);小王(160,59000);小李(170,60000)。根據(jù)常識可以知道小明和小王體型相似。但是如果根據(jù)歐幾里得距離來判斷,小明和小王的距離要遠遠大于小明和小李之間的距離,即小明和小李體型相似。這是因為不同特征的度量標準之間存在差異而導(dǎo)致判斷出錯。以克(g)為單位測量人的體重,數(shù)據(jù)分布比較分散,即方差大,而以厘米為單位來測量人的身高,數(shù)據(jù)分布就相對集中,方差小。馬氏距離的目的就是把方差歸一化,使得特征之間的關(guān)系更加符合實際情況。常用概率分布概率分布,是指用于表述隨機變量取值的概率規(guī)律介紹,簡單理解就是在統(tǒng)計圖中表示概率,橫軸是數(shù)據(jù)的值,縱軸是橫軸上對應(yīng)數(shù)據(jù)值的概率。概率分布可以很好地展現(xiàn)數(shù)據(jù)的內(nèi)在規(guī)律,這里介紹幾種常用的概率分布。1.0-1分布(伯努利分布)0-1分布又稱伯努利分布(BernouliDistribution)、兩點分布,是一個最簡單的分布,即只先進行一次事件試驗,該事件發(fā)生的概率為p,不發(fā)生的概率為q=1-p,0-1分布也就是n=1情況下的二項分布,任何一個只有兩種結(jié)果的隨機現(xiàn)象都服從0-1分布。k=0時,P{X=0}=1-p;k=1時,P{X=1}=p。其中,0<p<1,則稱X服從0-1分布。常用概率分布2.二項分布(n重伯努利分布)二項分布(Binomialdistribution)就是重復(fù)n次獨立的伯努利試驗。在每次試驗中只有兩種可能的結(jié)果,而且兩種結(jié)果發(fā)生與否互相對立,并且相互獨立,與其它各次試驗結(jié)果無關(guān),事件發(fā)生與否的概率在每一次獨立試驗中都保持不變,則這一系列試驗總稱為n重伯努利實驗,當(dāng)試驗次數(shù)為1時,二項分布服從0-1分布。二項分布的公式如下:通俗理解,當(dāng)你遇到一個事情,如果該事情發(fā)生次數(shù)固定,而你感興趣的是成功的次數(shù),那么就可以用二項分布的公式快速計算出概率來。其中,X指的是試驗的次數(shù),指的是組合,這個公式表示一個伯努利分布中得1的概率為p,0的概率為1-p,那么連續(xù)試驗n次,出現(xiàn)p的情況恰好是k次的概率。我們舉一個生活中的例子,假如小明參加英語四級考試,每次考試通過的概率是1/3,如果他連續(xù)考試4次,恰好通過2次的概率是多少?這個例子中p=1/3,n=4,k=2,代入公式:所以小明連續(xù)考試4次,恰好通過2次的概率是8/27。參考代碼常用概率分布3.正態(tài)分布正態(tài)分布(NormalDistribution),也稱“常態(tài)分布”,又名高斯分布(Gaussiandistribution),最早由德國的數(shù)學(xué)家和天文學(xué)家Moivre于1733年在求二項分布的漸近公式中得到,但由于德國數(shù)學(xué)家Gauss率先將其應(yīng)用于天文學(xué)家研究,故正態(tài)分布又叫高斯分布。正態(tài)分布是一個在數(shù)學(xué)、物理及工程等領(lǐng)域都非常重要的概率分布,在統(tǒng)計學(xué)的許多方面有著重大的影響力。正態(tài)曲線呈鐘型,兩頭低,中間高,左右對稱因其曲線呈鐘形,因此人們又經(jīng)常稱之為鐘形曲線。正態(tài)分布的公式如下:公式表示若隨機變量X服從一個數(shù)學(xué)期望為μ(數(shù)學(xué)期望可以理解為均值)、方差為σ2的正態(tài)分布,記為N(μ,σ2)。其概率密度函數(shù)為正態(tài)分布的期望值μ決定了其位置,其標準差σ決定了分布的幅度。當(dāng)μ=0,σ=1時的正態(tài)分布是標準正態(tài)分布。常用概率分布標準正態(tài)分布公式如下:正態(tài)分布是用來描述統(tǒng)計對象的,如果統(tǒng)計對象的分布特性符合正態(tài)分布,那么所有針對正態(tài)分布的定理和“經(jīng)驗值”都能全部套用。正態(tài)分布在自然界的應(yīng)用是很普遍的,它的特點可總結(jié)為:“一般般的很多,極端的很少”,正態(tài)分布曲線如圖所示。
參考代碼常用概率分布例:如對某一地區(qū)的女性身高做了一個隨機抽樣,一共1000人,結(jié)果發(fā)現(xiàn)他們的身高是一個,的正態(tài)分布,則可總結(jié)出:身高150~160cm和身高160~170cm的人分別有341名,共計682名(μ-σ和μ+σ之間);身高140~150cm和身高170~180cm的人分別有136名,共計272名;身高130~140cm和身高180~190cm的人分別有21名,共計42名。這些數(shù)量已經(jīng)涵蓋了統(tǒng)計總?cè)藬?shù)的99.6%,同樣地,正態(tài)分布我們也可以使用Scipy實現(xiàn)。常用概率分布4.泊松分布泊松分布(PoissonDistribution),是一種統(tǒng)計與概率學(xué)里常見到的離散概率分布,由法國數(shù)學(xué)家西莫恩·德尼·泊松(Siméon-DenisPoisson)在1838年時發(fā)表。泊松分布公式如下:
常用概率分布泊松分布曲線如圖所示。泊松分布適用的事件需滿足3個條件:A.事件是小概率事件。B.事件的每次發(fā)生都是獨立的,不會互相影響。C.事件的概率是穩(wěn)定的。常用概率分布
參考代碼PART02數(shù)據(jù)可視化可視化圖表認知可視化圖表是利用點、線、面、體等要素繪制而成,用于呈現(xiàn)數(shù)據(jù)大小關(guān)系、變動情況、分布情況等信息的圖形。數(shù)據(jù)可視化具有形象生動、通俗易懂、簡潔明了等優(yōu)點,在大數(shù)據(jù)時代,數(shù)據(jù)可視化可以和數(shù)據(jù)倉庫、數(shù)據(jù)挖掘等技術(shù)結(jié)合使用實現(xiàn)商業(yè)智能。可視化圖表認知1.數(shù)據(jù)可視化特性真實性可視化結(jié)果應(yīng)該準確地反應(yīng)數(shù)據(jù)的本質(zhì)。01直觀性數(shù)據(jù)呈現(xiàn)要直觀、形象,有利于人們認知數(shù)據(jù)背后所蘊藏的現(xiàn)象和規(guī)律。關(guān)聯(lián)性可視化時要突出地呈現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián)性。藝術(shù)性可視化時要充分考慮大眾審美,使數(shù)據(jù)呈現(xiàn)更有藝術(shù)性。交互性數(shù)據(jù)呈現(xiàn)時要方便用戶控制數(shù)據(jù),實現(xiàn)用戶和數(shù)據(jù)的可交互性。02030405可視化圖表認知2.可視化圖表分類分類圖表名字作用類別比較型【比較類別之間的不同】柱形圖柱形圖適用于二維數(shù)據(jù)集中(x軸、y軸),一個維度數(shù)據(jù)的比較,利用柱子的高度,反映數(shù)據(jù)的差異;文本維度/時間維度通常作為x軸,數(shù)值型維度作為y軸餅圖餅圖適用于二維數(shù)據(jù)中,一個維度數(shù)據(jù)的占比情況(各項占總體的占比),多用于反映某個部分占整體的比重;數(shù)據(jù)不精細,不適合分類較多的情況雷達圖雷達圖適用于多維數(shù)據(jù)(四維以上),且每個維度必須可以排序,常用于多項指標的綜合分析,可用于經(jīng)營狀況,財務(wù)健康程度分析;但是雷達圖數(shù)據(jù)點最多6個,否則無法辨別數(shù)據(jù)關(guān)系型【查看兩個或兩個以上變量之間的關(guān)系】散點圖適用于二維數(shù)據(jù)(2個連續(xù)字段分別映射到x、y軸),觀察數(shù)據(jù)的分布情況;也可用于三維數(shù)據(jù),可以用形狀或顏色標識第三維氣泡圖氣泡圖是散點圖的一種變體,通過每個點的面積大小,反映第三維;因為用戶不善于判斷面積大小,所以氣泡圖只適用不要求精確辨識第三維的場合數(shù)據(jù)分布型【查看數(shù)據(jù)的分布情況】直方圖直方圖用于展示數(shù)據(jù)在不同區(qū)間內(nèi)的分布情況;柱形圖矩形長度代表頻數(shù),寬度代表類別,面積無意義;直方圖矩形長度代表頻數(shù),寬度代表組距,面積有意義箱線圖箱線圖是一種用于顯示一組數(shù)據(jù)分布情況的統(tǒng)計圖,用最大值、最小值、中位數(shù)、下四分位數(shù)、上四分位數(shù)共5個數(shù)字對分布進行概括熱力圖適用于三維數(shù)據(jù)(3個連續(xù)字段,2個分布映射到x、y軸,第3個映射到顏色),以高亮形式展現(xiàn)數(shù)據(jù),常和地圖組合用于表現(xiàn)道路交通狀況時間序列型【數(shù)據(jù)隨著時間的變化趨勢】折線圖適合多個二維數(shù)據(jù)集的比較,適合數(shù)據(jù)量較大的數(shù)據(jù)地理空間型【代表地理分布】地圖需要用到坐標維度,可以是經(jīng)緯度、也可以是地域名稱,可以與散點圖、熱力圖、曲線圖等結(jié)合使用可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。1)柱形圖柱形圖(BarChart),又稱柱狀圖、長條圖,是一種以長方形的長度為度量的統(tǒng)計圖表。柱形圖是分析師最常用到的圖表之一,旨在利用柱子的高度,反映數(shù)據(jù)的差異,適用于二維數(shù)據(jù)集中(x軸、y軸),一個維度數(shù)據(jù)的比較,文本維度/時間維度通常作為x軸,數(shù)值型維度作為y軸。柱形圖按照呈現(xiàn)方式可分為基礎(chǔ)柱形圖、橫向柱形圖、多柱形圖、堆積柱形圖等,如圖所示??梢暬瘓D表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。2)餅圖餅圖(英文學(xué)名為SectorGraph,又名PieGraph)經(jīng)常表示一組數(shù)據(jù)的占比,可以用扇面、圓環(huán)、或者多圓環(huán)嵌套。餅圖適用于二維數(shù)據(jù)中,一個維度數(shù)據(jù)的占比情況(各項占總體的占比),多用于反映某個部分占整體的比重,餅圖數(shù)據(jù)不精細,不適合分類較多的情況。餅圖按照呈現(xiàn)方式可分為基礎(chǔ)餅圖、分裂餅圖、陰影餅圖、環(huán)形圖等,如圖所示??梢暬瘓D表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。3)雷達圖雷達圖也叫蛛網(wǎng)圖,常用于企業(yè)經(jīng)營狀況,財務(wù)健康程度的分析。在財務(wù)分析領(lǐng)域,雷達圖是重要的工具,可以將本單位的各種財務(wù)比率和友商或整個行業(yè)的財務(wù)比率進行橫向?qū)Ρ?,也可以將?dāng)前的財務(wù)比率和之前的財務(wù)比率進行縱向?qū)Ρ?。圖為某單位06年和10年主要財務(wù)支出的對比圖??梢暬瘓D表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。4)散點圖散點圖(ScatterGraph)也叫X-Y圖,它將所有的數(shù)據(jù)以點的形式展現(xiàn)在直角坐標系上,以顯示變量之間的相互影響程度,點的位置由變量的數(shù)值決定。散點圖主要用于查看數(shù)據(jù)的分布情況,對于那些變量之間存在密切關(guān)系,但是這些關(guān)系又不像數(shù)學(xué)公式和物理公式那樣能夠精確表達的,散點圖是一種很好的圖形工具。散點圖適用于二維數(shù)據(jù),2個連續(xù)字段分別映射到x、y軸,然后觀察數(shù)據(jù)的分布情況,也可用于三維數(shù)據(jù),可以用形狀或顏色標識第三維。圖為散點圖示例。從圖中可以看出,散點圖能讓我們發(fā)現(xiàn)變量之間隱藏的關(guān)系,可以為決策作出重要的引導(dǎo)作用。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。5)直方圖直方圖(Histogram),又稱質(zhì)量分布圖,是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況,一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況,如圖所示。直方圖和柱形圖很類似,兩者之間的區(qū)別可總結(jié)如下:直方圖用于展示數(shù)據(jù)在不同區(qū)間內(nèi)的分布情況。柱形圖矩形長度/高度代表頻數(shù),寬度代表類別,面積無意義。直方圖矩形長度/高度代表頻數(shù),寬度代表組距,面積有意義。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。6)箱線圖箱線圖又稱盒須圖、盒式圖和箱型圖,是一種用作顯示一組數(shù)據(jù)分布情況的統(tǒng)計圖。箱線圖主要用于反映原始數(shù)據(jù)分布的特征,還可以進行多組數(shù)據(jù)分布特征的比較。箱線圖用5類數(shù)字對分布進行概括,即一組數(shù)據(jù)的最大值、最小值、中位數(shù)、下四分位數(shù)及上四分位數(shù),對于數(shù)據(jù)集中的異常值,通常會以單獨的點的形式繪制,如圖所示。從箱線圖中我們可以觀察到如下信息:數(shù)據(jù)集的最大值、最小值、中位數(shù)等關(guān)鍵信息。數(shù)據(jù)集中是否存在異常值。數(shù)據(jù)的分布情況(分散還是集中,是否對稱等)。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。7)熱力圖熱力圖即以高亮形式展現(xiàn)數(shù)據(jù),最初是由軟件設(shè)計師CormacKinney于1991年提出并創(chuàng)造的,用來描述一個2D顯示實時金融市場信息。經(jīng)過多年的演化,如今的熱力圖更規(guī)范,常用來表示道路交通狀況和APP用戶行為分析等。圖為熱力圖示例。Python數(shù)據(jù)可視化可以實現(xiàn)數(shù)據(jù)可視化的工具很多,包括Tableau、Echars等。這里主要介紹使用Python的Matplotlib庫實現(xiàn)數(shù)據(jù)可視化。Matplotlib是Python中最基礎(chǔ)也是最核心的數(shù)據(jù)可視化庫,它不僅提供散點圖、折線圖、餅圖等常用的圖表繪制函數(shù),而且提供豐富的畫布設(shè)置、顏色設(shè)置等方法。繪制圖表的步驟一般可總結(jié)為設(shè)置畫布(可不設(shè)置,采用默認),繪制圖像(折線圖、散點圖、柱形圖等),設(shè)置標題、網(wǎng)格線、圖例等,展示圖像。1.設(shè)置畫布Matplotlib的pyplot包中的figure方法用于設(shè)置畫布,語法如下:matplotlib.pyplot.figure(num,figsize,dpi,facecolor,edgecolor,frameon=True)參數(shù)描述num圖像編號或名稱figsize指定畫布的大小,單位為英寸dpi分辨率,即每英寸包含多少像素,默認為80facecolor背景顏色edgecolor邊框顏色frameon是否顯示邊框,默認為TruePython數(shù)據(jù)可視化2.繪制一個圖像Matplotlib的pyplot包中封裝了很多畫圖的函數(shù),包括折線圖、柱形圖、餅圖等。其中plot是最基本的繪圖函數(shù),用于繪制折線圖,接下來我們就用plot函數(shù)演示如何繪制一個圖表,代碼如下:importnumpyasnpimportmatplotlib.pyplotasplt#設(shè)置畫布plt.figure(num='001',figsize=(5,6),dpi=150,edgecolor='b',frameon=False)#構(gòu)建x軸、y軸數(shù)據(jù)x=np.arange(100)y=np.square(x)#使用plot函數(shù)繪制圖表plt.plot(x,y)#展示圖像plt.show()Python數(shù)據(jù)可視化3.設(shè)置標題、圖例等標題、圖例等其他設(shè)置的相關(guān)方法總結(jié)如表所示。函數(shù)說明舉例title()設(shè)置圖表標題plt.title("折線圖",{'fontsize':15,'va':'bottom'})xlabel()設(shè)置x軸標題plt.xlabel("x軸")ylabel()設(shè)置y軸標題plt.ylabel("y軸")xticks()設(shè)置x軸刻度plt.xticks([2,4,6,8])grid()設(shè)置網(wǎng)格線plt.grid(color='#191970',axis='x')legend()設(shè)置圖例plt.legend(('圖例',),loc='upperleft',fontsize=10)text()設(shè)置文本標簽plt.text(0,19,'19',ha='center',va='bottom',fontsize=9)參考代碼Python數(shù)據(jù)可視化3.設(shè)置標題、圖例等有了這些設(shè)置,我們就可以畫一個內(nèi)容相對豐富的圖像,代碼如下:Python數(shù)據(jù)可視化4.繪制子圖Matplotlib可以繪制子圖,即把很多張圖畫到一個顯示界面,在作對比分析的時候非常有用。Matplotlib繪制子圖最常用的兩種方式分別是通過matplotlib.pyplot的subplot方法和通過matplotlib.pyplot.figure的add_subplot方法,舉例如下:importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#正常顯示中文標簽、符號plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(10,6),dpi=100)#使用plt的subplot方法#畫第1個圖x1=np.arange(1,100)plt.subplot(221)plt.title('繪制y=x*x圖像')plt.plot(x1,x1*x1)#畫第2個圖plt.subplot(222)plt.title('繪制y=1/x的圖像')plt.plot(x1,1/x1)#使用figure的add_subplot方法fig=plt.figure(figsize=(10,6),dpi=100)#畫第3個圖x2=np.arange(0,3*np.pi,0.1)ax1=fig.add_subplot(221)plt.title('繪制正弦函數(shù)')ax1.plot(x2,np.sin(x2))#畫第4個圖ax2=fig.add_subplot(222)plt.title('繪制余弦函數(shù)')ax2.plot(x2,np.cos(x2))plt.show()使用Matplotlib繪制常用圖表Matplotlib可以繪制多種圖表,折線圖、柱形圖、餅圖、散點圖等常用圖表的實現(xiàn)方法總結(jié)如表所示。方法說明描述plot()折線圖可通過參數(shù)設(shè)置曲線顏色、線條格式、標記樣式等屬性bar()柱形圖可繪制多柱形圖、堆積柱形圖、橫向柱形圖等多種形式柱形圖pie()餅圖可繪制分裂餅圖、陰影餅圖、環(huán)形圖等多種形式餅圖scatter()散點圖可通過參數(shù)設(shè)置散點的大小、顏色、形狀等屬性hist()直方圖可繪制縱向、橫向直方圖,可設(shè)置箱子個數(shù)、顏色等屬性boxplot()箱線圖可繪制凹口和非凹口形式的箱線圖imshow()熱力圖可設(shè)置顏色地圖和索引位置使用Matplotlib繪制常用圖表1Matplotlib繪制折線圖plot方法是Matplotlib的pyplot
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江2024年黑龍江日報報業(yè)集團招聘20人筆試歷年參考題庫附帶答案詳解
- 健康飲食和心腦血管疾病
- 健康科普知識推廣
- 2016-2017學(xué)年高一地理課件:第2章-第1節(jié)《地殼物質(zhì)組成和物質(zhì)循環(huán)》(湘教版必修1)
- 不同類型危險化學(xué)品的運輸特點和要求
- Unit 3 What would you like?PartC(說課稿)-2024-2025學(xué)年人教PEP版英語五年級上冊
- 2024秋一年級語文上冊 課文 4 12 雪地里的小畫家說課稿 新人教版
- 鋁合金項目可行性分析報告(模板參考范文)
- Unit 3 Amazing animals 第一課時(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- Unit 2 My week PartB Read and write (說課稿)2024-2025學(xué)年人教PEP版英語五年級上冊
- 品牌策劃與推廣-項目5-品牌推廣課件
- 信息學(xué)奧賽-計算機基礎(chǔ)知識(完整版)資料
- 發(fā)煙硫酸(CAS:8014-95-7)理化性質(zhì)及危險特性表
- 數(shù)字信號處理(課件)
- 公路自然災(zāi)害防治對策課件
- 信息簡報通用模板
- 社會組織管理概論全套ppt課件(完整版)
- 火災(zāi)報警應(yīng)急處置程序流程圖
- 耳鳴中醫(yī)臨床路徑
- 安徽身份證號碼前6位
- 分子生物學(xué)在動物遺傳育種方面的應(yīng)用
評論
0/150
提交評論