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