Python是數(shù)據(jù)分析領(lǐng)域的主要技術(shù)和工具,Bokeh目前在Github的的Python數(shù)據(jù)可視化庫上的排名獨占鰲頭,已經(jīng)超過Matplotlib,因為動態(tài)、美觀、易用等特性廣受追捧!
這是一本適合零基礎(chǔ)讀者快速入門并掌握Bokeh的實戰(zhàn)指南,作者是Bokeh的先驅(qū)用戶和布道者,實踐經(jīng)驗豐富。本書從圖形繪制、數(shù)據(jù)動態(tài)展示、Web交互等維度全面講解Bokeh功能和使用,不涉及復雜的數(shù)據(jù)處理和算法,包含大量實戰(zhàn)案例。
1.基礎(chǔ)準備
Anaconda安裝方法、運行環(huán)境、繪圖基礎(chǔ)介紹
2.基本圖形繪制
線形圖、柱狀圖、餅圖、氣泡圖、直方圖等數(shù)十種圖形繪制方法
3.數(shù)據(jù)類型與轉(zhuǎn)換
Python List、Python Dict、Numpy Arrays、Pandas DataFrame、Bokeh ColumnDataSource等
4.視圖屬性
Bokeh圖形配色、畫布屬性及繪圖工具、圖形顯示和輸出方式等
5.Web動態(tài)可視化
輸出為HTML文件(源碼/組件)、通過Web模板顯示、Bokeh Flask、Bokeh Sever
國內(nèi)市面上各式各樣的BI系統(tǒng)都非常成熟,如數(shù)據(jù)分析、圖表的拖拽等,即使零編程基礎(chǔ)的用戶都可以做出像模像樣的可視化圖表或數(shù)據(jù)看板。
然而,隨著互聯(lián)網(wǎng)的發(fā)展,企業(yè)對數(shù)據(jù)的安全性要求也隨之提高,小到企業(yè)數(shù)據(jù)看板,大到各系統(tǒng)中臺的戰(zhàn)略數(shù)據(jù)展示,數(shù)據(jù)動態(tài)可視化的需求越來越迫切,專精于數(shù)據(jù)可視化系統(tǒng)開發(fā)的人才也會愈加受到重視。
通過閱讀本書,你將學會:
★各種Bokeh圖形的繪制方法
★使用Bokeh控件進行數(shù)據(jù)交互的方法
★使用Bokeh實現(xiàn)Web數(shù)據(jù)動態(tài)可視化
★構(gòu)建各類數(shù)據(jù)可視化看板
【為何寫作本書】
2019年5月,PYPL(編程語言流行指數(shù),基于Google搜索頻率而定)出爐了編程語言排行榜,Python位列第一,成為當下最流行的編程語言之一。TIOBE排行榜也顯示,Python的流行度屢創(chuàng)新高,目前排名第四,并保持高速增長。作為大數(shù)據(jù)和人工智能時代的必備語言,Python具有語言簡潔、開發(fā)效率高、可移植性強等優(yōu)點,經(jīng)過多年的生態(tài)建設(shè),Python有了大量的函數(shù)庫,尤其在數(shù)據(jù)分析和科學計算領(lǐng)域。另外,函數(shù)在Python中是一等公民,所以Python同時也是一種函數(shù)式編程語言。
互聯(lián)網(wǎng)的快速發(fā)展為我們積累了龐大的數(shù)據(jù),計算機硬件的創(chuàng)新為存儲與分析這些數(shù)據(jù)創(chuàng)造了硬件條件,編程語言的發(fā)展為分析這些數(shù)據(jù)創(chuàng)造了軟件條件。在數(shù)據(jù)分析這個領(lǐng)域,Python有著自身獨特的優(yōu)勢,簡單易用的特性與強大的開源模塊的支持使其成為數(shù)據(jù)分析領(lǐng)域方便好用的利器。
Python在數(shù)據(jù)分析領(lǐng)域的廣泛應用離不開強大的開源模塊的支持,大名鼎鼎的NumPy、Scipy、Statsmodels、Pandas等模塊的建立與發(fā)展奠定了Python在數(shù)據(jù)分析領(lǐng)域的重要地位。這些模塊簡單又好用,提供的解決方案能夠滿足絕大部分業(yè)務(wù)需求。在人工智能領(lǐng)域,Python也有非常棒的解決方案,如Sklearn、XGBoost、TensorFlow、MXNet、Theano、Caffe等都是非常好的開源模塊。尤其在人工智能中前沿的深度學習領(lǐng)域,Python幾乎占據(jù)了霸主的地位。Python借助在數(shù)據(jù)分析領(lǐng)域中開源模塊的優(yōu)勢,在量化投資領(lǐng)域逐漸占據(jù)了領(lǐng)頭羊的地位。
對數(shù)據(jù)的分析離不開數(shù)據(jù)的可視化,相對于在數(shù)據(jù)分析、人工智能、量化投資等領(lǐng)域中的發(fā)展,Python在數(shù)據(jù)可視化方面的發(fā)展有些滯后。最經(jīng)典的Python可視化繪圖庫莫過于Matplotlib。Matplotlib就是MATLAB Plot Library,即模仿MATLAB的繪圖庫,其繪圖風格與MATLAB類似。由于MATLAB的繪圖風格偏古典,為了繪出更漂亮的圖像,Python開源社區(qū)開發(fā)出了Seaborn繪圖模塊,它本質(zhì)上是對Matplotlib的封裝,繪圖效果更符合現(xiàn)代人的審美。盡管如此,由于Matplotlib是基于GUI的繪圖模塊,所以也存在特有的缺陷。
就筆者的使用經(jīng)驗而言,Matplotlib主要存在兩大缺陷:首先,Matplotlib是一個靜態(tài)的繪圖模塊,其繪制的圖像都是靜態(tài)的,就像用軟件打開圖片一樣,無法實現(xiàn)Web繪圖的交互效果;其次,Matplotlib繪圖結(jié)果分享極其不便,只能以圖片的方式分享,讀者看到的繪圖結(jié)果完全是靜態(tài)的,分享體驗較差。至于Python其他繪圖模塊,諸如GGplot2、Plotly、Pyecharts等都比較小眾,而Bokeh集成在Anaconda中,在筆者創(chuàng)作本書的過程中,Bokeh在GitHub上的Stars已經(jīng)超過了Matplotlib。
Bokeh是一個基于D3.js的繪圖庫,所以其繪圖結(jié)果可以與Web應用無縫銜接,在實現(xiàn)與讀者交互的同時,便于分享、傳播。其次,Bokeh有著自己強大又豐富的繪圖庫,提供了優(yōu)雅、簡潔的多功能圖形繪制方法,在超大數(shù)據(jù)集或流式數(shù)據(jù)集上具有高性能的交互性,且與Python(或其他語言)的交互快速而簡單。
筆者從2014年開始學習Python,主要將其用于傳統(tǒng)行業(yè)數(shù)據(jù)分析,2016年初嘗Bokeh便被其深深吸引。然而,Bokeh官方的文檔為英文,且不符合國人的繪圖習慣,因此我希望盡自己的微薄之力,將近年所知、所學進行歸納、整理,若讀者能從中感悟一二,并將其用于工作實踐,將是本書和本人之福!
【讀者對象】
(1)大數(shù)據(jù)分析人員
毫無疑問,大數(shù)據(jù)分析人員是本書的核心受眾群體之一,本書與其他可視化的書籍不同,本著Talk is cheap,show me your code的原則,盡可能言簡意賅、深入淺出,以代碼實現(xiàn)各種圖表。數(shù)據(jù)可視化作為整個數(shù)據(jù)分析過程的最后一環(huán),好的數(shù)據(jù)展示效果,往往會讓數(shù)據(jù)分析結(jié)果更為生動、更具說服力。
另外,本書中代碼未過多涉及復雜的數(shù)據(jù)預處理和分析技巧,著重講述不同圖表的繪制方法,以便于大數(shù)據(jù)分析人員進行重構(gòu),書中代碼基本上可以即拿即用,從而節(jié)約寶貴時間用在數(shù)據(jù)清洗和分析探索上。
(2)企業(yè)管理運營人員
市面上各式各樣的BI系統(tǒng)都非常成熟,如數(shù)據(jù)分析、圖表的拖拽等,即使零編程基礎(chǔ)的用戶都可以做出像模像樣的可視化圖表或數(shù)據(jù)看板。然而,如果涉及產(chǎn)品、市場等核心敏感數(shù)據(jù)時,則不得不招兵買馬,組建團隊,以期實現(xiàn)企業(yè)專屬的數(shù)據(jù)可視化系統(tǒng),如業(yè)務(wù)中臺、數(shù)據(jù)中臺、營銷中臺等。此時,不可避免地要考慮到開發(fā)成本問題,Bokeh可以與Flask、Django等完美結(jié)合,用最小的成本實現(xiàn)企業(yè)數(shù)據(jù)全網(wǎng)實時、動態(tài)展示;在中小型公司中,如果無須聯(lián)網(wǎng)僅內(nèi)部使用,則無須服務(wù)器建站,可直接使用Bokeh sever展示,并通過局域網(wǎng)實現(xiàn)內(nèi)部分享。
(3)IT轉(zhuǎn)型人員
隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)分析團隊的成員分工也變得更細,專精于數(shù)據(jù)可視化系統(tǒng)開發(fā)的人才也會愈加受到重視。而且,在Bokeh數(shù)據(jù)可視化領(lǐng)域沒有復雜的算法,僅需具備一些Web前端和Python編程基礎(chǔ)知識即可。
(4)大中專院校學生及科研人員
本書符合國內(nèi)讀者的閱讀習慣,書中的可視化圖表也可供大中專院校學生及科研人員進行論文寫作、實際工作時使用。
【主要內(nèi)容】
本書共分為5章,各章主要內(nèi)容如下:
第1章介紹一些準備工作,包括Anaconda的安裝方法、運行環(huán)境,以及繪圖的主要方法。
第2章主要介紹基本圖形的繪制,即對Bokeh中一些常見的基礎(chǔ)圖形,如線形圖、柱狀圖、餅圖、氣泡圖和直方圖等進行介紹。
第3章主要介紹數(shù)據(jù)類型與轉(zhuǎn)換,包括對Bokeh所需的常見數(shù)據(jù)類型進行的介紹。
第4章主要介紹視圖屬性,包括Bokeh圖形配色、畫布屬性及繪圖工具,圖形顯示方式和輸出方式,用控件進行數(shù)據(jù)交互的方法。
第5章主要介紹Web動態(tài)可視化。熟悉Web開發(fā)的讀者可以在任意前端框架下嵌入圖形。
如果僅對Bokeh的基礎(chǔ)繪圖感興趣,那么前4章的內(nèi)容就能滿足你的需求;如果你有一定的Web開發(fā)基礎(chǔ),那么可以參考第5章的內(nèi)容,實現(xiàn)Web數(shù)據(jù)可視化。
屈希峰(yeayee)
資深Python工程師,Bokeh領(lǐng)域的實踐者和布道者,對Bokeh有深入的研究。
擅長Flask、MongoDB、Sklearn等技術(shù),實踐經(jīng)驗豐富。
知乎多個專欄(Python中文社區(qū)、Python程序員、大數(shù)據(jù)分析挖掘)作者,專欄累計關(guān)注用戶十余萬人。
獨立運營Intumu.com、Yeayee.com兩個網(wǎng)站,在行業(yè)有一定的影響力。