Python数据可视化之美
  • 推荐0
  • 收藏8
  • 浏览17.8K

Python数据可视化之美

张杰 (作者) 

  • 书  号:978-7-121-38370-0
  • 出版日期:2020-03-25
  • 页  数:328
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:石倩
电子书 ¥90.30
购买电子书
纸质版 ¥129.00
本书主要介绍如何使用Python 中的matplotlib、Seaborn、plotnine、Basemap 等包绘制专业图表。本书首先介绍Python 语言编程的基础知识,以及NumPy 和Pandas 的数据操作方法;再对比介绍matplotlib、Seaborn 和plotnine 的图形语法。本书系统性地介绍了使用matplotlib、Seaborn 和plotnine 绘制类别对比型、数据关系型、时间序列型、整体局部型、地理空间型等常见的二维和三维图表的方法。另外,本书也介绍了商业图表与学术图表的规范与差异,以及如何使用matplotlib 绘制HTML 交互页面动画。
Matplotlib包的首席开发者Thomas Caswell 和plotnine包的开发者与维护者Hassan Kibirige力荐
张杰【狮猿狗】

数据分析-工业设计狮,程序猿,科研狗;
微信公众号【EasyShu】联合主创;
著有15篇SCI(E)和SSCI学术论文;
出版专著《Excel 数据之美:科学图表与商业图表的绘制》《R语言数据可视化之美:专业图表绘制指南》《Python数据可视化之美:专业图表绘制指南》;
多届中国R会议数据可视化演讲嘉宾;
学术研究方向为颜色科学、机器视觉、数据分析与可视化等。
序言
In the last 20 years the amount of data created has grown massively. The need to understand this data,communicate what it means and use it to make better decisions has also grown. What has not changed is the human biology, so our brains must make sense of this ever-increasing amount information. As pictures are easier to understand than numbers, good visualisations have become more important as data grows in
quantity, size and complexity.
(在过去的20 年中,随着社会产生数据的大量增加,对数据的理解、解释与决策的需求也随之增加。而固定不变是人类本身,所以我们的大脑必须学会理解这些日益增加的数据信息。所谓“一图胜千言”,对于数量、规模与复杂性不断增加的数据,优秀的数据可视化也变得愈加重要。)
Data comes in different kinds so it demands different methods to make sense of it. It is not possible to have a single tool/program that will work for all datasets, so we must be flexible. Many times we have to manipulate data before we can visualise it. In fact, a visualisation is typically part of a wider analysis, so we must learn to write code to analyse and visualise the data. Programming is the means by which we bring out the flexibility.
(数据来源各不同,这也导致我们需要不同的方法去理解它们。想使用一种工具或者编程语言就适用于所有数据,这是天方夜谭。所以,我们必须随机应变。在很多情况下,我们不得不在操作数据前先可视化数据。实际上,数据可视化是数据分析的一个特别部分。所以,我们必须学会编程去分析与可视化数据。编程可以给我们带来各种灵活性的方法。)
Now comes the first choice, in what programming language shall we write the code? We have to choose at least one and the authors of this book have chosen the Python programming language.
(现在面临的第一个选择就是我们将使用什么样的语言编程。我们不得不选择一种编程语言,而这本书选择Python 作为编程语言。)
Python is a widely used general programming language that is easy to learn and it has been embraced by a large scientific computing community who have created an open ecosystem of packages for anlaysing and visualising data. By choosing Python these packages become available to you — free of charge. For example, key packages like NumPy and Pandas which are covered in Chapter 2, make it possible to represent data in sequences and in tables, and they provide many useful methods to act on this data.
(Python 是一种广泛使用的编程语言,易于学习,而且一个巨大的科学计算社区开发了一个拥有许多数据分析与可视化包的开源生态圈。如果选择Python 作为编程语言,这些包就可以供你免费使用。比如,本书第2 章讲解的Python 核心包NumPy 和Pandas,可以使用序列和表格表示数据,同时还提供了许多有用的数据操作方法。)
The next choice is, what package(s) to use for visualisation? The authors have three choices for you;Matplotlib, Seaborn and Plotnine. Are they good choices? Yes, they are.
(接下来的选择就是我们该使用何种包实现数据可视化。本书作者提供了三个选择:Matplotlib、Seaborn 和Plotnine。那它们是不是好的选择?是的,非常正确。)
Matplotlib is the most widely used package for data visualisation in Python. Powerful and versatile, it can be used to create figures for publication or to create interactive environments. In 1999 Leland Wilkinson in the book "The Grammar of Graphics" introduced an elegant way with which to think about data visualisation. This "Grammar" gives us a structured way with which to transform data into to a visualisation and it makes it easy to create many kinds of complicated plots. This is where the Seaborn and plotnine packages come in, they are built on top of matplotlib and are inspired by ggplot2 –an implementation of "The Grammar of Graphics" by Hadley Wickham.
(在Python 中使用最为广泛的数据可视化包是matplotlib。它功能强大且齐全,可以用于制作出版物中的图表,也可以用于制作交互式图表。Leland Wilkinson 于1999 年撰写的书籍《图形语法》介绍了一种实现数据可视化的优秀方法。这种语法给了我们一种将数据转换成图表的结构性方法,而且使绘制各种复杂图表变得更加容易。这就是Seaborn 和plotnine 包的由来。它们建立在matplotlib
包的基础上,而且启发于R 语言的ggplot2 包- Hadley Wickham 基于《图形语法》开发的数据可视化包。)
The programming language and key packages are choices made for you, but making beautiful visualisations requires many more choices. These choices change depending on the data, display medium and audience; they are what this book will help you learn to make. In here, you will get exposed to a variety of plots, you will learn about the advantages of different plots for the same data, you will learn about *The Grammar of Graphics*, you will learn how to create visualisations with multiple plots and you will learn how to ustomize the visualisations and ultimately you will learn how to make beautiful visualisations.
(编程语言和相应的核心包已经帮你选择,但是制作优美的图表仍需更多技能。这些技能的选择取决于你的数据、展示媒介与受众,这就是这本书将要帮助你学习的内容。在这里,你会接触到各种各样的图表,会学习到同一数据不同可视化方法的优势,会学习到“图形语法”,还会学习到如何使用各种图表实现数据可视化,学习到如何定制化图表,最终你会学习到如何制作优美的数据可视化。)
Now you have no choice but to proceed.
(在这里,你别无选择,唯有勇往直前!)
Hassan Kibirige
Author/Maintainer of plotnine
(plotnine 包的开发者/维护者)
2020 年1 月9 日

