Python数据分析:基于Plotly的动态可视化绘图
  • 推荐2
  • 收藏12
  • 浏览6.1K

Python数据分析:基于Plotly的动态可视化绘图

孙洋洋 (作者) 

  • 书  号:978-7-121-34113-7
  • 出版日期:2018-07-01
  • 页  数:400
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:黄爱萍
电子书 ¥49.00
购买电子书
纸质版 ¥79.00
随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,想要快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对Python语言来说,比较传统的数据可视化模块是Matplotlib,但是Matplotlib存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化中的发展。为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性,所以一经问世就受到开发人员的喜爱。本书主要介绍Plotly在可视化各领域的应用,包括基础绘图、数据处理、网页开发、程序GUI、机器学习、量化投资等,方便读者对Plotly快速上手。
本书绝大部分代码用Python编写,同时也给出了Plotly在R语言、MATLAB和JavaScript中的应用案例。
本书绝大部分代码用Python编写,同时也给出了Plotly在R语言、MATLAB和JavaScript中的应用案例。
孙洋洋,《PyQt 5快速开发与实战》一书的作者之一,擅长网络爬虫、机器学习、量化投资与程序GUI开发设计。有多年量化投资实盘操作经历,现就职于某期货公司做量化研究员。
王硕,资深软件工程师,具有9年的Java企业应用开发经验和4年的教育培训经验,曾主持多个B/S项目开发,项目经验丰富,擅长Java EE(Struts2、Spring3、Hibernate3)项目开发、Python(程序GUI、数据分析、网络爬虫)项目开发,是极宽量化开源团队核心成员,也是《PyQt5快速开发与实战》一书的作者之一。
邢梦来,极宽量化开源团队发起人。擅长量化分析理论,深入研究多空对比分析,对多空趋势平衡有独特的见解,形成一套多空对比体系。同时对对交易心理状况、人工智能与区块链技术也有较深的研究,著有《深度学习框架PyTorch快速开发与实战》一书。
袁泉,哥伦比亚大学硕士,上海大学数学学士,擅长使用Python进行数据分析,以及各类机器学习与优化算法实现。
吴娜,电信数据挖掘工程师,上海交通大学计算机硕士。负责电信政府产品部门公检法项目,对智慧警务有独到理解,著有《游戏数据分析的艺术》,是极宽量化开源团队发起成员。
前言
Python是一门非常优秀的编程语言,其语法简洁、易学易用,越来越受到编程人员的喜爱;Python也是一门非常“人性化”的编程语言,其各种语法规则的设计符合人们的思维方式,开发人员可以用最简单的方式实现自己的编程目的,降低时间成本;同时,Python又是一门非常强大的编程语言,其在编程的各个领域都有非常不错的表现,比如在网页开发、程序GUI设计、网络爬虫、科学计算、数据可视化、机器学习与深度学习等领域,Python都有非常好的解决方案来解决现实中的业务问题。
互联网的快速发展为我们积累了庞大的数据,计算机硬件的创新为存储与分析这些数据创造了硬件条件,编程语言的发展为分析这些数据创造了软件条件。在数据分析这个领域,Python有着自己独有的优势,简单易用的特性与强大的开源模块的支持使其成为数据分析领域方便、好用的利器。
Python在数据分析领域的广泛应用离不开其强大的开源模块的支持,大名鼎鼎的NumPy、SciPy、StatsModels、Pandas等模块的建立与发展奠定了Python在数据分析领域中的重要地位。这些模块简单又好用,它们提供的解决方案能够满足绝大部分业务需求。在人工智能领域,Python也有非常棒的解决方案,如Sklearn、TensorFlow、MXNet、Theano、PyTorch、Caffe等都是非常好的开源模块。尤其在人工智能中最前沿的深度学习领域,Python几乎占据了霸主的地位。Python借助在数据分析领域中开源模块的优势,在量化投资领域逐渐占据了领头羊的地位。国内外主流量化投资网站大多支持Python语言,其在量化投资领域有一种逐渐淘汰其他语言,一统“江湖”之势。
对数据的分析离不开数据的可视化,相对于Python在数据分析、人工智能、量化投资等领域中的发展,在数据可视化方面的发展有些滞后。最经典的Python可视化绘图库莫过于Matplotlib了,Matplotlib就是MATLAB+Plot+Library,即模仿MATLAB的绘图库,其绘图风格与MATLAB类似。由于MATLAB的绘图风格有些偏古典,为了绘出更漂亮的图像,Python开源社区开发出了Seaborn绘图模块,它本质上是对Matplotlib的封装,绘图效果更符合现代人的审美观。尽管如此,由于Matplotlib是基于GUI的绘图模块,所以存在特有的缺陷。
就笔者使用的经验而言,Matplotlib主要存在两大缺陷:首先,Matplotlib是一个静态的绘图模块,即我们绘出的图像是静态的,就像用看图软件打开图片一样,没有网页绘图的交互式效果;其次,Matplotlib绘图结果的分享很不方便,在绘图结果分享给别人时只能以图片的方式分享,别人看到的绘图结果完全是静态的,分享体验很不好。Matplotlib一直以来都是Python可视化的主力军,但是确实存在无法克服的缺陷,并且其他的Python绘图模块如Ggplot、Bokeh、Pygal等都比较小众,绘图功能比较单一,完成不了对Matplotlib的替代。
为了解决Python在可视化中存在的问题,Plotly应运而生,它是一个基于JavaScript的动态绘图模块。Plotly的绘图效果与我们在网页上看到的动态交互式绘图效果是一样的,其默认的绘图结果是一个HTML网页文件,通过浏览器就可以查看。我们可以把这个HTML文件分享给其他人,对方看到的效果与我们在本机上看到的效果完全一样。
Plotly有着自己强大又丰富的绘图库,支持各种类型的绘图方案。Plotly是基于JavaScript的绘图库,所以其绘图结果可以与Web应用无缝集成。总之,Plotly在绘图模块上是Matplotlib强有力的竞争对手,Plotly绘图的种类丰富、效果美观、易于保存与分享,因而越来越受数据分析人士的喜爱,至少笔者对Plotly的喜爱胜于对Matplotlib的喜爱。
Plotly最初是一款商业化的绘图软件,在2015年11月12日,Plotly开发团队决定把该模块的核心框架plotly.js开源,由此Plotly得到了快速发展。虽然在2016年6月,Plotly开发团队才正式发布其Python-api文档,在2017年 1月,Plotly 1.0才正式发布,但是这些都阻止不了程序员对Plotly的喜爱。自plotly.js开源之后,我们可以使用本地的离线模式进行绘图,不依赖于官方的服务器,使得绘图速度更快,效果与在线绘图一样,这也是目前使用Plotly绘图的主流模式。
市面上有很多关于Matplotlib的可视化绘图教程,但是还没有Plotly的相关图书,作为一款非常优秀的可视化绘图模块,市面上急需一本科普性的图书。在本书创作之前,市面上就已经出现了电子版的对Plotly的简单翻译版本《Plotly中文说明1期》,这是极宽量化开源团队在2017年1月的作品。极宽量化开源团队是一群研究“Python量化投资”的爱好者自愿组成的一个团队,该团队成立的初衷是为国内量化投资领域做出自己的一份贡献,目前已经成功初步翻译PyAlgoTrade、Seaborn、StatsModels、Plotly等开源模块,并公开上传到网络上,《Plotly中文说明1期》正是该团队的一个作品。
我作为极宽量化开源团队《Plotly中文说明1期》项目的第一负责人,最初的想法只是单纯地把Plotly的基础内容简单翻译一下,以最简单、最快速的方式呈现给大家,方便大家使用。但是后来电子工业出版社的黄爱萍编辑找我沟通,请我编写一本Plotly数据可视化的相关图书,她认为Plotly发展很快,市场上需要一本Plotly的相关教材。经过一段时间的权衡,考虑到个人对Plotly的掌握程度、开源团队对Plotly的热情、个人在写《PyQt 5快速开发与实战》时与黄编辑建立的良好关系,以及《Plotly中文说明1期》存在的太多缺陷等,也为了能让更多的人接触Plotly这个优秀的绘图模块,于是决定再次抽出大量的时间来完成本书的创作,这就是本书的写作背景。
Plotly是一个非常优秀的顶级绘图模块,如此优秀的开源模块在国内的知名度却不是很高,这对国内开发人员来说是一个很大的遗憾。顶级模块在特定的领域达到家喻户晓的程度是一个必然的趋势,Plotly正是这种模块,它在可视化绘图领域的表现终会大放异彩。虽然目前Plotly在国内知名度不是很高,但其在可视化绘图领域做到家喻户晓是一个必然的趋势,只是需要有人加速这种趋势的演化过程,这就是本书存在的意义。
本书结构
本书的框架结构如下。
第1章是本书的快速入门部分,介绍Plotly的安装环境,对在线绘图与离线绘图做了简要的介绍。
第2章是基础绘图部分,对Plotly的一些常见的基础图形如线形图、柱状图、饼图、气泡图和直方图等做了一些介绍。
第3章是高级图形部分,对Plotly的时间序列绘图、表格绘图、多个坐标轴绘图、多子图绘图、SVG绘图等做了一些介绍,是Plotly绘图的高级应用。
第4章是Pandas部分,介绍Pandas这个顶级数据分析模块使用Plotly进行绘图的方法。
第5章是金融绘图部分,主要为金融领域的特殊图形尤其是K线图的绘制提供了解决方案。
第6章是Matplotlib部分,主要介绍如何把Matplotlib绘图迁移到Plotly中。
第7章是网页开发部分,主要介绍Plotly在Python网页开发框架Django和Flask中的应用。
第8章是GUI开发部分,主要介绍Plotly在GUI开发框架PyQt 5中的应用。
第9章是机器学习部分,主要介绍Plotly在机器学习框架Sklearn与PyTorch中的应用。
第10章是量化投资部分,主要介绍Plotly在量化投资领域中的可视化应用。
第11章是其他语言应用部分,主要对其他语言如R、MATLAB、JavaScript的Plotly绘图做了简要的介绍。
如果你仅仅对Plotly的基础绘图有兴趣,那么前两章的内容就能满足你的需求;如果你对Plotly更高级的绘图有兴趣,那么可以参考第3章的内容;对于本书其他章节的内容,可以根据自己的实际情况有选择地阅读,毕竟Plotly绘图所涉及的范围特别广泛,并不是每个人对这些领域都同时感兴趣。
本书代码与交流
本书的所有代码都将保存在GitHub上,后续代码更新也会以GitHub地址为准,网址是https://github.com/sunshe35/PythonPlotlyCodes,读者可自行下载。另外,为了方便读者交流、学习Plotly,笔者建立了QQ群(群号:72203080)。
致谢
Plotly虽然只是一个绘图模块,但是其应用场景非常广泛,除有Matplotlib的基本绘图功能外,其在Web开发、GUI开发、机器学习、量化投资等领域也有很好的应用场景。由于其应用场景特别广泛,结合笔者自身知识的局限性,所以写好一本书需要多个人的共同努力,非常感谢下面这些作者对本书的创作所付出的努力:王硕负责本书的Flask、PyTorch、JavaScript部分;邢梦来负责本书的Matplotlib部分;袁泉负责本书的基础绘图与Sklearn部分;吴娜负责本书的Pandas部分,其他都由本人孙洋洋负责。在Plotly的写作过程中,还有一些人为本书的顺利出版做出了贡献:首先,感谢《Plotly中文说明1期》的开源组成员们,你们的贡献是本书基础部分的雏形,相关人员的网名和QQ号分别是youngle sunny 1535327967、余勤441499022、华子32509167、啦啦啦505512828、禛948280670、L. 1248515039、Rikimaru 11766429、iris 704699640、信平759949947、吴娜2184934、周涛510548099、zw木子719735825、非洲兔85011284、十二月378258849、大朱775941748、我爱作文你信吗571171954。其次,感谢山西证券金融科技部的陈亦苏、成都数联铭品科技有限公司的刘赣,以及极宽量化开源组的梁勇对本书网页开发部分提供的帮助,感谢西南财经大学统计学院王彦锋博士对本书R语言部分提供的帮助,感谢北京大学汇丰商学院硕士研究生扶禄城对本书MATLAB部分提供的帮助。再次,感谢黄爱萍与戴新两位编辑对本书的出版所付出的努力。最后,感谢我的父母与兄弟姐妹对我的关心与照顾,我现在取得的成果离不开你们对我的付出。
与读者相识于Plotly是一种缘分,能够看到本书说明读者对Plotly是感兴趣的,感谢读者愿意花费时间阅读本书,希望每一位读者都能够通过阅读本书有所收获,真心祝愿你们都能够学习顺利、事业有成。

