《大數據運營》 課件 第4-6章 基于Python的數據處理技術、基于Python的數據統計與可視化、大數據運營綜合應用_第1頁
《大數據運營》 課件 第4-6章 基于Python的數據處理技術、基于Python的數據統計與可視化、大數據運營綜合應用_第2頁
《大數據運營》 課件 第4-6章 基于Python的數據處理技術、基于Python的數據統計與可視化、大數據運營綜合應用_第3頁
《大數據運營》 課件 第4-6章 基于Python的數據處理技術、基于Python的數據統計與可視化、大數據運營綜合應用_第4頁
《大數據運營》 課件 第4-6章 基于Python的數據處理技術、基于Python的數據統計與可視化、大數據運營綜合應用_第5頁
已閱讀5頁,還剩183頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Python的數據處理技術本章知識點(1)了解網絡爬蟲與數據采集的概念。(2)理解NumPy數值計算庫。(3)理解Pandas數據分庫。(4)掌握網絡爬蟲與數據采集的方法。(5)掌握NumPy和Pandas應用。01網絡爬蟲與數據采集02數據處理PART01網絡爬蟲與數據采集網絡爬蟲網絡爬蟲是一種數據采集的主要方式,也是通過網絡獲取數據信息的主要手段和工具。談起網絡爬蟲,離不開搜索引擎,搜索引擎是伴隨互聯網的發展而產生和發展的,幾乎每個人上網都會使用搜索引擎,例如百度、谷歌都是大家常用的搜索引擎。搜索引擎的工作過程可以簡單視為從互聯網上抓取信息、建立索引、搜索信息三個部分,抓取信息的主要方式就是采用網絡爬蟲。網絡爬蟲,又稱為網絡蜘蛛,網絡機器人,是一種按照一定的規則,自動地抓取互聯網信息的程序或者腳本。網絡蜘蛛即WebSpider,是一個非常形象的名字。把互聯網比喻成一個蜘蛛網,那么Spider就是在網上爬來爬去的蜘蛛。網絡蜘蛛是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站所有的網頁都抓取完為止。如果把整個互聯網當成一個網站,那么網絡蜘蛛就可以用這個原理把互聯網上所有的網頁都抓取下來。這樣看來,網絡蜘蛛就是一個爬行程序,一個抓取網頁的程序。網絡蜘蛛實際上是一種電腦“機器人”(ComputerRobot),一種專門用于檢索信息的“機器人”程序,就像蜘蛛一樣在網絡間爬來爬去,反反復復,不知疲倦。所以,網絡爬蟲也叫網絡機器人。網絡爬蟲除了通過頁面進行數據采集,也可以通過各種網絡接口采集數據,例如通過RestfulAPI接口訪問數據,這樣獲取的數據格式更加規范,更加易于處理。網絡爬蟲有網絡爬蟲就有反爬蟲。有些網站為了避免數據被爬取,會采用各種各樣的反爬蟲措施。反爬蟲技術主要分為兩個環節,一是識別爬蟲、二是對爬取信息做出限制。對應我們的網站也可以設置網絡爬蟲的規則,這里就涉及到robots協議。Robots協議(也稱為爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標準”(RobotsExclusionProtocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。其目的是保護網站數據和敏感信息,確保用戶個人信息和隱私不被侵犯。robots.txt(統一小寫)是一種存放于網站根目錄下的ASCII編碼的文本文件,對搜索引擎訪問的內容進行限制。

為什么需要Robots協議呢?互聯網上的網頁是通過超級鏈接互相關聯起來的,從而形成了網頁的網狀結構。爬蟲的工作方式就像蜘蛛在網上沿著鏈接爬來爬去,對于網站的管理者來說,就存在這樣的需求,某些路徑下是個人隱私或者網站管理使用,不想被搜索引擎抓取,比如說商品數據;網站內容的所有者是網站管理員,搜索引擎應該尊重所有者的意愿,為了滿足以上要求,就需要提供一種網站和爬蟲進行溝通的途徑,給網站管理員表達自己意愿的機會。那么robots協議就此誕生,通過robots協議設置允許網絡爬蟲爬取信息的權限和范圍。數據采集數據采集是更大的概念,上節所述的網絡爬蟲只是數據采集的一種方式。數據采集是進行大數據分析的前提也是必要條件,在整個流程中占據重要地位。數據采集的流程即使從網絡爬蟲的方式來講也涉及到幾個環節,一是通過網絡爬蟲爬取數據,二是爬取數據需要把數據存儲起來,三是存儲的數據進行數據的清洗等。本節概述完數據采集后,我們對網絡爬蟲及數據采集涉及到的一些基本概念和技術做進一步的介紹。常見的數據采集方式有系統日志采集法、數據庫采集、網絡數據采集法以及其他數據采集法等等。網絡數據采集法就是本章的網絡爬蟲涉及到的內容。數據采集系統日志采集法,顯而易見,就是采集日志信息。在我們的操作系統中,我們使用的各種應用與服務,大部分都有日志文件,系統日志、應用日志、安全日志等。我們都知道Linux操作系統在服務器中應用非常廣泛,Linux就有非常完備的日志管理系統;用于記錄Linux操作系統中各種運行的消息,不同的日志文件記載了不同類型的信息,如Linux內核消息、用戶登錄事件、程序錯誤等。Linux系統上運行的各種應用程序也提供日志管理,例如Web應用服務系統Nginx或者Tomcat應用,我們就可以從Nginx或者Tomcat應用服務器中采集到每個訪問用戶的來源IP地址、訪問時間、瀏覽的頁面、用戶使用的瀏覽器信息等等,通過這些信息,我們可以用來分析頁面點擊量,分析哪些頁面更受用戶喜歡。數據庫采集數據采集數據庫采集主要從數據庫系統中采集數據,傳統企業會使用傳統的關系型數據庫MySQL和Oracle等來存儲數據。隨著大數據時代的到來,Redis、MongoDB和HBase等NoSQL數據庫也常用于數據的采集。企業通過在采集端部署大量數據庫,并在這些數據庫之間進行負載均衡和分片,來完成大數據采集工作。關于數據庫,我們知道有關系型數據庫和非關系型數據庫之分,關系型數據庫的數據結構定義是嚴格和約束嚴謹的,數據存儲的單元是數據庫表,數據庫表有各種數據類型的字段,數據庫表之間通過外鍵形成關系。我們把關系型數據庫存儲的數據稱之謂結構化數據。關系型數據庫對應的有非關系型數據庫,存儲的是非結構化的數據,什么是非結構化的數據呢?我們常見的文檔、圖片、視頻這類數據就是非結構化數據。互聯網上我們瀏覽到的更多的就是這類數據。網絡爬蟲主要針對的就是這類非結構化的數據。網絡采集到的數據需要進行存儲,就需要技術人員選擇存儲的方式,是選擇關系型數據庫還是非關系型數據庫,需要技術人員對這兩種不同類型的數據庫優勢、劣勢非常清楚才能做出合理和正確的選型。其他數據采集包括感知設備數據采集,通過傳感器、攝像頭和其他智能終端自動采集信號、圖片或錄像來獲取數據等,這里不做過多敘述。網絡爬蟲與數據采集相關知識本章會通過代碼來展示網絡爬蟲和數據采集的過程,讓讀者能夠通過代碼擴展更多的概念,掌握一些入門的技術。網絡爬蟲和數據采集我們會提供一個完整的、簡單的項目案例,通過從網絡上爬取未來7天的天氣數據,進行一些簡單的處理。主要涉及到的知識有Python編程語言、http或https網絡請求、RestfulAPI編程接口、Python網絡相關軟件模塊等。下面逐一進行介紹。案例網絡爬蟲與數據采集相關知識1.Python編程語言Python編程語言在大數據、人工智能技術中應用非常廣泛,后面小節會采用Python編程語言進行代碼實現,代碼實現相對簡單,讀者可以自行安裝一個Python編程環境,通過代碼來認識Python,掌握最基本的Python語言程序結構即可。讓我們認識一下基本的程序結構:#-*-coding:UTF-8-*-defsay_hello():greet_string="hello,world!"#定義一個字符串print(greet_string)#打印字符串if__name__=='__main__':#程序入口say_hello()保存文件為helloWorld.py,運行程序命令:python.\helloWorld.py,就會輸出hello,world!字符串。在這個簡單的程序中,我們定義了一個函數say_hello(),在main主程序體種調用了該函數。并對程序作了部分的注釋。網絡爬蟲與數據采集相關知識2.網絡請求網絡爬蟲需要訪問互聯網,因此,我們需要了解訪問互聯網所使用的協議http、https、頁面的請求(request)與響應(response)的概念。我們通過瀏覽器訪問一個常用的網站:。打開瀏覽器開發者工具,訪問截圖如下:通過開發者工具查看的截圖,我們可以看到請求的網頁的詳細信息,你可以看到請求、響應的數據,可以查看到cookie、session,可以查詢到網頁使用的css樣式文件、js文件以及圖片等數據。具體大家可以通過瀏覽器打開開發者工具詳細探索一番。這里主要講一些基本的概念。這里要講的就是http和https。網絡爬蟲與數據采集相關知識剛才我們訪問的詳細地址是“”,使用的就是https協議。http和https是實現網絡通信的網絡協議,網絡協議是計算機之間為了實現網絡通信而達成的一種“約定”或者”規則“,有了這種”約定“,不同廠商的生產設備,以及不同操作系統組成的計算機之間,就可以實現通信。HTTP協議是超文本傳輸協議的縮寫,英文是HyperTextTransferProtocol。它是從WEB服務器傳輸超文本標記語言(HTML)到本地瀏覽器的傳送協議。http協議支持客戶端/服務端模式,也是一種請求/響應模式的協議。請求方法常用的有GET、POST、patch、delete。從剛才我們請求的截圖中就能看到采用的請求方法是get。HTTPS是HTTP協議的安全版本,HTTP協議的數據傳輸是明文的,是不安全的,HTTPS使用了SSL/TLS協議進行了加密處理。HTTPS協議(HyperTextTransferProtocoloverSecureSocketLayer),一般理解為HTTP+SSL/TLS,通過SSL證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信進行加密來實現數據的安全性。SSL(SecureSocketLayer,安全套接字層),為數據通訊提供安全支持。http和https使用連接方式不同,默認端口也不一樣,http是80,https是443。網絡爬蟲與數據采集相關知識通過開發者工具你可以看到請求頭和響應頭,這在網絡請求、web前端開發中經常用到的知識。請求頭:請求頭是客戶端發送給服務器端的一些信息,使用鍵值對表示,常見的請求頭及其含義如下:常見請求頭描述Referer瀏覽器通知服務器,當前請求來自何處。如果是直接訪問,則不會有這個頭。常用于:防盜鏈If-Modified-Since瀏覽器通知服務器,本地緩存的最后變更時間。與另一個響應頭組合控制瀏覽器頁面的緩存。Cookie與會話有關技術,用于存放瀏覽器緩存的cookie信息。User-Agent瀏覽器通知服務器,客戶端瀏覽器與操作系統相關信息Connection保持連接狀態。Keep-Alive連接中,close已關閉Host請求的服務器主機名Content-Length請求體的長度Content-Type如果是POST請求,會有這個頭,默認值為application/x-www-form-urlencoded,表示請求體內容使用url編碼Accept:瀏覽器可支持的MIME類型。文件類型的一種描述方式。MIME格式:大類型/小類型[;參數]例如:text/html,html文件text/css,css文件text/javascript,js文件image/*,所有圖片文件Accept-Encoding瀏覽器通知服務器,瀏覽器支持的數據壓縮格式。如:GZIP壓縮Accept-Language瀏覽器通知服務器,瀏覽器支持的語言。各國語言(國際化i18n)網絡爬蟲與數據采集相關知識響應頭:響應也是鍵值對形式,服務器端將信息以鍵值對的形式返回給客戶端。常見請求頭描述Location指定響應的路徑,需要與狀態碼302配合使用,完成跳轉。Content-Type響應正文的類型(MIME類型)取值:text/html;charset=UTF-8Content-Disposition通過瀏覽器以下載方式解析正文取值:attachment;filename=xx.zipSet-Cookie與會話相關技術。服務器向瀏覽器寫入cookieContent-Encoding服務器使用的壓縮格式取值:gzipContent-length響應正文的長度Refresh定時刷新,格式:秒數;url=路徑。url可省略,默認值為當前頁。取值:3;url=//三秒刷新頁面到Server指的是服務器名稱,默認值:Apache-Coyote/1.1。可以通過conf/server.xml配置進行修改。<Connectorport="8080"...server="itcast"/>Last-Modified服務器通知瀏覽器,文件的最后修改時間。與If-Modified-Since一起使用。網絡爬蟲與數據采集相關知識3.RESTfulAPI接口與JSON數據格式要弄清楚什么是RESTfulAPI,首先要知道REST是什么。1)表示性狀態轉移(representationstatetransfer,REST)用URI表示資源,用HTTP的方法(GET,POST,PUT,DELETE)表征對這些資源進行操作。RESTfulAPI就是REST風格的API。現在終端平臺多樣,移動、平板、PC等許多媒介向服務端發送請求后,如果不適用RESTfulAPI,需要為每個平臺的數據請求定義相應的返回格式,以適應前端顯示。但是RESTfulAPI要求前端以一種預定義的語法格式發送請求,那么服務端就只需要定義一個統一的響應接口,不必像之前那樣解析各色各式的請求。Resource:資源,即數據,存在互聯網上的可被訪問的實體Representation:數據的某種表現形式,如HTML,JSON。StateTransfer:狀態變化,HTTP方法實現網絡爬蟲與數據采集相關知識2)RESTful是典型的基于HTTP的協議RESTful有以下設計原則和規范資源首先要明確資源就是網絡上的一個實體,可以是文本、圖片、音頻、視頻。資源總是以一定的格式來表現自己。文本用txt、html;圖片用JPG、JPEG等等。而JSON是RESTfulAPI中最常用的資源表現格式。統一接口對于業務數據的CRUD,RESTful用HTTP方法與之對應。URI統一資源標識符,它可以唯一標識一個資源。注意到,URL(統一資源定位符)是一種URI,因為它可以唯一標志資源。但URL!=URI。應該說URL是URI的子集。因為URL使用路徑來唯一標識資源,這只是唯一標識資源的一種方式。還可以用一個唯一編號來標識資源,如example.html.fuce2da23。只不過這種方式并不被廣泛使用。總之,要在概念上對URL和URI有所區分。無狀態所謂無狀態是指所有資源都可以用URI定位,而且這個定位與其他資源無關,不會因為其他資源的變動而變化。這里引入一個冪等性的概念:無論一個操作被執行一次還是多次,執行后的效果都相同。比如對某資源發送GET請求,如果訪問一次和訪問十次獲得的數據一樣,那么就說這個請求具有冪等性。01030402網絡爬蟲與數據采集相關知識3)JSON(JavaScriptObjectNotation)是一種輕量級的數據交換格式JSON采用完全獨立于語言的文本格式,這些特性使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。JSON數據格式有兩種結構:“名稱/值”對的集合(Acollectionofname/valuepairs)。不同的語言中,它被理解為對象(object),記錄(record),結構(struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關聯數組(associativearray)。示例:{"firstName":"Jack","lastName":"Smith","email":"smith@"}值的有序列表(Anorderedlistofvalues)。在大部分語言中,它被理解為數組(array)。{"people":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}]}網絡爬蟲與數據采集相關知識4)RESTfulAPI接口以及JSON數據格式如何調用一個http接口。這里有一個開放免費的天氣API,大家可以自己注冊一個免費賬號進行測試。接口如下:接口解釋:Url:/free/week/api方法(method):GET請求的參數:appid、appsecret、city,appid和appsecret是注冊用戶的id和密鑰,用于安全認證使用。接下來我們直接從瀏覽器中訪問查看返回的數據。/free/week?appid=53487633&appsecret=eQs06GRV&city=北京網絡爬蟲及數據采集應用本節我們希望能夠掌握簡單的數據采集的實現,主要介紹采用Python語言進行程序編寫,使用Python網絡請求模塊進行網絡請求,采集到的數據存儲到本地JSON格式文件。數據源來至于/網,我們通過網絡請求獲取未來7天的天氣情況。本節主要是為了示例,不采集所有城市的數據,選擇10個城市采集未來7天的天氣情況,城市選擇包括:北京、上海、廣州、深圳、南寧、桂林、天津、重慶、哈爾濱、拉薩。采集的接口如下:請求地址(URL):/free/week請求方法:GET請求參數說明:參數名必選類型說明備注(示例)appid是string用戶appid需要注冊免費賬號,查看appidappsecret是string用戶appsecret需要注冊免費賬號,查看appsecretcityid否string城市ID請參考城市ID列表city否string城市名稱不要帶市和區,支持市區縣,不支持鄉鎮級別;如:青島、鐵西ip否stringIP地址查詢IP所在城市天氣callback否stringjsonp參數如:jQuery.Callbacksvue否string跨域參數如果您使用的是react、vue、angular請填寫值:1網絡爬蟲及數據采集應用響應參數說明:參數名類型說明備注cityidString城市ID

cityString城市名稱

update_timeString更新時間

dateString預報日期

weaString天氣情況

wea_imgString天氣對應圖標

tem_dayString白天溫度(高溫)

tem_nightString白天溫度(低溫)

winString風向

win_speedString風力等級網絡爬蟲及數據采集應用我們先采用postman軟件工具測試一個城市接口,采集“北京”未來7天的天氣情況:請求地址:/free/week?appid=53487633&appsecret=eQs06GRV&city=北京下面Python程序進行10個城市的數據采集,先簡單寫一個城市的數據采集代碼:#-*-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的程序運行體在前面介紹過,執行該程序首先需要Python運行環境,執行過程只需要一個命令:python.\dataCollecting.py;requests模塊Python的一個軟件庫,一個常用HTTP請求的模塊,它使用python語言編寫,可以方便的對網頁進行爬取,是學習python爬蟲較好的http請求模塊。安裝也非常簡單:pipinstallrequests;json()是Python的內置函數,是把Python對象轉化成json數據格式的函數。網絡爬蟲及數據采集應用運行結果: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':'東北風','win_speed':'3-4級轉<3級'},{'date':'2021-05-13','wea':'多云','wea_img':'yun','tem_day':'26','tem_night':'16','win':'東南風','win_speed':'3-4級轉<3級'},{'date':'2021-05-14','wea':'多云轉陰','wea_img':'yun','tem_day':'28','tem_night':'18','win':'東南風','win_speed':'3-4級轉<3級'},{'date':'2021-05-15','wea':'小雨','wea_img':'yu','tem_day':'22','tem_night':'14','win':'北風','win_speed':'3-4級'},{'date':'2021-05-16','wea':'多云轉晴','wea_img':'yun','tem_day':'25','tem_night':'15','win':'北風','win_speed':'<3級'},{'date':'2021-05-17','wea':'晴','wea_img':'qing','tem_day':'28','tem_night':'14','win':'北風','win_speed':'<3級'},{'date':'2021-05-18','wea':'晴','wea_img':'qing','tem_day':'28','tem_night':'16','win':'西南風','win_speed':'<3級'}]}網絡爬蟲及數據采集應用目前只是調用了一個城市的數據,下面程序我們把北京、上海、廣州、深圳、南寧、桂林、天津、重慶、哈爾濱、拉薩10個城市都采集一遍,并保存為JSON格式的文件,保存為文件名alldata.json,程序如下:#-*-coding:UTF-8-*-importrequests#導入requests模塊importjson#導入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'#把數據寫入alldata.json本地文件withopen(filename,'w')asfile_obj:json.dump(alldata,file_obj)上面的程序多增加一些編程知識。首選把10個城市定義為一個list(列表)。編寫了一段for循環,遍歷10個城市,逐一采集相關城市的天氣數據。這里使用了Python的json模塊來編碼和解碼JSON對象,函數如下:函數描述json.dump將Python對象編碼成JSON字符串json.load將已編碼的JSON字符串解碼為Python對象網絡爬蟲及數據采集應用上面程序就是采用了dump函數,將Python對象編碼成JSON字符串,我們再寫一個程序,讀取剛才保存的alldata.json文件。如下所示:以上兩個程序使用到了采用Python語言進行文件操作,文件的寫入和讀取文件。#-*-coding:UTF-8-*-importjson#導入json模塊if__name__=='__main__':#主程序體filename='alldata.json'#定義一個文件名withopen(filename)asfile_obj:#打開文件data=json.load(file_obj)#把JSON格式數據解碼為python對象print(data)#打印輸出數據PART02數據處理數據處理數據處理有兩個非常強大的python軟件庫,一個是numpy,一個是pandas。NumPy是Python語言的一個擴充程序庫。支持高級大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。Pandas是基于NumPy的一種工具,該工具是為了解決數據分析任務而創建的。Pandas納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。Pandas提供了大量能使我們快速便捷地處理數據的函數和方法。本節主要介紹numpy和pandas的一些基礎概念和基本用法,詳細使用需要進行進一步的學習。Numpy數值計算庫機器學習模型:在編寫機器學習算法時,需要對矩陣進行各種數值計算。例如矩陣乘法、換位、加法等。NumPy提供了一個非常好的庫,用于簡單(在編寫代碼方面)和快速(在速度方面)計算。NumPy數組用于存儲訓練數據和機器學習模型的參數。數學任務:NumPy對于執行各種數學任務非常有用,如數值積分、微分、內插、外推等。因此,當涉及到數學任務時,它形成了一種基于Python的MATLAB的快速替代。圖像處理和計算機圖形學:計算機中的圖像表示為多維數字數組。NumPy成為同樣情況下最自然的選擇。實際上,NumPy提供了一些優秀的庫函數來快速處理圖像。例如,鏡像圖像、按特定角度旋轉圖像等。NumPy是一個功能強大的Python庫,主要用于對多維數組執行計算。NumPy這個詞來源于兩個單Numerical和Python。NumPy提供了大量的庫函數和操作,可以幫助程序員輕松地進行數值計算。這類數值計算廣泛用于以下任務:Numpy數值計算庫NumPy的安裝就像安裝其他python庫一樣簡單,最快也是最簡單的方法是在shell上使用以下命令:pipinstallnumpy。NumPy圍繞這些稱為數組展開,創建數組的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()函數;你可以傳遞任何序列(類數組),而不僅僅是常見的列表(list)數據類型。Numpy數值計算庫請注意,當我們打印具有不同長度數字的數組時,它會自動將它們填充出來。這對于查看矩陣很有用。對數組進行索引就像列表或任何其他Python序列一樣。接下來我們將看看如何使用多維數組表示矩陣和更多的信息。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為了創建一個2D(二維)數組,我們傳遞一個列表的列表(或者是一個序列的序列)給array()函數。如果我們想要一個3D(三維)數組,我們就要傳遞一個列表的列表的列表,如果是一個4D(四維)數組,那就是列表的列表的列表的列表,以此類推。請注意2D(二維)數組是如何按行和列排列的。要索引2D(二維)數組,我們只需引用行數和列數即可。Pandas數據分析庫Pandas是基于NumPy

的一種工具,該工具是為解決數據分析任務而創建的。Pandas本質上是python的一個數據分析包,最初由AQRCapitalManagement于2008年4月開發,并于2009年底開源出來。Pandas最初被作為金融數據分析工具而開發出來,因此,pandas為時間序列分析提供了很好的支持。Pandas的名稱來自于面板數據(paneldata)和python數據分析(dataanalysis)。paneldata是經濟學中關于多維數據集的一個術語,在Pandas中也提供了panel的數據類型。Pandas數據分析庫Pandas的主要數據結構是Series(一維數據)與DataFrame(二維數據),這兩種數據結構足以處理金融、統計、社會科學、工程等領域里的大多數典型用例。Series

是一種類似于一維數組的對象,它由一組數據(各種Numpy數據類型)以及一組與之相關的數據標簽(即索引)組成。DataFrame

是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型值)。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共同用一個索引)。參考代碼Pandas數據分析庫DataFrame構造方法如下:pandas.DataFrame(data,index,columns,dtype,copy)參數說明:data:一組數據(ndarray、series,map,lists,dict等類型)。index:索引值,或者可以稱為行標簽。columns:列標簽,默認為RangeIndex(0,1,2,…,n)。dtype:數據類型。copy:拷貝數據,默認為False。PandasDataFrame是一個二維的數組結構,類似二維數組。本節主要以處理一個城市數據為例,展示把json數據轉換成pandas的DataFrame數據結構。參考代碼Numpy和Pandas數據處理應用使用Pandas方法分析以上10各個城市1-7日的天氣數據要求如下:1.每個城市有多少天不下雨,以及最高溫度25度以上高溫天數?2.連續4天以上不下雨,且最高溫度維持在25度以上的城市有哪些?基本思路:1.按照城市進行分組統計,將天氣字段字符串中不包含“雨”的記錄展示出來,進行計數;將最高溫度大于等于25度的記錄展示出來,進行計數,最后將統計結果輸出。2.按照城市進行分組統計,對分組數據進行循環遍歷,判斷條件為天氣字段(字符串中不包含“雨”)且最高溫度大于等于25度,符合上述條件,且日期連續則計數增加1,達到4天則把對應的城市名稱存儲在變量中,最后將統計結果輸出。習題1、以下不屬于Python特點的是()。A.免費開源 B.可移植性強 C.豐富的類庫 D.編譯型語言2、以下HTTP請求方法的是()。A.GET