前言
本书主要介绍如何使用Python 中的matplotlib、Seaborn、plotnine、Basemap 等包绘制专业图表。本书首先介绍Python 语言编程基础知识,以及NumPy 和Pandas 的数据操作方法;再对比介绍matplotlib、Seaborn 和plotnine 的图形语法。本书系统性地介绍了使用matplotlib、Seaborn 和plotnine绘制类别对比型、数据关系型、时间序列型、整体局部型、地理空间型等常见的二维和三维图表的方法。另外,本书也介绍了商业图表与学术图表的规范与差异,以及如何使用matplotlib 绘制HTML交互页面动画。
本书定位
人生苦短,我用Python!
现在Python 语言越来越流行,尤其是在机器视觉、机器学习与深度学习等领域。但是数据可视化一直是其短板,特别是相对R 语言而言。R 语言以ggplot2 包及其拓展包人性化的绘图语法大受用户的喜爱,特别是生物信息与医学研究者。市面上有两本很经典的R ggplot2 教程:ggplot2 Elegant Graphics for Data Analysis 和R Graphics Cookbook,这两本书重点介绍了ggplot2 包的绘图语法及常见图表的绘制方法。另外,《R 语言数据可视化之美:专业图表绘制指南(增强版)》基于R 中的ggplot2包及其拓展包等,系统性地介绍了几乎所有常见的二维和三维图表的绘制方法。
所以,笔者认为很有必要系统性地介绍Python 的绘图语法系统,包括最基础也最常用的matplotlib、常用于统计分析的Seaborn、最新出现的类似R ggplot2 语法的plotnine 包,以及用于地理空间数据可视化的Basemap 包。本书首先介绍数据可视化基础理论,然后系统性地介绍了几乎所有常见的二维和三维图表的绘制方法,包括简单的柱形图系列、条形图系列、折线图系列、地图系列等。

