前言
前 言 Preface
数据可视化旨在清楚明了地提供信息,帮助读者定性理解这些信息。俗话说,一图胜千字(百闻不如一见)。这里,可以换个说法,“一幅图讲述了一个故事,如同万语千言。”因此,可视化是一个宝贵的工具,有助于读者快速理解相应的概念。然而,与其说数据可视化是一种技能,还不如说它是一门艺术。这是因为,如过度使用数据可视化会适得其反。
当前,有太多数据需要处理。这些数据包含着许多见解,这些见解是成功的关键。能够发现数据、清洗数据,并使用正确的工具实现可视化至关重要。本书讲解了用Python软件包实现数据可视化的不同方法,并给出很多不同领域的案例,比如,数值计算、金融模型、统计和机器学习,以及遗传学与网络。
本书提供在Mac OS X 10.10.5系统上运行的案例程序,具体用到Python 2.7、IPython 0.13.2、matplotlib 1.4.3、NumPy 1.9.2、SciPy 0.16.0和conda构建1.14.1版本。
本书主要内容第1章阐述了数据可视化确实应该被称为“用于知识推断的数据可视化”。本章包含框架,讲解数据/信息如何转换为知识,以及有意义的呈现方式(通过取对数、颜色映射、散点图、相关性以及其他)如何能够帮助我们更容易地掌握知识。
第2章讲述可视化的重要性,展示可视化过程中的一些步骤,包括可选择的几种工具选项。可视化方法由来已久,很早之前我们就接触过这些方法;比如,连年幼的小孩都能解释条形图。交互式可视化有很多优点,本章将举例说明。
第3章解释了从Continuum Analytics使用Anaconda时,不必安装每个Python库的原因。Anaconda有简化的打包和部署方法,这些方法使得IPython notebook与其他库的并行运算变得更加容易。
第4章包括交互式绘图方法及在计算物理和应用数学中的实践案例。一些著名的案例包括用SciPy实现插值方法、近似、聚类、抽样、相关关系和凸优化。
第5章探索金融工程,该领域有很多数值计算和图表绘制的方法,是探索Python的一个有趣的案例。本章通过举例讲述股票报价、回归分析、蒙特卡洛算法和模拟方法。
第6章包含了用NumPy、SciPy、matplotlib和scikit-learn等工具进行处理的统计方法,比如,线性、非线性回归、聚类和分类。
第7章包含了有趣的案例,比如社交网络以及现实生活中的有向图举例,适用于这些问题的数据结构,以及网络分析。本章会用到一些具体的库,比如graph-tool、NetworkX、matplotlib、scipy和numpy。
第8章包含模拟方法和信号处理案例,用以展示一些可视化方法。这里,我们也给出了其他高级工具的对比,比如Julia和D3.js。
附录给出了conda概述,并列出多种Python库。
学习本书的准备工作本书要求用户在操作系统上安装2.7.6或以上版本的Python。对于书中的案例,可以使用Mac OS X 10.10.5的Python默认版本(2.7.6)来实现。其他会用到的软件包是IPython—一个交互式Python环境。新版的IPython叫Jupyter,该版本现在有50种不同语言的内核函数。
安装提前打包好的用于科学计算的Python发行版,如果可能的话,可以从Continuum安装Anaconda,或安装Enthought Python Distribution。Anaconda一般自带300多个Python软件包。你可以用pip或conda安装不在自带软件包列表中的Python软件包。有一些案例可见附录。
本书适用对象目前已有很多Python和数据可视化方面的书。然而,对于有一定Python知识储备的人来说,几乎很少有把两者内容结合在一起的书值得推荐。有关简化代码、重复使用的小生境(niche)技术的讨论更是少之又少。对于有强烈学习兴趣的Python开发人员,本书将提供一系列获得分析结果和产生惊人可视化效果的方法。
本书提供了解决实际问题的一系列分析方法。虽然本书并不是面向初学者的,但是如果有需要,你可以搜索书中推荐阅读的文献资料。如果这是你初次体验Python编程或数据可视化,提前阅读一些入门教材会有很大帮助。我最喜欢的书有John Guttag教授的《Introduction to Computer Science and Programming》(可从MIT OpenCourseWare上免费下载)和来自UCLA的Nathan Yau的《Visualize This》。
The Translator's Words 译 者 序海量信息的不断增长,不断刺激着读者对数据可视化的渴望与诉求。作为一种功能强大的开源编程语言,Python包含了丰富的软件包和绘图技术,从而帮助用户完成数据分析、构建统计模型并展现研究结果。
本书尤其关注Python在众多应用领域中的可视化功能,全面覆盖Python的各种绘图选项,配合丰富的实际案例,为Python初学者和资深人士提供了一本实用指南。对于Python,我不敢自称有丰富的实战经验,但却有过自学和运用的经历。在承担本书翻译工作的同时,我自己也重温了一次Python可视化之旅,收益颇多。故劝荐诸位,不妨深读此书,系统体验Python在数据可视化方面的贡献。与音乐一样,知识的传播没有国界。因此,翻译不仅是知识表达语言的转换,更是一次学习和交流的机会。与原作者对话,高山仰止,受益匪浅;与读者对话,高山流水,闻过则喜。
在此,感谢我的朋友钟琰在整个翻译过程中提供的帮助。感谢我的至爱刘钰洁在译稿校对阶段给出的建议。我要感谢我的博士生导师—中国人民大学的易丹辉教授。感谢我在美国联合培养期间的导师—美国哥伦比亚大学的韦颖副教授。特别感谢我父母和家人,是他们给予我前行的动力和勇气。最后,非常感谢机械工业出版社华章公司的编辑让我接触到这本书,并给予中肯建议。感谢身边所有的良师益友。
鉴于个人时间与水平有限,如有纰漏,还望各位读者予以反馈,不吝赐教!
程豪2016年12月15日