B.POST

C.PUT D.DELETE3、以下哪個Python庫適合做數值計算()。A.Matplotlib

B.Numpy C.Pandas D.request4、簡述Numpy和Pandas的區別。THANKYOU基于Python的數據統計與可視化本章知識點(1)數據的計量尺度(2)數據的度量(3)常用距離公式(4)常用概率分布(5)可視化圖表認知(6)Python數據可視化(7)使用Matplotlib繪制常用圖表01統計基礎02數據可視化PART01統計基礎統計基礎大數據運營需要以數據分析為基礎,從數據中得到相應指標影響運營決策,而數據分析背后充滿了概率統計的知識,本節內容主要介紹數據分析中常用的統計學基礎以及概率分布基礎知識。數據的計量尺度據的計量尺度是指對計量對象量化時采用的具體標準,統計學中計量尺度可分為四類,分別是定類尺度、定序尺度、定距尺度、定比尺度。定類尺度和定序尺度屬于定性數據,定距尺度、定比尺度屬于定量數據。數據的計量尺度1.定類尺度定類尺度,亦稱分類尺度,是最粗略、計量層次最低的尺度。定類尺度只將測量對象分類,數據間不存在大小或高低順序,可以用來比較相等或不相等,不能進行四則算術運算,性別、宗教信仰、民族、職業類型等都屬于定類尺度。2.定序尺度定序尺度也稱等級尺度、順序尺度,是指對測量對象的屬性和特征的類別進行鑒別并能比較類別大小的一種測量方法。定序尺度也是用來描述對象類別,但是和定類尺度不同的是,定序尺度不僅可以確定事務類別,而且可以確定類別的優劣或順序,即定序尺度不僅可以比較是否相等,而且可以比較大小,年級、產品等級、滿意程度、健康狀況等都屬于定序尺度。數據的計量尺度3.定距尺度定距尺度是按照某一數量標志將總體劃分為若干順序排列的部分或組,對相同數量或相同數量范圍的總體單位或其標志值進行計量的方法。定距尺度是對事物類別或次序之間間距的測度,不僅可以區分不同類型,而且可以進行排序并且可以準確指出類別之間的差距時多少。定距尺度通常使用自然或物理單位作為計量尺度,“0”作為比較標準,代表尺度上的一個點,不代表“不存在”,所以定距尺度可以進行加、減運算,不能進行乘除運算。定距尺度數據的差值有意義,但比例無意義,比如年份,你可以說2000年比1000年多1000年,但是不能說2000年是1000年的2倍,年份、攝氏溫度、智商都屬于定距尺度。4.定比尺度定比尺度也稱比率尺度,是指一種用于描述對象計量特征的計量尺度。定必尺度是在定距尺度的基礎上,同時還具有絕對或自然的起點,即存在可以作為比較的共同起點或基數。在定距尺度中,“0”代表某一數值,而不是“沒有”;在定比尺度中有絕對零點,即“0”代表“沒有”或“不存在”,所以定比尺度不僅可以進行加、減運算,還可以進行乘、除運算。例如,攝氏溫度是典型的定距尺度,0攝氏度表示水的結冰點;銷售量是典型的定比尺度,小張5月銷售量為0,即代表5月他沒有賣出去東西。定比尺度數據差值和比例都有意義,比如A繩子長5米,B繩子長10米,你可以說B繩子比A繩子長5米,也可以說B繩子長度是A繩子的2倍。長度、質量、產值等都屬于定比尺度。數據的計量尺度針對4種尺度的總結如表所示。分類計量尺度舉例特點定性數據定類尺度性別、宗教信仰可比較是否相等定序尺度年級、產品等級可比較是否相等可比較大小定量數據定距尺度年份、攝氏溫度可比較是否相等可比較大小可進行加、減操作差值有意義,比例無意義定比尺度長度、質量、產值可比較是否相等可比較大小可進行加、減操作可進行乘、除操作差值有意義、比例有意義數據的度量數據的度量可以分為對集中趨勢的度量和對離散程度的度量,平均數、中位數、眾數都是針對數據集中趨勢的度量,方差、標準差、協方差、極差等都是針對數據離散程度的度量。數據的度量1.數據集中趨勢的度量在統計學中,集中趨勢是指一組數據向某一中心值靠攏的程度,可反應一組數據的中心點位置。了解數據的集中趨勢,有助于發現事務的本質特征,掌握事務的發展變化,在數據分析前期階段的數據探索中有非常重要的作用。集中趨勢度量就是尋找數據水平的中心值或代表值,對應的衡量指標即為平均數、中位數、眾數。1)平均數平均數,統計學中最基本、最常用的衡量數據集中趨勢的一項指標。平均數主要適用于定量數據,而不適用于定性數據。根據具體數據的不同,平均數有不同的計算公式,這里主要介紹簡單算術平均數和加權算術平均數。簡單算術平均數又稱均值,是指在一組數據中所有數據之和再除以這組數據的個數,是統計學中最常用的平均指標。公式如下:參考代碼數據的度量加權算術平均數主要用于處理經分組整理的數據,即將各數值乘以相應的權數,然后加總求和得到總體值,再除以總的單位數。加權平均值的大小不僅取決于總體中各單位的數值大小,而且取決于各數值出現的次數(權數)。公式如下:在Numpy中實現均值和加權均值的函數分別是mean()和average(),接下來舉一個例子。數據的度量2)中位數中位數,又稱中值,是一組數據按照大小順序排列后,居于中間位置的數。中位數將全部數據等分為兩部分,每部分占比50%,一組數據中只有一個中位數。中位數適用于探索定量數據的集中趨勢,但是不適用于分類數據。假設有一組數據(n個)從小到大排序,那么這組數據中位數的計算有如下兩種情況:(1)當n為奇數時,中位數等于第(n+1)/2個數對應的值(2)當n為偶數時,中位數位于第n/2和(n/2)+1的兩個數的平均值數據的度量3)眾數眾數是指一組數據中出現次數最多的數值,代表數據的一般水平。眾數是描述分類數據集中趨勢最常用的測度值,一般只有在數據量較大的情況下,眾數才有意義。眾數的主要特點是不受極端值影響,在一組數據中眾數不唯一,有可能沒有眾數或有多個眾數,如圖所示。數據的度量2.數據離散程度的度量與數據的集中趨勢度量對應的是數據的離散程度度量,即一組數據向某一中心值分散的程度。其中極差是測量數據離散程度的一個簡便方法,極差是一組數據中最大值與最小值的差距,它能說明數據的最大變動范圍,但由于它是兩個極端值進行計算得到的結果,沒有考慮到中間值的變動情況,所以只是一個較粗糙的計算離散程度的方法。除了極差以外,平均差、方差、標準差、協方差都是針對數據離散程度的度量方法。數據的度量1)平均差平均差是指各個變量值同平均數的離差絕對值的算術平均數。平均差越大,表明各標志值與算術平均數的差異程度越大,該算術平均數的代表性就越小;平均差越小,表明各標志值與算術平均數的差異程度越小,該算術平均數的代表性就越大。平均差的公式如下:平均差受極端值影響較小,所以在對數據的離散程度進行度量時比較有代表性。數據的度量2)方差和標準差方差是各個數據分別與其平均數之差的平方的和的平均數,用表示(也可用var表示),由于方差是數據的平方,與檢測值本身相差太大,人們難以直觀的衡量,所以常用方差的算術平方根來度量變量和均值之間的偏離程度。方差的算術平方根就是我們常說的標準差,用表示,方差和標準差都是常用的對數據離散程度的度量方法。方差的公式如下:標準差的公式如下:其中,x表示樣本的平均數,n表示樣本數量,表示個體。平均數相同的兩組數據,標準差越大,說明數據離散程度越大。參考代碼數據的度量假設有A、B兩組數據,A組數據[0,6,8,15,16],B組數據[7,8,9,10,11],兩組數據的平均值都是9,根據公式可計算得到A組數據的標準差約為5.9,B組數據的標準差約為1.4,說明A組數據較B組數據離散,從數據的排列上我們也可看出,A組數據間隔較大,B組數據較密集。在Numpy中實現方差和標準差的函數分別是var()和std()。數據的度量3)協方差協方差表示兩個變量的總體誤差,如果兩個變量的變化趨勢一致,也就是說如果其中一個大于自身的平均值,另外一個也大于自身的平均值,那么兩個變量之間的協方差就是正值。如果兩個變量的變化趨勢相反,即其中一個大于自身的平均值,另外一個卻小于自身的平均值,那么兩個變量之間的協方差就是負值。協方差的公式如下:通俗解釋就是:X變大,同時Y也變大,說明X、Y兩個變量是同向變化的,這時協方差是正的;X變大,同時Y變小,說明X、Y兩個變量是反向變化的,這時協方差是負的。總體來說就是如果協方差結果為正值,說明兩者是正相關,如果協方差結果為負值,則說明兩者是負相關。如果協方差結果為0,就是統計上的“相互獨立“。數據的度量方差是協方差的一種特殊情況(可以理解為:方差描述一維數據,協方差描述二維數據)。協方差的運算性質可總結如下:Cov(X,Y)=Cov(Y,X)Cov(aX,bY)=abCov(X,Y),(a、b是常數)Cov(X1+X2,Y)=Cov(X1,Y)+Cov(X2,Y)協方差只能處理二維的問題,如果維數增加,就需要計算它們兩兩之間的協方差,這時就用到了協方差矩陣,以三維數據為例,數據集{x,y,z}的協方差矩陣為:可見,協方差矩陣是一個對稱的矩陣,而且對角線是各個維度上的方差。參考代碼數據的度量4)相關系數相關系數是最早由統計學家卡爾·皮爾遜設計的統計指標,是研究變量之間線性相關程度的量,一般用字母r表示。由于研究對象的不同,相關系數有多種定義方式,常見的相關系數為簡單相關系數,簡單相關系數又稱皮爾遜相關系數或者線性相關系數,公式如下:從公式中可以看出,X、Y兩個變量的相關系數就是用X、Y的協方差除以X的標準差和Y的標準差,所以相關系數也可以看成是一種剔除了兩個變量量綱影響后的特殊協方差。r值的絕對值介于0~1之間,通常來說,r越接近1,表示X、Y兩個量之間的相關程度就越強,反之,r越接近于0,X、Y兩個量之間的相關程度就越弱。數據的度量3Numpy中常用的數據度量函數總結分類度量指標概念Numpy中對應方法集中趨勢度量平均值一組數據中所有數據之和再除以這組數據的個數mean()加權均值各數值乘以相應的權數,然后加總求和得到總體值,再除以總的單位數average()中位數一組數據按照大小順序排列后,居于中間位置的數median()離散程度度量方差各個數據分別與其平均數之差的平方的和的平均數var()標準差方差的算術平方根std()協方差表示兩個變量的總體誤差,協方差結果為正值,說明兩者是正相關,協方差結果為負值,則說明兩者是負相關,如果協方差結果為0,就是統計上的“相互獨立“cov()相關系數研究變量之間線性相關程度的量,可以看成是一種剔除了兩個變量量綱影響后的特殊協方差corrcoef()常用距離公式在數據分析過程中,經常需要計算變量之間的距離,本節主要介紹歐式距離、曼哈頓距離、馬氏距離這3種常見的距離。1.歐式距離歐式距離,也稱歐幾里得度量(euclideanmetric),指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離,如圖所示。二維空間歐式距離公式如下:參考代碼常用距離公式1.歐式距離常用距離公式2.曼哈頓距離在介紹曼哈頓距離之前,我們先看下圖圖中紅線代表曼哈頓距離,綠色代表歐氏距離,也就是直線距離,而藍色和黃色代表等價的曼哈頓距離。曼哈頓距離(ManhattanDistance),又叫出租車幾何,是由十九世紀的赫爾曼·閔可夫斯基所創詞匯,是一種使用在幾何度量空間的幾何學用語,用以標明兩個點在標準坐標系上的絕對軸距總和。二維空間曼哈頓距離公式如下:公式表示坐標為(x1,y1)的i點與坐標(x2,y2)的j點的曼哈頓距離,對于一個具有正南正北、正東正西方向規則布局的城鎮街道,從一點到達另一點的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離,因此曼哈頓距離又稱為出租車距離,曼哈頓距離不是距離不變量,當坐標軸變動時,點間的距離就會不同。常用距離公式2.曼哈頓距離N維空間曼哈頓距離公式如下:公式表示N維空間點i(x11,x12,…,x1n)與j(x21,x22,…,x2n)的曼哈頓距離。參考代碼常用距離公式3.馬氏距離馬氏距離(MahalanobisDistance)是由印度統計學家馬哈拉諾比斯(P.C.Mahalanobis)提出的,表示數據的協方差距離,它是一種有效的計算兩個未知樣本集的相似度的方法。馬氏距離是基于樣本分布的一種距離,物理意義就是在規范化的主成分空間中的歐氏距離。所謂規范化的主成分空間就是利用主成分分析對一些數據進行主成分分解,再對所有主成分分解軸做歸一化,形成新的坐標軸,由這些坐標軸形成的空間就是規范化的主成分空間,如圖所示。馬氏距離的公式如下:

常用距離公式歐氏距離雖然很常用,但是它有明顯的缺點,即將樣品的不同屬性之間的差別等同看待,即極易受量綱影響,這一點有時不能滿足實際要求。馬氏距離不受量綱的影響,兩點之間的馬氏距離與原始數據的測量單位無關,馬氏距離可以排除變量之間的相關性的干擾。歐式距離與馬氏距離的對比如圖所示。參考代碼常用距離公式scipy.spatial.distance模塊下的pdist函數可以實現馬氏距離。舉個例子來說明,如果我們以厘米為單位來測量人的身高,以克(g)為單位測量人的體重。每個人被表示為一個兩維向量,如一個人身高173cm,體重50000g,表示為(173,50000),根據身高體重的信息來判斷體型的相似程度。我們已知小明(160,60000);小王(160,59000);小李(170,60000)。根據常識可以知道小明和小王體型相似。但是如果根據歐幾里得距離來判斷,小明和小王的距離要遠遠大于小明和小李之間的距離,即小明和小李體型相似。這是因為不同特征的度量標準之間存在差異而導致判斷出錯。以克(g)為單位測量人的體重,數據分布比較分散,即方差大,而以厘米為單位來測量人的身高,數據分布就相對集中,方差小。馬氏距離的目的就是把方差歸一化,使得特征之間的關系更加符合實際情況。常用概率分布概率分布,是指用于表述隨機變量取值的概率規律介紹,簡單理解就是在統計圖中表示概率,橫軸是數據的值,縱軸是橫軸上對應數據值的概率。概率分布可以很好地展現數據的內在規律,這里介紹幾種常用的概率分布。1.0-1分布(伯努利分布)0-1分布又稱伯努利分布(BernouliDistribution)、兩點分布,是一個最簡單的分布,即只先進行一次事件試驗,該事件發生的概率為p,不發生的概率為q=1-p,0-1分布也就是n=1情況下的二項分布,任何一個只有兩種結果的隨機現象都服從0-1分布。k=0時,P{X=0}=1-p;k=1時,P{X=1}=p。其中,0<p<1,則稱X服從0-1分布。常用概率分布2.二項分布(n重伯努利分布)二項分布(Binomialdistribution)就是重復n次獨立的伯努利試驗。在每次試驗中只有兩種可能的結果,而且兩種結果發生與否互相對立,并且相互獨立,與其它各次試驗結果無關,事件發生與否的概率在每一次獨立試驗中都保持不變,則這一系列試驗總稱為n重伯努利實驗,當試驗次數為1時,二項分布服從0-1分布。二項分布的公式如下:通俗理解,當你遇到一個事情,如果該事情發生次數固定,而你感興趣的是成功的次數,那么就可以用二項分布的公式快速計算出概率來。其中,X指的是試驗的次數,指的是組合,這個公式表示一個伯努利分布中得1的概率為p,0的概率為1-p,那么連續試驗n次,出現p的情況恰好是k次的概率。我們舉一個生活中的例子,假如小明參加英語四級考試,每次考試通過的概率是1/3,如果他連續考試4次,恰好通過2次的概率是多少?這個例子中p=1/3,n=4,k=2,代入公式:所以小明連續考試4次,恰好通過2次的概率是8/27。參考代碼常用概率分布3.正態分布正態分布(NormalDistribution),也稱“常態分布”,又名高斯分布(Gaussiandistribution),最早由德國的數學家和天文學家Moivre于1733年在求二項分布的漸近公式中得到,但由于德國數學家Gauss率先將其應用于天文學家研究,故正態分布又叫高斯分布。正態分布是一個在數學、物理及工程等領域都非常重要的概率分布,在統計學的許多方面有著重大的影響力。正態曲線呈鐘型,兩頭低,中間高,左右對稱因其曲線呈鐘形,因此人們又經常稱之為鐘形曲線。正態分布的公式如下:公式表示若隨機變量X服從一個數學期望為μ(數學期望可以理解為均值)、方差為σ2的正態分布,記為N(μ,σ2)。其概率密度函數為正態分布的期望值μ決定了其位置,其標準差σ決定了分布的幅度。當μ=0,σ=1時的正態分布是標準正態分布。常用概率分布標準正態分布公式如下:正態分布是用來描述統計對象的,如果統計對象的分布特性符合正態分布,那么所有針對正態分布的定理和“經驗值”都能全部套用。正態分布在自然界的應用是很普遍的,它的特點可總結為:“一般般的很多,極端的很少”,正態分布曲線如圖所示。