孙洋洋
2018年4月

目录

第1章 快速开始 1
1.1 Plotly简介 1
1.2 安装与安装环境 6
1.3 在线初始化 6
1.4 在线绘图隐私说明 8
1.5 开始在线绘图 8
1.6 使用离线绘图库 11
1.7 参数解读 13
1.8 查看帮助 14
第2章 Plotly基础图形 16
2.1 基础案例解读 17
2.2 基本绘图流程 19
2.3 散点图 20
2.3.1 基本案例 20
2.3.2 样式设置 22
2.3.3 应用案例 24
2.3.4 参数解读 26
2.4 气泡图 28
2.4.1 基本案例 28
2.4.2 样式设置 29
2.4.3 缩放设置 30
2.4.4 参数解读 33
2.5 线形图 33
2.5.1 基本案例 33
2.5.2 数据缺口与连接 35
2.5.3 数据插值 38
2.5.4 填充线形图 41
2.5.5 应用案例 45
2.5.6 参数解读 49
2.6 柱状图 49
2.6.1 基本柱状图 49
2.6.2 柱状簇 50
2.6.3 层叠柱状图 52
2.6.4 瀑布式柱状图 54
2.6.5 图形样式设置 56
2.6.6 应用案例 58
2.6.7 参数解读 60
2.7 水平条形图 61
2.7.1 基本案例 61
2.7.2 应用案例 64
2.7.3 参数解读 70
2.8 甘特图 70
2.8.1 基本甘特图 70
2.8.2 甘特图(按数字索引) 71
2.8.3 甘特图(按类别索引) 72
2.8.4 应用案例 74
2.9 面积图 76
2.9.1 基本面积图 76
2.9.2 内部填充面积图 78
2.9.3 堆积面积图 80
2.10 直方图 83
2.10.1 基本直方图 83
2.10.2 重叠直方图 84
2.10.3 层叠直方图 85
2.10.4 累积直方图 87
2.10.5 应用案例 88
2.10.6 参数解读 89
2.11 饼图 90
2.11.1 基本饼图 90
2.11.2 环形饼图 91
2.11.3 样式设置 92
2.11.4 应用案例 93
2.11.5 参数解读 98
2.12 更多案例 99
2.13 Plotly对象概览 100
第3章 Plotly高级图形 110
3.1 时间序列 110
3.1.1 使用方法 110
3.1.2 时间范围约束 111
3.2 滑动选择控件 113
3.3 表格 117
3.3.1 入门案例 117
3.3.2 添加链接 118
3.3.3 使用Pandas 120
3.3.4 改变大小与颜色 121
3.3.5 表格与图 124
3.4 多图表 129
3.5 多个坐标轴 130
3.5.1 双坐标轴 130
3.5.2 多坐标轴 132
3.5.3 共享坐标轴 136
3.6 多子图 138
3.6.1 双子图(方法一) 138
3.6.2 双子图(方法二) 139
3.6.3 多子图(方法一) 141
3.6.4 多子图(方法二) 142
3.6.5 分割视图区间 144
3.6.6 子图共享坐标轴(方法一) 147
3.6.7 子图共享坐标轴(方法二) 149
3.6.8 子图坐标轴自定义 152
3.6.9 嵌入式子图 154
3.6.10 混合图 155
3.7 绘制SVG 159
3.7.1 线形图的绘制 160
3.7.2 线形图应用:创建图形的切线 163
3.7.3 矩形图的绘制 166
3.7.4 矩形图应用:设置时间序列区域高亮显示 169
3.7.5 圆形图的绘制 171
3.7.6 圆形图应用:高亮显示散点图的聚集簇 174
第4章 Plotly与Pandas 178
4.1 简单快速入门 178
4.1.1 基本线形图 179
4.1.2 基本散点图 180
4.1.3 基本柱状图 181
4.2 使用cufflinks绘图 183
4.2.1 安装cufflinks 183
4.2.2 快速入门 183
4.2.3 快速获取数据 185
4.2.4 自定义绘图 186
4.2.5 常见经典图形 188
4.2.6 更多案例 193
第5章 金融绘图 194
5.1 快速绘制K线图 194
5.1.1 检查Plotly版本 194
5.1.2 快速绘制OHLC(美国线)图 194
5.1.3 快速绘制蜡烛图 197
5.2 K线图的优化 199
5.2.1 过滤非交易时间 199
5.2.2 设置形状、颜色和注释 203
5.2.3 添加技术指标 207
5.3 使用自定义数据的金融绘图 211
5.4 高级金融绘图 214
5.4.1 入门案例 214
5.4.2 综合案例 215
第6章 Matplotlib 217
6.1 Matplotlib简介 217
6.2 安装Matplotlib 218
6.3 调整Matplotlib参数 220
6.4 常用的API功能 222
6.5 线性函数 223
6.6 增加子图 225
6.7 确定坐标范围 228
6.8 概率图 229
6.9 散点图 232
6.10 柱状图 235
6.11 更多扩展 239
第7章 Plotly与网页开发 240
7.1 Plotly在Django中的应用 240
7.1.1 安装环境搭建 240
7.1.2 安装环境测试 241
7.1.3 入门案例一 243
7.1.4 入门案例二 247
7.1.5 更多案例扩展 254
7.1.6 应用案例一 256
7.1.7 应用案例二 258
7.2 Plotly在Flask中的应用 267
7.2.1 安装Flask 269
7.2.2 最小的Web应用 269
7.2.3 模板渲染 270
7.2.4 入门案例一 272
7.2.5 入门案例二 275
7.2.6 应用案例 283
第8章 Plotly与GUI开发 293
8.1 PyQt的安装 295
8.2 案例解读 295
8.3 设置提升的窗口部件 298
8.4 Plotly_PyQt 5的使用 300
8.5 更多扩展(Plotly) 304
8.6 Plotly与PyQt 5.6的结合 305
8.7 更多扩展(Matplotlib) 309
8.8 应用案例:展示产品组合信息 309
第9章 Plotly与机器学习 316
9.1 Plotly在Sklearn中的应用 316
9.1.1 分类问题 316
9.1.2 回归问题 319
9.1.3 聚类问题 321
9.2 PyTorch可视化工具 326
9.2.1 Visdom简介 326
9.2.2 安装Visdom 327
9.2.3 Visdom与Plotly 328
9.2.4 Visdom基本概念 328
9.2.5 Visdom经典案例 329
9.2.6 Visdom与PyTorch 345
第10章 Plotly在量化投资中的应用 346
第11章 Plotly在其他语言中的应用 355
11.1 Plotly在R语言中的应用 355
11.1.1 安装R语言 355
11.1.2 安装Plotly模块 356
11.1.3 Plotly应用分析 356
11.1.4 更多扩展 362
11.2 Plotly在MATLAB中的应用 363
11.2.1 下载与安装 363
11.2.2 基础入门 365
11.2.3 经典案例 367
11.2.4 更多扩展 376
11.3 Plotly在JavaScript语言中的应用 377
11.3.1 基础入门 377
11.3.2 散点图 380
11.3.3 条形图 383
11.3.4 扇形图 384
11.3.5 更多扩展 386

