Python是数据分析领域的主要技术和工具,Bokeh目前在Github的的Python数据可视化库上的排名独占鳌头,已经超过Matplotlib,因为动态、美观、易用等特性广受追捧!
这是一本适合零基础读者快速入门并掌握Bokeh的实战指南,作者是Bokeh的先驱用户和布道者,实践经验丰富。本书从图形绘制、数据动态展示、Web交互等维度全面讲解Bokeh功能和使用,不涉及复杂的数据处理和算法,包含大量实战案例。
1.基础准备
Anaconda安装方法、运行环境、绘图基础介绍
2.基本图形绘制
线形图、柱状图、饼图、气泡图、直方图等数十种图形绘制方法
3.数据类型与转换
Python List、Python Dict、Numpy Arrays、Pandas DataFrame、Bokeh ColumnDataSource等
4.视图属性
Bokeh图形配色、画布属性及绘图工具、图形显示和输出方式等
5.Web动态可视化
输出为HTML文件(源码/组件)、通过Web模板显示、Bokeh Flask、Bokeh Sever
【为何写作本书】
2019年5月,PYPL(编程语言流行指数,基于Google搜索频率而定)出炉了编程语言排行榜,Python位列第一,成为当下最流行的编程语言之一。TIOBE排行榜也显示,Python的流行度屡创新高,目前排名第四,并保持高速增长。作为大数据和人工智能时代的必备语言,Python具有语言简洁、开发效率高、可移植性强等优点,经过多年的生态建设,Python有了大量的函数库,尤其在数据分析和科学计算领域。另外,函数在Python中是一等公民,所以Python同时也是一种函数式编程语言。
互联网的快速发展为我们积累了庞大的数据,计算机硬件的创新为存储与分析这些数据创造了硬件条件,编程语言的发展为分析这些数据创造了软件条件。在数据分析这个领域,Python有着自身独特的优势,简单易用的特性与强大的开源模块的支持使其成为数据分析领域方便好用的利器。
Python在数据分析领域的广泛应用离不开强大的开源模块的支持,大名鼎鼎的NumPy、Scipy、Statsmodels、Pandas等模块的建立与发展奠定了Python在数据分析领域的重要地位。这些模块简单又好用,提供的解决方案能够满足绝大部分业务需求。在人工智能领域,Python也有非常棒的解决方案,如Sklearn、XGBoost、TensorFlow、MXNet、Theano、Caffe等都是非常好的开源模块。尤其在人工智能中前沿的深度学习领域,Python几乎占据了霸主的地位。Python借助在数据分析领域中开源模块的优势,在量化投资领域逐渐占据了领头羊的地位。
对数据的分析离不开数据的可视化,相对于在数据分析、人工智能、量化投资等领域中的发展,Python在数据可视化方面的发展有些滞后。最经典的Python可视化绘图库莫过于Matplotlib。Matplotlib就是MATLAB Plot Library,即模仿MATLAB的绘图库,其绘图风格与MATLAB类似。由于MATLAB的绘图风格偏古典,为了绘出更漂亮的图像,Python开源社区开发出了Seaborn绘图模块,它本质上是对Matplotlib的封装,绘图效果更符合现代人的审美。尽管如此,由于Matplotlib是基于GUI的绘图模块,所以也存在特有的缺陷。
就笔者的使用经验而言,Matplotlib主要存在两大缺陷:首先,Matplotlib是一个静态的绘图模块,其绘制的图像都是静态的,就像用软件打开图片一样,无法实现Web绘图的交互效果;其次,Matplotlib绘图结果分享极其不便,只能以图片的方式分享,读者看到的绘图结果完全是静态的,分享体验较差。至于Python其他绘图模块,诸如GGplot2、Plotly、Pyecharts等都比较小众,而Bokeh集成在Anaconda中,在笔者创作本书的过程中,Bokeh在GitHub上的Stars已经超过了Matplotlib。
Bokeh是一个基于D3.js的绘图库,所以其绘图结果可以与Web应用无缝衔接,在实现与读者交互的同时,便于分享、传播。其次,Bokeh有着自己强大又丰富的绘图库,提供了优雅、简洁的多功能图形绘制方法,在超大数据集或流式数据集上具有高性能的交互性,且与Python(或其他语言)的交互快速而简单。
笔者从2014年开始学习Python,主要将其用于传统行业数据分析,2016年初尝Bokeh便被其深深吸引。然而,Bokeh官方的文档为英文,且不符合国人的绘图习惯,因此我希望尽自己的微薄之力,将近年所知、所学进行归纳、整理,若读者能从中感悟一二,并将其用于工作实践,将是本书和本人之福!
【读者对象】
(1)大数据分析人员
毫无疑问,大数据分析人员是本书的核心受众群体之一,本书与其他可视化的书籍不同,本着Talk is cheap,show me your code的原则,尽可能言简意赅、深入浅出,以代码实现各种图表。数据可视化作为整个数据分析过程的最后一环,好的数据展示效果,往往会让数据分析结果更为生动、更具说服力。
另外,本书中代码未过多涉及复杂的数据预处理和分析技巧,着重讲述不同图表的绘制方法,以便于大数据分析人员进行重构,书中代码基本上可以即拿即用,从而节约宝贵时间用在数据清洗和分析探索上。
(2)企业管理运营人员
市面上各式各样的BI系统都非常成熟,如数据分析、图表的拖拽等,即使零编程基础的用户都可以做出像模像样的可视化图表或数据看板。然而,如果涉及产品、市场等核心敏感数据时,则不得不招兵买马,组建团队,以期实现企业专属的数据可视化系统,如业务中台、数据中台、营销中台等。此时,不可避免地要考虑到开发成本问题,Bokeh可以与Flask、Django等完美结合,用最小的成本实现企业数据全网实时、动态展示;在中小型公司中,如果无须联网仅内部使用,则无须服务器建站,可直接使用Bokeh sever展示,并通过局域网实现内部分享。
(3)IT转型人员
随着互联网的发展,数据分析团队的成员分工也变得更细,专精于数据可视化系统开发的人才也会愈加受到重视。而且,在Bokeh数据可视化领域没有复杂的算法,仅需具备一些Web前端和Python编程基础知识即可。
(4)大中专院校学生及科研人员
本书符合国内读者的阅读习惯,书中的可视化图表也可供大中专院校学生及科研人员进行论文写作、实际工作时使用。
【主要内容】
本书共分为5章,各章主要内容如下:
第1章介绍一些准备工作,包括Anaconda的安装方法、运行环境,以及绘图的主要方法。
第2章主要介绍基本图形的绘制,即对Bokeh中一些常见的基础图形,如线形图、柱状图、饼图、气泡图和直方图等进行介绍。
第3章主要介绍数据类型与转换,包括对Bokeh所需的常见数据类型进行的介绍。
第4章主要介绍视图属性,包括Bokeh图形配色、画布属性及绘图工具,图形显示方式和输出方式,用控件进行数据交互的方法。
第5章主要介绍Web动态可视化。熟悉Web开发的读者可以在任意前端框架下嵌入图形。
如果仅对Bokeh的基础绘图感兴趣,那么前4章的内容就能满足你的需求;如果你有一定的Web开发基础,那么可以参考第5章的内容,实现Web数据可视化。
屈希峰(yeayee)
资深Python工程师,Bokeh领域的实践者和布道者,对Bokeh有深入的研究。
擅长Flask、MongoDB、Sklearn等技术,实践经验丰富。
知乎多个专栏(Python中文社区、Python程序员、大数据分析挖掘)作者,专栏累计关注用户十余万人。
独立运营Intumu.com、Yeayee.com两个网站,在行业有一定的影响力。