參考代碼常用概率分布例:如對某一地區的女性身高做了一個隨機抽樣,一共1000人,結果發現他們的身高是一個,的正態分布,則可總結出:身高150~160cm和身高160~170cm的人分別有341名,共計682名(μ-σ和μ+σ之間);身高140~150cm和身高170~180cm的人分別有136名,共計272名;身高130~140cm和身高180~190cm的人分別有21名,共計42名。這些數量已經涵蓋了統計總人數的99.6%,同樣地,正態分布我們也可以使用Scipy實現。常用概率分布4.泊松分布泊松分布(PoissonDistribution),是一種統計與概率學里常見到的離散概率分布,由法國數學家西莫恩·德尼·泊松(Siméon-DenisPoisson)在1838年時發表。泊松分布公式如下:

常用概率分布泊松分布曲線如圖所示。泊松分布適用的事件需滿足3個條件:A.事件是小概率事件。B.事件的每次發生都是獨立的,不會互相影響。C.事件的概率是穩定的。常用概率分布

參考代碼PART02數據可視化可視化圖表認知可視化圖表是利用點、線、面、體等要素繪制而成,用于呈現數據大小關系、變動情況、分布情況等信息的圖形。數據可視化具有形象生動、通俗易懂、簡潔明了等優點,在大數據時代,數據可視化可以和數據倉庫、數據挖掘等技術結合使用實現商業智能。可視化圖表認知1.數據可視化特性真實性可視化結果應該準確地反應數據的本質。01直觀性數據呈現要直觀、形象,有利于人們認知數據背后所蘊藏的現象和規律。關聯性可視化時要突出地呈現數據之間的關聯性。藝術性可視化時要充分考慮大眾審美,使數據呈現更有藝術性。交互性數據呈現時要方便用戶控制數據,實現用戶和數據的可交互性。02030405可視化圖表認知2.可視化圖表分類分類圖表名字作用類別比較型【比較類別之間的不同】柱形圖柱形圖適用于二維數據集中(x軸、y軸),一個維度數據的比較,利用柱子的高度,反映數據的差異;文本維度/時間維度通常作為x軸,數值型維度作為y軸餅圖餅圖適用于二維數據中,一個維度數據的占比情況(各項占總體的占比),多用于反映某個部分占整體的比重;數據不精細,不適合分類較多的情況雷達圖雷達圖適用于多維數據(四維以上),且每個維度必須可以排序,常用于多項指標的綜合分析,可用于經營狀況,財務健康程度分析;但是雷達圖數據點最多6個,否則無法辨別數據關系型【查看兩個或兩個以上變量之間的關系】散點圖適用于二維數據(2個連續字段分別映射到x、y軸),觀察數據的分布情況;也可用于三維數據,可以用形狀或顏色標識第三維氣泡圖氣泡圖是散點圖的一種變體,通過每個點的面積大小,反映第三維;因為用戶不善于判斷面積大小,所以氣泡圖只適用不要求精確辨識第三維的場合數據分布型【查看數據的分布情況】直方圖直方圖用于展示數據在不同區間內的分布情況;柱形圖矩形長度代表頻數,寬度代表類別,面積無意義;直方圖矩形長度代表頻數,寬度代表組距,面積有意義箱線圖箱線圖是一種用于顯示一組數據分布情況的統計圖,用最大值、最小值、中位數、下四分位數、上四分位數共5個數字對分布進行概括熱力圖適用于三維數據(3個連續字段,2個分布映射到x、y軸,第3個映射到顏色),以高亮形式展現數據,常和地圖組合用于表現道路交通狀況時間序列型【數據隨著時間的變化趨勢】折線圖適合多個二維數據集的比較,適合數據量較大的數據地理空間型【代表地理分布】地圖需要用到坐標維度,可以是經緯度、也可以是地域名稱,可以與散點圖、熱力圖、曲線圖等結合使用可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。1)柱形圖柱形圖(BarChart),又稱柱狀圖、長條圖,是一種以長方形的長度為度量的統計圖表。柱形圖是分析師最常用到的圖表之一,旨在利用柱子的高度,反映數據的差異,適用于二維數據集中(x軸、y軸),一個維度數據的比較,文本維度/時間維度通常作為x軸,數值型維度作為y軸。柱形圖按照呈現方式可分為基礎柱形圖、橫向柱形圖、多柱形圖、堆積柱形圖等,如圖所示。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。2)餅圖餅圖(英文學名為SectorGraph,又名PieGraph)經常表示一組數據的占比,可以用扇面、圓環、或者多圓環嵌套。餅圖適用于二維數據中,一個維度數據的占比情況(各項占總體的占比),多用于反映某個部分占整體的比重,餅圖數據不精細,不適合分類較多的情況。餅圖按照呈現方式可分為基礎餅圖、分裂餅圖、陰影餅圖、環形圖等,如圖所示。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。3)雷達圖雷達圖也叫蛛網圖,常用于企業經營狀況,財務健康程度的分析。在財務分析領域,雷達圖是重要的工具,可以將本單位的各種財務比率和友商或整個行業的財務比率進行橫向對比,也可以將當前的財務比率和之前的財務比率進行縱向對比。圖為某單位06年和10年主要財務支出的對比圖。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。4)散點圖散點圖(ScatterGraph)也叫X-Y圖,它將所有的數據以點的形式展現在直角坐標系上,以顯示變量之間的相互影響程度,點的位置由變量的數值決定。散點圖主要用于查看數據的分布情況,對于那些變量之間存在密切關系,但是這些關系又不像數學公式和物理公式那樣能夠精確表達的,散點圖是一種很好的圖形工具。散點圖適用于二維數據,2個連續字段分別映射到x、y軸,然后觀察數據的分布情況,也可用于三維數據,可以用形狀或顏色標識第三維。圖為散點圖示例。從圖中可以看出,散點圖能讓我們發現變量之間隱藏的關系,可以為決策作出重要的引導作用。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。5)直方圖直方圖(Histogram),又稱質量分布圖,是一種統計報告圖,由一系列高度不等的縱向條紋或線段表示數據分布的情況,一般用橫軸表示數據類型,縱軸表示分布情況,如圖所示。直方圖和柱形圖很類似,兩者之間的區別可總結如下:直方圖用于展示數據在不同區間內的分布情況。柱形圖矩形長度/高度代表頻數,寬度代表類別,面積無意義。直方圖矩形長度/高度代表頻數,寬度代表組距,面積有意義。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。6)箱線圖箱線圖又稱盒須圖、盒式圖和箱型圖,是一種用作顯示一組數據分布情況的統計圖。箱線圖主要用于反映原始數據分布的特征,還可以進行多組數據分布特征的比較。箱線圖用5類數字對分布進行概括,即一組數據的最大值、最小值、中位數、下四分位數及上四分位數,對于數據集中的異常值,通常會以單獨的點的形式繪制,如圖所示。從箱線圖中我們可以觀察到如下信息:數據集的最大值、最小值、中位數等關鍵信息。數據集中是否存在異常值。數據的分布情況(分散還是集中,是否對稱等)。可視化圖表認知3.常用圖表介紹下面將對柱形圖、餅圖、散點圖、直方圖、箱線圖、熱力圖、折線圖共7種常用圖表進行展開介紹。7)熱力圖熱力圖即以高亮形式展現數據,最初是由軟件設計師CormacKinney于1991年提出并創造的,用來描述一個2D顯示實時金融市場信息。經過多年的演化,如今的熱力圖更規范,常用來表示道路交通狀況和APP用戶行為分析等。圖為熱力圖示例。Python數據可視化可以實現數據可視化的工具很多,包括Tableau、Echars等。這里主要介紹使用Python的Matplotlib庫實現數據可視化。Matplotlib是Python中最基礎也是最核心的數據可視化庫,它不僅提供散點圖、折線圖、餅圖等常用的圖表繪制函數,而且提供豐富的畫布設置、顏色設置等方法。繪制圖表的步驟一般可總結為設置畫布(可不設置,采用默認),繪制圖像(折線圖、散點圖、柱形圖等),設置標題、網格線、圖例等,展示圖像。1.設置畫布Matplotlib的pyplot包中的figure方法用于設置畫布,語法如下:matplotlib.pyplot.figure(num,figsize,dpi,facecolor,edgecolor,frameon=True)參數描述num圖像編號或名稱figsize指定畫布的大小,單位為英寸dpi分辨率,即每英寸包含多少像素,默認為80facecolor背景顏色edgecolor邊框顏色frameon是否顯示邊框,默認為TruePython數據可視化2.繪制一個圖像Matplotlib的pyplot包中封裝了很多畫圖的函數,包括折線圖、柱形圖、餅圖等。其中plot是最基本的繪圖函數,用于繪制折線圖,接下來我們就用plot函數演示如何繪制一個圖表,代碼如下:importnumpyasnpimportmatplotlib.pyplotasplt#設置畫布plt.figure(num='001',figsize=(5,6),dpi=150,edgecolor='b',frameon=False)#構建x軸、y軸數據x=np.arange(100)y=np.square(x)#使用plot函數繪制圖表plt.plot(x,y)#展示圖像plt.show()Python數據可視化3.設置標題、圖例等標題、圖例等其他設置的相關方法總結如表所示。函數說明舉例title()設置圖表標題plt.title("折線圖",{'fontsize':15,'va':'bottom'})xlabel()設置x軸標題plt.xlabel("x軸")ylabel()設置y軸標題plt.ylabel("y軸")xticks()設置x軸刻度plt.xticks([2,4,6,8])grid()設置網格線plt.grid(color='#191970',axis='x')legend()設置圖例plt.legend(('圖例',),loc='upperleft',fontsize=10)text()設置文本標簽plt.text(0,19,'19',ha='center',va='bottom',fontsize=9)參考代碼Python數據可視化3.設置標題、圖例等有了這些設置,我們就可以畫一個內容相對豐富的圖像,代碼如下:Python數據可視化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('繪制正弦函數')ax1.plot(x2,np.sin(x2))#畫第4個圖ax2=fig.add_subplot(222)plt.title('繪制余弦函數')ax2.plot(x2,np.cos(x2))plt.show()使用Matplotlib繪制常用圖表Matplotlib可以繪制多種圖表,折線圖、柱形圖、餅圖、散點圖等常用圖表的實現方法總結如表所示。方法說明描述plot()折線圖可通過參數設置曲線顏色、線條格式、標記樣式等屬性bar()柱形圖可繪制多柱形圖、堆積柱形圖、橫向柱形圖等多種形式柱形圖pie()餅圖可繪制分裂餅圖、陰影餅圖、環形圖等多種形式餅圖scatter()散點圖可通過參數設置散點的大小、顏色、形狀等屬性hist()直方圖可繪制縱向、橫向直方圖,可設置箱子個數、顏色等屬性boxplot()箱線圖可繪制凹口和非凹口形式的箱線圖imshow()熱力圖可設置顏色地圖和索引位置使用Matplotlib繪制常用圖表1Matplotlib繪制折線圖plot方法是Matplotlib的pyplot

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論