读者对象
本书适合想学习数据分析与可视化相关专业课程的高校学生,以及对数据分析与可视化感兴趣的职场人士阅读,尤其是Python 用户。从软件掌握程度而言,本书同样适用于零基础学习Python的用户。
阅读指南
全书内容共有11 章,其中,前3 章是后面8 章的基础,第4~10 章都是独立知识点,第11 章是数据可视化绘图综合案例。读者可以根据实际需求有选择性地进行学习。
第1 章 介绍Python 编程基础,重点介绍数据结构、控制语句与函数编写。
第2 章 介绍Python 数据处理基础,重点介绍NumPy 和Pandas 的数据操作方法,包括NumPy的数值运算与Pandas 的表格运算。
第3 章 介绍Python 数据可视化基础,重点对比介绍了matplotlib、Seaborn 和plotnine 的图形语法,以及数据可视化的颜色主题运用原理。
第4 章 介绍类别比较型图表,包括柱形图系列、条形图系列、南丁格尔玫瑰图、径向柱图等图表。
第5 章 介绍数据关系型图表,包括二维和三维散点图、气泡图、等高线图、三维曲面图、三元相图、二维和三维瀑布图、相关系数热力图等图表。
第6 章 介绍数据分布型图表,包括一维、二维和三维的统计直方图和核密度估计图、抖动散点图、点阵图、箱形图、小提琴图等图表。
第7 章 介绍时间序列型图表,包括折线图和面积图系列、日历图、量化波形图等图表。
第8 章 介绍局部整体型图表,包括饼状图、马赛克图、华夫饼图、点状柱形图系列等图表。
第9 章 介绍高维数据的可视化方法,包括分面图系列、矩阵散点图、热力图、平行坐标系图、RadViz 图等图表。
第10 章 介绍地理空间型图表,包括分级统计地图、点描法地图、带气泡/柱形的地图、等位地图、线型地图、三维柱形地图等不同的地图图表。
第11 章 介绍数据可视化的各种应用场景,包括商业图表、学术图表、HTML 网页动画等的规范与制作。
应用范围
本书的图表绘制方法都是基于Python 的matplotlib、Seaborn、plotnine、Basemap 等包实现的,几乎适应于所有常见的二维和三维图表。本书以虚拟的地图数据为例讲解不同的地理空间型图表,读者需将绘图方法应用到实际的地理空间型图表。
适用版本
本书所用Python 版本为:3.7.1;图表绘制包matplotlib、Seaborn、plotnine、Basemap 和GeoPandas的版本分别为:3.0.2、0.9.0、0.5.1、1.2.0 和0.4.1;数据处理包NumPy 和Pandas 的版本分别为:1.15.4和0.23.4。
Python 作为免费的开源软件,数据分析与可视化的包更新迭代很快,这是它的优势。但是有时候有些代码运行可能会由于Python 及其包的版本的更新,而出现函数弃用(deprecated)的情况。此时,需要自己更新代码,使用新的函数替代原有的函数。
源代码
本书配有几乎所有图表的Python 源文件及其CSV 或TXT 格式的数据源文件。但是需要注意的是,如果运行的Python 版本没有安装相应的数据分析与可视化的包(package),那么请预先安装相应的包,才能成功运行代码。同时,也请注意运行Python 及其包的版本是否已经更新。本书配套源代码下载的GitHub 网址:https://github.com/Easy- Shu/Beautiful-Visualization-with-python。
与作者联系
因笔者知识与能力所限,书中纰漏之处在所难免,欢迎并恳请读者朋友们给予批评与指正,可以通过邮箱联系笔者。如果读者有关于学术图表或商业图表绘制的问题,可以与笔者交流。另外,更多关于图表绘制的教程请关注笔者的博客、专栏和微博平台,也可以重点关注微信公众号:EasyShu,还可以添加笔者微信:EasyCharts。笔者的数据分析与可视化的文章会优先发表在微信公众号平台。
邮 箱:easycharts@qq.com
博 客:https://github.com/Easy-Shu/EasyShu-WeChat
知乎专栏:https://zhuanlan.zhihu.com/EasyShu(知乎账号:张杰)
致谢
自从2019 年10 月出版《R 语言数据可视化之美:专业图表绘制指南(增强版)》,很多读者问笔者能不能出一本Python 版的数据可视化教程。写书真的呕心沥血,但是在撰写过程中能系统地总结所学的知识,可以查漏补缺,也是受益匪浅。《R 语言数据可视化之美:专业图表绘制指南》这本书在2017 年5 月断断续续写了1 年半多,到2019 年5 月才出版。后来又花了3 个多月增加了3 章图表内容,增强版才出版。
所谓“大道相通”,不同软件的数据可视化原理都是相通的。《Python 数据可视化之美:专业图表绘制指南》这本书就是对照着R 语言那本书“翻译”而成的。所以亲爱的读者请不必诧异于笔者现在这么快又出版Python 的数据可视化图书了。
在这里,首先要感谢读者,感谢你们对笔者的支持与包容。也非常感谢笔者的大学好友金伟(现为腾讯高级研究员)引导笔者入门Python,还要感谢香港理工大学的姚鹏鹏博士、清华大学的赵建树博士笔者在学习Python 时给予的帮助。最后,笔者觉得还应该感谢的就是自己。蓦然回首,4 年弹指一挥间,从大学毕业到香港做学术研究这几年,经历过很多次的失望,也差点患上抑郁症,感谢自己有一颗积极、阳光、乐观的心,终于守得云开见月明,如笔者所愿能坚持做自己喜欢的事情。
小时候,读到课本里普希金的一段话:“假如生活欺骗了你,不要悲伤,不要心急!忧郁的日子里须要镇静:相信吧,快乐的日子将会来临。”到现在才明白这确实是一条生活的“潜规则”。月有阴晴圆缺,人有悲欢离合。人不仅有趋利避害、喜甜厌苦的本能反应,还有趋欢避悲、求乐脱苦的本能调节。所以,悲伤的日子后面就是快乐的日子。
亲爱的读者,也希望你能快乐地阅读本书!
作 者
2019 年12 月5 日