读者评论

电子书版本

  • Epub

推荐用户

相关图书

Harbor权威指南

张海宁 邹佳 王岩 尹文开 任茂盛 等 (作者)

在云原生生态中,容器镜像和其他云原生制品的管理与分发是至关重要的一环。本书对开源云原生制品仓库Harbor展开全面讲解,由Harbor开源项目维护者和贡献者倾力...

 

集成学习:基础与算法

Zhi-Hua Zhou (作者) 李楠 (译者)

集成学习方法是一类先进的机器学习方法,这类方法训练多个学习器并将它们结合起来解决一个问题,在实践中获得了巨大成功。<br>全书分为三部分。第一部分主要介绍集成学...

¥89.00

Kubernetes源码剖析

郑东旭 (作者)

本书主要分析了Kubernetes核心功能的实现原理,是一本帮助读者了解Kubernetes架构设计及内部原理实现的书。由于Kubernetes代码量较大,源码...

 

对比Excel,轻松学习SQL数据分析

张俊红 (作者)

本书是《对比Excel,轻松学习Python 数据分析》的姊妹篇,同样采用对比的方法,降低学习门槛,提高学习效率。全书分为3 篇:第1 篇主要介绍数据分析的基础...

 

面向数据分析师的数据可视化指南

林斌 (作者)

本书针对数据分析和研究报告中的图表应用,结合大量经济、金融和商业实例,探讨数据可视化的基本原则、技巧及思路。本书基于Excel软件,循序渐进地介绍专业图表制作的...

¥99.00

Python极简讲义:一本书入门数据分析与机器学习

张玉宏 (作者)

本书以图文并茂的方式介绍了Python的基础内容,并深入浅出地介绍了数据分析和机器学习领域的相关入门知识。 第1章至第5章以极简方式讲解了Python的常用语...

¥89.60