前沿科技创业的驱动者

Python 中的可视化工具介绍

2016-08-25 11:26 阅读(125)    评论(0)   

几周前,R语言社区经历了一场关于画图工具的讨论。对于我们这种外人来说,具体的细节并不重要,但是我们可以将一些有用的观点运用到 Python 中。讨论的重点是 R 语言自带的绘图工具 base R 和 Hadley Wickham 开发的绘图工具 ggplot2 之间的优劣情况。如果你想了解更多细节内容,请阅读以下几篇文章:

  • http://simplystatistics.org/2016/02/11/why-i-dont-use-ggplot2/
  • http://varianceexplained.org/r/why-I-use-ggplot2/
  • http://flowingdata.com/2016/03/22/comparing-ggplot2-and-r-base-graphics/

其中最重要的两个内容是:

  1. 其中一个工具能够实现的功能另一个工具也同样能实现。
  2. ggplot2 非常适合用于探索性分析。

不是所有人都认同第二个观点,ggplot2确实无法绘制出所有的图表类型,但是我会利用它来做分析。

综述

以下是 2016 年 4 月写的关于绘图工具的概述。出于多方面的原因,绘图工具的选取更多地取决于个人偏好,因此本文介绍的 Python 绘图工具也仅代表我的个人使用偏好。

Matplotlib

Matplotlib 是一个强大的工具,它是 Pandas’ builtin-plottingSeaborn 的基础。Matplotlib 能够绘制许多不同的图形,还能调用多个级别的许多 API。我发现pyplot api非常好用,你可能用不上Transforms 或者 artists,但是如果你有需求的话可以查阅帮助文档。我将从 pandasseaborn 图开始介绍,然后介绍如何调用 pyplotAPI

Pandas’ builtin-plotting

DataFrameSeries 拥有 .plot 的命名空间,其中有许多图形类别可供选择(line, hist, scatter, 等等)。 Pandas 对象还提供了额外的用于增强图形展现效果的数据,如索引变量。 由于 pandas 具有更少的向后兼容的限制,所以它具有更好的美学特性。从这方面来说,我认为 pandas 中的 DataFrame.plot是一个非常实用的快速探索性分析的工具。

Seaborn

Michael Waskom 所开发的 Seaborn 提供了一个高层次的界面来绘制更吸引人统计图形。Seaborn 提供了一个可以快速探索分析数据不同特征的 API 接口,接下来我们将重点介绍它。

Bokeh

Bokeh 是一款针对浏览器开发的可视化工具。 和 matplotlib 一样,**Bokeh ** 拥有一系列 API 接口。比如 glpyhs 接口,该接口和 matplotllib 中的 Artists 接口非常相似,它主要用于绘制环形图、方形图和多边形图等。最近 Bokeh 又开放了一个新的图形接口,该接口主要用于处理词典数据或 DataFrame 数据,并用于绘制罐头图。

其他工具:

以下是一些本文没有提到的可视化工具:

  • Lightning
  • HoloViews
  • Glueviz
  • vispy
  • bqplot

案例介绍