目录

目录
第1 章 Python 编程基础 1
1.1 Python 基础知识 . 2
1.1.1 Python 3.7 的安装 . 2
1.1.2 包的安装与使用 . 3
1.1.3 Python 基础操作 . 4
1.2 6 种常用数据结构 5
1.2.1 列表 . 5
1.2.2 字典 . 6
1.2.3 元组 . 6
1.3 控制语句与函数编写 . 6
1.3.1 控制语句 . 6
1.3.2 函数编写 . 8
第2 章 数据处理基础 . 10
2.1 NumPy:数值运算 11
2.1.1 数组的创建 11
2.1.2 数组的索引与变换 . 12
2.1.3 数组的组合 . 13
2.1.4 数组的统计函数 . 14
2.2 Pandas:表格处理 15
2.2.1 Series 数据结构 . 15
2.2.2 数据结构:DataFrame 16
2.2.3 数据类型:Categorical . 18
2.2.4 表格的变换 . 19
2.2.5 变量的变换 . 20
2.2.6 表格的排序 . 20
2.2.7 表格的拼接 . 21
2.2.8 表格的融合 . 22
2.2.9 表格的分组操作 . 23
2.2.10 数据的导入与导出 . 26
2.2.11 缺失值的处理 . 28
第3 章 数据可视化基础 29
3.1 matplotlib . 33
3.1.1 图形对象与元素 . 33
3.1.2 常见图表类型 . 36
3.1.3 子图的绘制 . 38
3.1.4 坐标系的变换 . 41
3.1.5 图表的导出 . 44
3.2 Seaborn 44
3.2.1 常见图表类型 . 45
3.2.2 图表风格与颜色主题 . 46
3.2.3 图表的分面绘制 . 48
3.3 plotnine 50
3.3.1 geom_???()与stat_???() 51
3.3.2 美学参数映射 . 54
3.3.3 度量调整 . 58
3.3.4 坐标系及其度量 . 64
3.3.5 图例 . 69
3.3.6 主题系统 . 71
3.3.7 分面系统 . 73
3.3.8 位置调整 . 74
3.4 可视化色彩的运用原理 . 76
3.4.1 RGB 颜色模式 76
3.4.2 HSL 颜色模式 . 77
3.4.3 LUV 颜色模式 79
3.4.4 颜色主题的搭配原理 . 80
3.4.5 颜色主题方案的拾取使用 . 84
3.4.6 颜色主题的应用案例 . 87
3.5 图表的基本类型 . 91
3.5.1 类别比较 . 91
3.5.2 数据关系 . 92
3.5.3 数据分布 . 93
3.5.4 时间序列 . 94
3.5.5 局部整体 . 94
3.5.6 地理空间 . 95
第4 章 类别比较型图表 96
4.1 柱形图系列 . 97
4.1.1 单数据系列柱形图 . 98
4.1.2 多数据系列柱形图 . 100
4.1.3 堆积柱形图 . 101
4.1.4 百分比堆积柱形图 . 102
4.2 条形图系列 . 104
4.3 不等宽柱形图 . 105
4.4 克利夫兰点图 . 106
4.5 坡度图 . 108
4.6 南丁格尔玫瑰图 110
4.7 径向柱图 114
4.8 雷达图 117
4.9 词云图 119
第5 章 数据关系型图表 122
5.1 散点图系列 . 123
5.1.1 趋势显示的二维散点图 . 123
5.1.2 分布显示的二维散点图 . 131
5.1.3 气泡图 . 136
5.1.4 三维散点图 . 139
5.2 曲面拟合 . 142
5.3 等高线图 . 145
5.4 散点曲线图系列 . 147
5.5 瀑布图 . 149
5.6 相关系数图 . 156
第6 章 数据分布型图表 159
6.1 统计直方图和核密度估计图 . 161
6.1.1 统计直方图 . 161
6.1.2 核密度估计图 . 161
6.2 数据分布图表系列 . 165
6.2.1 散点数据分布图系列 . 166
6.2.2 柱形分布图系列 . 168
6.2.3 箱形图系列 . 169
6.2.4 小提琴图 . 175
6.3 二维统计直方图和核密度估计图 . 179
6.3.1 二维统计直方图 . 179
6.3.2 二维核密度估计图 . 180
第7 章 时间序列型图表 184
7.1 折线图与面积图系列 . 185
7.1.1 折线图 . 185
7.1.2 面积图 . 185
7.2 日历图 . 192
7.3 量化波形图 . 195
第8 章 局部整体型图表 199
8.1 饼状图系列 . 200
8.1.1 饼图 . 200
8.1.2 圆环图 . 202
8.2 马赛克图 . 203
8.3 华夫饼图 . 206
8.4 块状/点状柱形图系列 208
第9 章 高维数据型图表 213
9.1 高维数据的变换展示 . 215
9.1.1 主成分分析法 . 215
9.1.2 t-SNE 算法 217
9.2 分面图 . 218
9.3 矩阵散点图 . 221
9.4 热力图 . 224
9.5 平行坐标系图 . 227
9.6 RadViz 图 229
第10 章 地理空间型图表 231
10.1 不同级别的地图 . 232
10.1.1 世界地图 . 232
10.1.2 国家地图 . 238
10.2 分级统计地图 . 241
10.3 点描法地图 . 244
10.4 带柱形的地图 . 248
10.5 等位地图 . 250
10.6 点状地图 . 252
10.7 简化示意图 . 256
10.8 邮标法 . 260
第11 章 数据可视化案例 263
11.1 商业图表绘制示例 . 264
11.1.1 商业图表绘制基础 264
11.1.2 商业图表绘制案例① 269
11.1.3 商业图表绘制案例② 270
11.2 学术图表绘制示例 . 273
11.2.1 学术图表绘制基础 274
11.2.2 学术图表绘制案例 276
11.3 数据分析与可视化案例 . 278
11.3.1 示意地铁线路图的绘制 278
11.3.2 实际地铁线路图的绘制 280
11.3.3 地铁线路图的应用 281
11.4 动态数据可视化演示 . 286
11.4.1 动态条形图的制作 286
11.4.2 动态面积图的制作 291
11.4.3 三维柱形地图动画的制作 296
参考文献 . 301

