终极Python Seaborn教程

Seaborn概论

Seaborn为Matplotlib提供了一个高级接口,它是一个功能强大但有时笨拙的Python可视化库。

在Seaborn的官方网站上,他们声明:

如果matplotlib“试图让简单的事情变得容易,让困难的事情变得可能”,那么Seaborn试图使一系列明确的困难事物也容易。

我们发现这是对Seaborn强项的一个很好的总结。在实践中,“一系列明确的困难事物”包括:

—使用美学上令人愉悦的默认主题。

—设置自定义调色板。

—制作有吸引力的统计图。

—简易且灵活地显示分布。

—从矩阵和数据帧可视化信息。

最后三点是为什么Seaborn是我们探索性分析的首选工具。它使你很容易快速而有效地“了解”你的数据。

然而,Seaborn是Matplotlib的补充,而不是替代品。有些调整仍然需要Matplotlib,我们还将讨论如何做到这一点。

如何学习Seaborn—主动模式:

Seaborn在Python中简化了数据可视化,但仍有许多特点。因此,学习Seaborn的最好方法就是做中学。

免费视频教程:www.mlxs.top

这个过程会让你直觉了解你能用Seaborn做什么,留下文档作为进一步的指导。这是从零到熟练的最快的方法。

在我们开始之前给一个提示:

我们试图使本教程尽可能精简,这意味着我们不会太多的细节,任何一个主题。如果你想了解更多关于一个特性的信息,可以打开Seaborn文档

Seaborn教程内容

我们将介绍Seaborn库最重要的范例,而不是仅仅向您展示如何制作一堆绘图。此外,我们将举例说明每个概念。

以下是我们将在本教程中介绍的步骤:

——安装Seaborn

——导入库和数据集

——Seaborn的绘图功能

散点图

——用Matplotlib定制

——Pandas的角色

箱形图

——Seaborn主题

小提琴图表

——调色板。

群体图

——叠加图

——把它们放在一起

——Pokédex(迷你画廊)。

热图

直方图

条形图

因子图

密度图

联合分布图


第1步:安装Seaborn

首先,第一件事:加油,打气,安装起来吧!

接下来,确保您的计算机上安装了以下内容:

——Python 2.7 + 或 Python 3

——Pandas

——Matplotlib

——Seaborn

——Jupyter Notebook(可选,但推荐)

我们强烈建议安装Anaconda分发,其中包含所有这些扩展包。只需按照下载页面上的说明操作即可。

安装了Anaconda之后,只需启动Jupyter(通过命令行或Navigator应用程序)并打开一个新notebook:

免费视频教程:www.mlxs.top

步骤2:导入库和数据集

让我们开始导入Pandas,它是管理关系(即表格式)数据集的一个很好的库:

免费视频教程:www.mlxs.top

现在我们准备导入数据集。

提示:我们给每个导入的库一个别名。然后,我们可以用

调用Pandas,用

调用Matplotlib,用

调用Seaborn。

今天,我们将使用一个很酷的Pokémon数据集(第一代)。这里是免费下载

免费视频教程:www.mlxs.top

一旦下载了CSV文件,就可以将它与Pandas一起导入。

提示:参数索引  index_col=0

仅仅意味着我们将数据集的第一列作为ID列。

免费视频教程:www.mlxs.top

正如你所看到的,我们有原始数据151(A.K.best151)Pokémon。


第3步:Seaborn的绘图功能

绘图功能的多样性是Seaborn最大的优点之一。例如,散点图只是使用lmplot()函数的一行代码。

有两种方法可以做到这一点。

—第一种方法(推荐)是将DataFrame传递给data=参数,同时将列名传递给axes参数,x=和y=。

—第二种方法是直接将数据序列传递给轴参数。

例如,让我们比较一下我们的Pokémon的攻击和防御状态:

免费视频教程:www.mlxs.top

看起来更好,但是我们可以进一步改进这个散点图。例如,我们所有的Pokémon都有正面攻击和防御值,但是我们的轴限制在零度以下。让我们看看我们怎样才能解决这个问题…


步骤4:用Matplotlib定制

记住,Seaborn是Matplotlib的高级接口。从我们的经验来看,大部分情况下会使用Seaborn,但有时你需要带上Matplotlib。

设置轴限制是其中之一,但过程很简单:

首先,调用您的海运绘图功能为正常。

然后,调用Matplotlib的定制函数。在这种情况下,我们将使用它的 ylim()

和  xlim()  函数。

这里是我们的新的散点图与敏感轴限制:

免费视频教程:www.mlxs.top

有关MaMattLIB定制功能的更多信息,请查看其文档。


第5步:Pandas的角色

尽管这是一个Seaborn教程,Pandas实际上扮演着非常重要的角色。你看,Seaborn的绘图功能是从一个合理格式化的基本数据框中受益。

例如,假设我们想为我们的Pokémon的战斗状态做一个方块图:

免费视频教程:www.mlxs.top

这是一个合理的开始,但是有些栏目我们可能想删除:

1.我们可以删除总数,因为我们有单独的统计数据。

2.我们可以删除舞台和传奇栏目,因为它们不是战斗统计。