我们将利用 ggplot2 中的 diamonds 数据集,你可以在 Vincent Arelbundock’s RDatasets 中找到它(pd.read_csv(‘http://vincentarelbundock.github.io/Rdatasets/csv/ggplot2/diamonds.csv’)),此外我们还需要检测是否已经安装feather

1

2

34

Bokeh 提供了两个 API,一个是低级的 glyph API,另一个是高级的 Charts API。

5

还不是很清楚我们应该在啥时候利用 Bokeh 来进行探索性分析,不过它的交互式功能可以激发我的兴趣。就个人而言,由于习惯问题我平时仍然一直使用 matplotlib 来绘图,我还无法完全切换到 Bokeh 中。

我非常喜欢 Bokeh 的仪表盘功能和 bokeh server 的 webapps。

6

Matplotlib

78

matplotlib 并不局限于处理 DataFrame 数据,它支持所有使用 getitem 作为键值的数据类型。

9

10

我们从列变量的名字中提取出轴标签,利用 Pandas 可以更加便捷地绘制一系列共享 x 轴数据的图形。

11

12

Seaborn

本文中的剩余部分将重点介绍 seaborn和为什么我认为它是探索性分析的强大工具。

我强烈建议你阅读 Seaborn 的 introductory notes,这上面介绍了 seaborn 的设计逻辑和应用领域。

Seaborn 主要目的是将探索和理解数据核心部分的过程进行可视化处理。

我们可以通过一个稳定的且易懂的 API 接口来调用 Seaborn。

绘图函数通过调用尽量少的参数来实现可视化的过程,此外还可以通过修改附加参数的形式来自定义选项。

事实上,seaborn 是基于 matplotlib 开发的,这意味着如果你熟悉 pyplot API的话,那么你可以很容易地掌握 seaborn。

大多数 seaborn 绘图函数的参数都由 x, y, hue, 和 data 构成(并不是所有的参数都是必须的)。如果你处理的对象是 DataFrame,那么你可以直接将列变量的名称和数据集的名称一同传递到绘图函数中。

13

14

15

16

我们可以很轻易地探究两个变量之间的关系:

1718

或者一次探究多个变量之间的关系:

19

20

pariplot 是 PairGrid 的一个包装函数,它提供了 seaborn 一个重要的抽象功能——Grid。Seaborn 的 Grid 将 matplotlib 中Figure 和数据集中的变量联系起来了。

我们有两种方式可以和 grids 进行交互操作。其一,seaborn 提供了类似于 pairplot 的包装函数,它提前设置了许多常见任务的参数;其二,如果你需要更多的自定义选项,那么你可以直接利用 Grid 方法。

21

22-前边+「out[35]」

23

34312 rows × 7 columns

24

25

FaceGrid 可以通过控制分面变量来生成 Grid图形,其中PairGrid是它的一个特例。接下来的案例中,我们将以数据集中的 cut 变量为分面变量来绘制图像:

26

27

最后一个案例展示了如何将 seaborn 和 matplotlib 结合起来。g.axes是matplotlib.Axes的一个数组,g.fig是matplotlib.Figure的一个特例。这是使用 seaborn 时常见的一个模式:利用 seaborn 的方法来绘制图像,然后再利用 matplotlib 来调整细节部分。

我认为 seaborn 之所以吸引人是因为它的绘图语法具有很强的灵活性。你不会被作者所设定的图表类型所局限住,你可以根据自己的需要创建新的图表。

28

29

30

31

本来,我打算准备更多的例子来介绍 seaborn,但是我会将相关链接分享给大家。Seaborn 的说明文档写的非常详细。

最后,我们将结合 scikit-learn 来介绍如何利用 GridSearch 来寻找最佳参数。

32

33


公司二维码

 

 

 

 

 

 

分享到:

相关推荐

  • 20160618082406618

    中国首个国家基因库开始运营:一图读懂国家基因库

    今天起,中国首个国家基因库将正式开始运营,其也被称为是中国的生命“诺亚方舟”。 据介绍,国家基因库位于深圳市大鹏新区观音山脚下,一期占地面积4.75万平方米。 与美国、欧盟、日本其他三大世界级的基因库不同,中国国家基因库不仅仅是数据库,而是国际上现有的各类生物样本库、数据库、生物多样...

  • 1474440958133991

    先天丑?还有救!心理改变会引起相貌改变

      内容摘要 林肯曾说过,一个人四十岁以前的脸是父母决定的,但四十岁以后的脸应是自己决定的。你不要不信相由心生这回事,研究表明一个人可以因为心理因素的改变而引起相貌的改变。   我们一般会认为“相”不会随“心”发生变化,是因为就先天性来看,人的相貌是由遗传因...

  • 6a-l-fxvqctu5874469

    中科院团队新研究突破:让液态金属机器能“跑”能“跳”

    《终结者2》中的液态金属机器人T-1000 1991年,电影《终结者2》中出现了一款强大的机器人T-1000,这个用液态金属打造的机器人无论遭遇到多大的伤害都可以瞬间自动复原,甚至可以随意改变身体形状和脸部容貌。这种变形机器人一直以来都是科学家的目标之一,如今,中国科学家在液态金属领域的一项研究获突...

  • 1476328757463781

    酷!首个“太空国家”成立 想加入吗?

      内容摘要 从今以后,地球上又多了一个“国家”——“太空国家”。这支团队的领导者是航空国际研究中心的创立者Igor Ashurbeyli,项目旨在利用最先进科学技术创造一个保护全人类的屏障,阻挡来自太空的人为或自然的威胁。   据英国《每日邮报》报道,世界上首个“太空国家”成...

  • 504389984211516935

    肯尼迪航天中心SpaceX发生爆炸,马斯克遭遇人生的危机时刻

    爆炸现场 就在美国东部时间9月1日上午9点07分(北京时间9月1日晚9点07分),一枚SpaceX 公司“猎鹰9”号火箭在发射台上爆炸。爆炸完全摧毁了火箭和其运载物。 据来自肯尼迪航天中心的消息,爆炸发生在40号发射场,该发射场原计划将与本周六发射SpaceX公司载有卫星和国际空间站补给品的火箭。 40号发...

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

SME 前沿科技创业的驱动者