读者评论

相关图书

业务可视化分析: 从问题到图形的Tableau方法

对广大的业务分析师而言,业务分析(或者称为商业分析)应该从业务和问题出发,可视化是实现的方法,辅助决策是最终的目的。本书以业务分析为起点,介绍了“样本范围、问题...

¥139.00

Python数据可视化之matplotlib实践

刘大成 (作者)

本书借助Matplotlib讲解开展Python数据可视化实践所需要掌握的关键知识和技能。本书主要由Matplotlib入门、精进、演练和拓展四部分组成。同时,...

¥29.00

Meteor全栈开发

杜亦舒 (作者)

本书全面介绍了新一代全栈开发平台 Meteor。书中首先简要介绍了 Meteor 的概念和特性,然后通过各种示例讲解 Meteor 的用法,再用案例实践的方式综...

¥48.00

前端函数式攻城指南

欧阳继超 (作者)

在后端,函数式语言层出不穷。在前端,函数式最后的边界也已经被渐渐打破。Scala的Scala.js、Clojure的ClojureScript都试图同构移向前端...

¥39.00

Egret——HTML5游戏开发指南

张鑫磊 (作者)

本书向大家介绍HTML5游戏行业最新动态以及未来发展方向,同时也提及了当前HTML5技术相关市场。全书针对Egret HTML5游戏做了全方位讲解,涉及游戏中的...

¥65.00

ES6 标准入门(第2版)

阮一峰 (作者)

ES6(又名 ES2105)是 JavaScript 语言的新标准,2015 年 6 月正式发布后,得到了迅速推广,是目前业界超级活跃的计算机语言。本书是国内仅...

¥49.00