事实证明,这并不容易在Seaborn单独进行。相反,对数据文件进行预格式化要简单得多。

让我们创建一个新的数据名为  stats_df ,它只保留统计列:

免费视频教程:www.mlxs.top

在本教程的范围之外,潜入大熊猫,但这里有一个方便的作弊表

第6步:Seaborn主题

Seaborn的另一个优点是它带有正派风格的主题。默认主题称为“暗网格”。

接下来,我们将把主题改为“白色网格”,同时制作小提琴绘图。

1.小提琴绘图在替代方框图方面非常有用。

2.他们显示的分布(通过小提琴的厚度),而不是仅汇总统计。

例如,我们可以通过Pokémon的主要类型来可视化攻击的分布:

免费视频教程:www.mlxs.top

正如你所看到的,龙型往往具有比幽灵类型更高的攻击统计,但它们也有较大的差异。

现在,Pok -艾蒙的粉丝们可能会发现一些关于这个情节的不和谐的东西:颜色是荒谬的。为什么草型是彩色粉色还是水彩型橙色?我们必须解决这个问题!


步骤7:调色板

幸运的是,Seabn允许我们设置定制的调色板。我们可以简单地创建一个有序的Python颜色十六进制值列表。

让我们使用BulPaula来帮助我们创建一个新的调色板:

免费视频教程:www.mlxs.top

完美,现在我们可以简单地使用   palette=   参数来重新调整我们的图表。

免费视频教程:www.mlxs.top

好多了!

小提琴图是伟大的可视化分布。但是,由于我们的数据集中只有151个PoEKMON,所以我们可以简单地显示每个点。

这就是群集阴谋发生的地方。这个可视化将显示每个点,而“堆叠”具有相似值的那些:

免费视频教程:www.mlxs.top

这很方便,但是我们不能把我们的群体图和小提琴图结合起来吗?毕竟,它们显示相似的信息,对吧?


步骤8:叠加图

答案是肯定的。

使用Seaborn覆盖绘图非常简单,它与Matplotlib的工作方式相同。这就是我们要做的:

首先,我们将使用Matplotlib使我们的图形更大。

然后,我们将绘制小提琴图。然而,我们将设置  inner=Non  没有删除小提琴内的条形。

接下来,我们将绘制群体图。这一次,我们将使点黑色,所以他们弹出更多。

最后,我们将使用Matplotllib设置标题。

免费视频教程:www.mlxs.top
免费视频教程:www.mlxs.top

真棒,现在我们有一个漂亮的图表告诉我们攻击值是如何分布在不同的Pokémon类型。但我们还想看到其他所有的统计数据呢?


第9步:把它们放在一起

当然,我们可以为每个状态重复图表,但是我们也可以把这些信息组合成一个图表。我们只需要事先做一些与熊猫争吵的数据。

首先,这是一个提醒我们的数据格式:

免费视频教程:www.mlxs.top

正如你所看到的,我们所有的统计数据都在不同的列中。相反,我们想把它们“融化”成一列。

要做到这一点,我们将使用熊猫的  melt()  函数。它需要3个参数:

首先,数据框要融化。

第二,保持变量(Pandas将融化所有其他)。

最后,命名为新的熔化变量。

以下是输出:

免费视频教程:www.mlxs.top

所有6个属性列都被“融化”为一个,新的属性列指示原始属性(HP、攻击、防御、Sp.攻击、Sp.防御或速度)。例如,这里很难看到,但是Balbasuro现在有6行数据。

事实上,如果你打印这两个数据框的形状…

免费视频教程:www.mlxs.top
免费视频教程:www.mlxs.top

最后,让我们为一个更可读的图表做一些最后的调整:

1.扩大情节。

2.使用 split()=True

3.使用我们自定义的Pokemon调色板。

4.调整Y轴限制在0结束。

5.把图例放在右边。

免费视频教程:www.mlxs.top
免费视频教程:www.mlxs.top

最终群体图

搞定


第10步: Pokédex(迷你图库)

我们将以一些快速数据可视化来结束本教程,只是为了让您了解Seaborn的可能。

10.1 -热图

HealMaPS帮助你可视化矩阵式数据。

免费视频教程:www.mlxs.top


10.2 - Histogram

直方图允许您绘制数值变量的分布。

免费视频教程:www.mlxs.top


10.3 条形图

条形图帮助您可视化分类变量的分布。

免费视频教程:www.mlxs.top


10.4因素图

因子图可以很容易地通过分类类来划分情节。

免费视频教程:www.mlxs.top


10.5密度图

密度图显示了两个变量之间的分布。

提示:考虑用散点图覆盖这个。

免费视频教程:www.mlxs.top


10.6结合分布图

联合分布图结合了来自散布图和直方图的信息,为您提供了双变量分布的详细信息。

免费视频教程:www.mlxs.top

到这里你已经完成了这个Python Seaborn教程!

我们刚刚结束了一个重要的Seaborn范例,并向你们展示了很多例子。随意使用这一页连同官方Seaborn图库作为您的项目前进的参考。免费视频教程:www.mlxs.top

作者:徐大白   来源:终极Python Seaborn教程

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268