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