Seaborn概论
Seaborn为Matplotlib提供了一个高级接口,它是一个功能强大但有时笨拙的Python可视化库。
在Seaborn的官方网站上,他们声明:
如果matplotlib“试图让简单的事情变得容易,让困难的事情变得可能”,那么Seaborn试图使一系列明确的困难事物也容易。
我们发现这是对Seaborn强项的一个很好的总结。在实践中,“一系列明确的困难事物”包括:
—使用美学上令人愉悦的默认主题。
—设置自定义调色板。
—制作有吸引力的统计图。
—简易且灵活地显示分布。
—从矩阵和数据帧可视化信息。
最后三点是为什么Seaborn是我们探索性分析的首选工具。它使你很容易快速而有效地“了解”你的数据。
然而,Seaborn是Matplotlib的补充,而不是替代品。有些调整仍然需要Matplotlib,我们还将讨论如何做到这一点。
如何学习Seaborn—主动模式:
Seaborn在Python中简化了数据可视化,但仍有许多特点。因此,学习Seaborn的最好方法就是做中学。
这个过程会让你直觉了解你能用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:
步骤2:导入库和数据集
让我们开始导入Pandas,它是管理关系(即表格式)数据集的一个很好的库:
现在我们准备导入数据集。
提示:我们给每个导入的库一个别名。然后,我们可以用
调用Pandas,用
调用Matplotlib,用
调用Seaborn。
今天,我们将使用一个很酷的Pokémon数据集(第一代)。这里是免费下载:
一旦下载了CSV文件,就可以将它与Pandas一起导入。
提示:参数索引 index_col=0
仅仅意味着我们将数据集的第一列作为ID列。
正如你所看到的,我们有原始数据151(A.K.best151)Pokémon。
第3步:Seaborn的绘图功能
绘图功能的多样性是Seaborn最大的优点之一。例如,散点图只是使用lmplot()函数的一行代码。
有两种方法可以做到这一点。
—第一种方法(推荐)是将DataFrame传递给data=参数,同时将列名传递给axes参数,x=和y=。
—第二种方法是直接将数据序列传递给轴参数。
例如,让我们比较一下我们的Pokémon的攻击和防御状态:
看起来更好,但是我们可以进一步改进这个散点图。例如,我们所有的Pokémon都有正面攻击和防御值,但是我们的轴限制在零度以下。让我们看看我们怎样才能解决这个问题…
步骤4:用Matplotlib定制
记住,Seaborn是Matplotlib的高级接口。从我们的经验来看,大部分情况下会使用Seaborn,但有时你需要带上Matplotlib。
设置轴限制是其中之一,但过程很简单:
首先,调用您的海运绘图功能为正常。
然后,调用Matplotlib的定制函数。在这种情况下,我们将使用它的 ylim()
和 xlim() 函数。
这里是我们的新的散点图与敏感轴限制:
有关MaMattLIB定制功能的更多信息,请查看其文档。
第5步:Pandas的角色
尽管这是一个Seaborn教程,Pandas实际上扮演着非常重要的角色。你看,Seaborn的绘图功能是从一个合理格式化的基本数据框中受益。
例如,假设我们想为我们的Pokémon的战斗状态做一个方块图:
这是一个合理的开始,但是有些栏目我们可能想删除:
1.我们可以删除总数,因为我们有单独的统计数据。
2.我们可以删除舞台和传奇栏目,因为它们不是战斗统计。
事实证明,这并不容易在Seaborn单独进行。相反,对数据文件进行预格式化要简单得多。
让我们创建一个新的数据名为 stats_df ,它只保留统计列:
在本教程的范围之外,潜入大熊猫,但这里有一个方便的作弊表。
第6步:Seaborn主题
Seaborn的另一个优点是它带有正派风格的主题。默认主题称为“暗网格”。
接下来,我们将把主题改为“白色网格”,同时制作小提琴绘图。
1.小提琴绘图在替代方框图方面非常有用。
2.他们显示的分布(通过小提琴的厚度),而不是仅汇总统计。
例如,我们可以通过Pokémon的主要类型来可视化攻击的分布:
正如你所看到的,龙型往往具有比幽灵类型更高的攻击统计,但它们也有较大的差异。
现在,Pok -艾蒙的粉丝们可能会发现一些关于这个情节的不和谐的东西:颜色是荒谬的。为什么草型是彩色粉色还是水彩型橙色?我们必须解决这个问题!
步骤7:调色板
幸运的是,Seabn允许我们设置定制的调色板。我们可以简单地创建一个有序的Python颜色十六进制值列表。
让我们使用BulPaula来帮助我们创建一个新的调色板:
完美,现在我们可以简单地使用 palette= 参数来重新调整我们的图表。
好多了!
小提琴图是伟大的可视化分布。但是,由于我们的数据集中只有151个PoEKMON,所以我们可以简单地显示每个点。
这就是群集阴谋发生的地方。这个可视化将显示每个点,而“堆叠”具有相似值的那些:
这很方便,但是我们不能把我们的群体图和小提琴图结合起来吗?毕竟,它们显示相似的信息,对吧?
步骤8:叠加图
答案是肯定的。
使用Seaborn覆盖绘图非常简单,它与Matplotlib的工作方式相同。这就是我们要做的:
首先,我们将使用Matplotlib使我们的图形更大。
然后,我们将绘制小提琴图。然而,我们将设置 inner=Non 没有删除小提琴内的条形。
接下来,我们将绘制群体图。这一次,我们将使点黑色,所以他们弹出更多。
最后,我们将使用Matplotllib设置标题。
真棒,现在我们有一个漂亮的图表告诉我们攻击值是如何分布在不同的Pokémon类型。但我们还想看到其他所有的统计数据呢?
第9步:把它们放在一起
当然,我们可以为每个状态重复图表,但是我们也可以把这些信息组合成一个图表。我们只需要事先做一些与熊猫争吵的数据。
首先,这是一个提醒我们的数据格式:
正如你所看到的,我们所有的统计数据都在不同的列中。相反,我们想把它们“融化”成一列。
要做到这一点,我们将使用熊猫的 melt() 函数。它需要3个参数:
首先,数据框要融化。
第二,保持变量(Pandas将融化所有其他)。
最后,命名为新的熔化变量。
以下是输出:
所有6个属性列都被“融化”为一个,新的属性列指示原始属性(HP、攻击、防御、Sp.攻击、Sp.防御或速度)。例如,这里很难看到,但是Balbasuro现在有6行数据。
事实上,如果你打印这两个数据框的形状…
最后,让我们为一个更可读的图表做一些最后的调整:
1.扩大情节。
2.使用 split()=True
3.使用我们自定义的Pokemon调色板。
4.调整Y轴限制在0结束。
5.把图例放在右边。
最终群体图
搞定
第10步: Pokédex(迷你图库)
我们将以一些快速数据可视化来结束本教程,只是为了让您了解Seaborn的可能。
10.1 -热图
HealMaPS帮助你可视化矩阵式数据。
10.2 - Histogram
直方图允许您绘制数值变量的分布。
10.3 条形图
条形图帮助您可视化分类变量的分布。
10.4因素图
因子图可以很容易地通过分类类来划分情节。
10.5密度图
密度图显示了两个变量之间的分布。
提示:考虑用散点图覆盖这个。
10.6结合分布图
联合分布图结合了来自散布图和直方图的信息,为您提供了双变量分布的详细信息。
到这里你已经完成了这个Python Seaborn教程!
我们刚刚结束了一个重要的Seaborn范例,并向你们展示了很多例子。随意使用这一页连同官方Seaborn图库作为您的项目前进的参考。免费视频教程:www.mlxs.top
作者:徐大白 来源:终极Python Seaborn教程