2. seaborn-可视化分类数据

这篇具有很好参考价值的文章主要介绍了2. seaborn-可视化分类数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

seaborn中,有几种不同的方法可以对分类数据进行可视化。类似于relplot()scatterplot()或者lineplot()之间的关系,有两种方法可以制作这些图。有许多axes-level函数可以用不同的方式绘制分类数据,还有一个figure-level接口catplot(),可以对它们进行统一的高级访问。

将不同的分类图类型视为三个不同的家族,这是很有帮助的。下面我们将详细讨论,它们是:

分类散点图:

stripplot() (with kind="strip"; the default)

swarmplot() (with kind="swarm")

分类分布图:

boxplot() (with kind="box")

violinplot() (with kind="violin")

boxenplot() (with kind="boxen")

分类估计图:

pointplot() (with kind="point")

barplot() (with kind="bar")

countplot() (with kind="count")

这些家族使用不同的粒度级别来表示数据,我们应该根据实际情况来决定到底要使用哪个。它们有统一的 API,所以我们可以轻松地在不同类型之间进行切换,并从多个角度来观察数据。

在这里我们主要关注figure-level接口catplot()。这个函数是上述每个函数更高级别的接口,因此当我们显示每种绘图时都会引用它们,不清楚的话可以随时查看特定类型的API文档。

import seaborn as sns
import matplotlib.pyplot as plt
import warnings

warnings.filterwarnings('ignore')
sns.set(style="darkgrid", color_codes=True)

分类散点图

catplot()中,数据默认使用散点图表示。在seaborn中有两种不同的分类散点图,它们采用不同的方法来表示分类数据。 其中一种是属于一个类别的所有点,将沿着与分类变量对应的轴落在相同位置。stripplot()方法是catplot()kind的默认参数,它是用少量随机“抖动”调整分类轴上的点的位置:

tips = sns.load_dataset("tips")
sns.catplot(x="day", y="total_bill", hue='day', data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a0eead50>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

jitter参数控制抖动的大小,你也可以完全禁用它:

sns.catplot(x="day", y="total_bill", hue='day', jitter=False, data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a0e91550>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

另一种方法使用防止它们重叠的算法沿着分类轴调整点。我们可以用它更好地表示观测分布,但是只适用于相对较小的数据集。这种绘图有时被称为“beeswarm”,可以使用 seaborn中的swarmplot()绘制,通过在catplot()中设置kind="swarm"来激活

sns.catplot(x="day", y="total_bill", hue='day', kind="swarm", data=tips)
<seaborn.axisgrid.FacetGrid at 0x1769b5fa110>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

与关系图类似,可以通过使用hue语义向分类图添加另一个维。(分类图当前不支持sizestyle语义 )。 每个不同的分类绘图函数以不同方式处理hue语义。对于散点图,我们只需要更改点的颜色:

sns.catplot(x="day", y="total_bill", hue="sex", kind="swarm", data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a19d4c90>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

与数值数据不同,如何沿着轴顺序排列分类变量并不总是显而易见的。通常,seaborn分类绘图函数试图从数据中推断出类别的顺序。 如果您的数据具有pandas中的Categorical数据类型,则可以在此处设置类别的默认顺序。如果传递给分类轴的变量看起来是数字,则将对级别进行排序。但是数据仍然被视为分类并在分类轴上的序数位置(特别是0,1,......)处理,即使用数字来标记它们:

sns.catplot(x="size", y="total_bill", kind="swarm", hue='size',
            data=tips.query("size != 3"))
<seaborn.axisgrid.FacetGrid at 0x176a0d18050>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

选择默认排序的另一个选项是获取数据集中出现的类别级别。也可以使用order参数在特定图表的基础上控制排序。在同一图中绘制多个分类图时,这很重要,我们将在下面看到更多

sns.catplot(x="smoker", y="tip", order=["No", "Yes"], hue='smoker', data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a0f80d50>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

我们已经提到了“分类轴”的概念。在这些示例中,它始终对应于水平轴。但是将分类变量放在垂直轴上通常很有帮助(特别是当类别名称相对较长或有许多类别时)。为此,我们交换轴上的变量赋值:

sns.catplot(x="total_bill", y="day", hue="time", kind="swarm", data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a1bcfd90>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

类别内观察点的分布

随着数据集的大小增加,分类散点图中每个类别可以提供的值分布信息受到限制。当发生这种情况时,有几种方法可以总结分布信息,以便于我们可以跨分类级别进行简单比较。

箱线图

第一个是熟悉的boxplot()。它可以显示分布的三个四分位数值以及极值。“胡须”延伸到位于下四分位数和上四分位数的1.5 IQR内的点,超出此范围的观察值会独立显示。这意味着箱线图中的每个值对应于数据中的实际观察值。

sns.catplot(x="day", y="total_bill", kind="box", data=tips)
<seaborn.axisgrid.FacetGrid at 0x176a2e33ad0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

添加hue语义, 语义变量的每个级别的框沿着分类轴移动,因此它们将不会重叠:

sns.catplot(x="day", y="total_bill", hue="smoker", kind="box", data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abaa98150>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

此行为被称为“dodging”,默认开启,因为我们假定语义变量嵌套在主分类变量中。如果不是这样,可以禁用dodging

tips["weekend"] = tips["day"].isin(["Sat", "Sun"])
sns.catplot(x="day", y="total_bill", hue="weekend",
            kind="box", dodge=False, data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abbc4fed0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

一个相关的函数boxenplot()可以绘制一个与Box-plot类似的图。它为了显示更多信息而对分布的形状进行了优化,比较适合于较大的数据集:

sns.catplot(x="day", y="total_bill", hue="smoker", kind="boxen", data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abbcd5010>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

小提琴图

另一种方法是violinplot(),它将箱线图与核密度估算程序结合起来:

sns.catplot(x="total_bill", y="day", hue="time",
            kind="violin", data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abbf77ed0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

该方法使用核密度估计来提供更丰富的值分布描述。此外,violin中还显示了来自箱线图的四分位数和whikser值。缺点是由于violinplot使用了KDE,我们需要调整一些额外参数,与箱形图相比增加了一些复杂性:

sns.catplot(x="total_bill", y="day", hue="time",
            kind="violin", bw=.15, cut=0,
            data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abbf6bc10>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

hue参数只有两个级别时,也可以“拆分”violins,这样可以更有效地利用空间:

sns.catplot(x="day", y="total_bill", hue="sex",
            kind="violin", split=True, data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abc343c50>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

最后,在violin内的绘图有几种选项,包括显示每个独立的观察而不是摘要箱线图值的方法:

sns.catplot(x="day", y="total_bill", hue="sex",
            kind="violin", inner="stick", split=True,
            palette="pastel", data=tips)
<seaborn.axisgrid.FacetGrid at 0x20abc3423d0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

我们也可以将swarmplot()striplot()与箱形图或violin plot结合起来,展示每次观察以及分布摘要:

g = sns.catplot(x="day", y="total_bill", kind="violin", inner=None, data=tips)
sns.swarmplot(x="day", y="total_bill", color="k", size=3, data=tips, ax=g.ax)
<Axes: xlabel='day', ylabel='total_bill'>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

类别内的统计估计

对于其他应用程序,你可能希望显示值的集中趋势估计,而不是显示每个类别中的分布。Seaborn有两种主要方式来显示这些信息。重要的是,这些功能的基本 API与上面讨论的API相同。

条形图

实现这一目标的是我们熟悉的条形图。在seaborn中,barplot()函数在完整数据集上运行并应用函数来获取估计值(默认情况下取平均值)。当每个类别中有多个观察值时,它还使用自举来计算估计值周围的置信区间,并使用误差条绘制:

titanic = sns.load_dataset("titanic")
sns.catplot(x="sex", y="survived", hue="class", kind="bar", data=titanic)
<seaborn.axisgrid.FacetGrid at 0x20abd0f9ed0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

条形图的一个特例是,当你想要显示每个类别中的观察数量而不是计算第二个变量的统计数据时。这类似于分类而非定量变量的直方图。在seaborn中,使用countplot()函数很容易实现:

sns.catplot(x="deck", kind="count", palette="ch:.25", data=titanic)
<seaborn.axisgrid.FacetGrid at 0x20aba0bafd0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

无论是barplot()还是countplot(),都可以使用上面讨论的所有选项,也可以调用每个函数的文档示例中的其他选项:

sns.catplot(y="deck", hue="class", kind="count",
            palette="pastel", edgecolor=".6",
            data=titanic)
<seaborn.axisgrid.FacetGrid at 0x20abd0e5f90>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

点图

pointplot()函数提供了另一种可视化相同信息的样式。此函数还对另一个轴上的高度估计值进行编码,但不是显示一个完整的条形图,而是绘制点估计值和置信区间。另外,pointplot()连接来自相同hue类别的点。我们可以很容易的看出主要关系如何随着色调语义的变化而变化,因为人类的眼睛很擅长观察斜率的差异:

sns.catplot(x="sex", y="survived", hue="class", kind="point", data=titanic)
<seaborn.axisgrid.FacetGrid at 0x20abcd57fd0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

当分类函数缺少关系函数中的style语义时, 将markerslinestyles与色调一起改变,以制作最大可访问的图形并在黑白中重现良好,这仍然是一个好主意:

sns.catplot(x="class", y="survived", hue="sex",
            palette={"male": "g", "female": "m"},
            markers=["^", "o"], linestyles=["-", "--"],
            kind="point", data=titanic)
<seaborn.axisgrid.FacetGrid at 0x20abe4c5310>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

绘制“宽格式”数据

虽然优选使用“长形式”或“整齐”数据,但这些函数也可以应用于各种“宽格式”的数据,包括pandas DataFrames或二维numpy数组。这些对象应该直接传递给data参数:

iris = sns.load_dataset("iris")
sns.catplot(data=iris, orient="h", kind="box")
<seaborn.axisgrid.FacetGrid at 0x20ac1432910>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

另外,axes-level函数接受Pandasnumpy对象的向量,而不是DataFrame中的变量:

sns.violinplot(x=iris.species, y=iris.sepal_length)
<Axes: xlabel='species', ylabel='sepal_length'>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

要控制上面讨论的函数绘制的图形的大小和形状,你必须使用matplotlib命令来进行设置:

f, ax = plt.subplots(figsize=(7, 3))
sns.countplot(y="deck", data=titanic, color="c")
<Axes: xlabel='count', ylabel='deck'>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

显示与 facet 的多种关系

就像relplot()一样, catplot()建立在FacetGrid上,这意味着很容易添加层面变量来可视化高维关系:

sns.catplot(x="day", y="total_bill", hue="smoker",
            col="time", aspect=.6,
            kind="swarm", data=tips)
<seaborn.axisgrid.FacetGrid at 0x20ac1ab8e90>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas

要进一步自定义绘图,我们可以使用它返回的FacetGrid对象上的方法:

g = sns.catplot(x="fare", y="survived", row="class",
                kind="box", orient="h", height=1.5, aspect=4,
                data=titanic.query("fare > 0"))
g.set(xscale="log")
<seaborn.axisgrid.FacetGrid at 0x20ac1e0dad0>

2. seaborn-可视化分类数据,数据可视化,分类,人工智能,大数据,python,数据挖掘,pandas文章来源地址https://www.toymoban.com/news/detail-823872.html

到了这里,关于2. seaborn-可视化分类数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 81 | Python可视化篇 —— Seaborn数据可视化

    Seaborn是Python中一个基于Matplotlib的高级数据可视化库,它提供了更简单的API和更美观的图形样式,适用于数据探索和展示。在本教程中,我们将介绍Seaborn的基本概念和用法,并通过一些示例演示如何使用Seaborn来创建各种图表和图形。

    2024年02月14日
    浏览(43)
  • Seaborn数据可视化(一)

    目录 1.seaborn简介  2.Seaborn绘图风格设置 21.参数说明: 2.2 示例: Seaborn是一个用于数据可视化的Python库,它是建立在Matplotlib之上的高级绘图库。Seaborn的目标是使绘图任务变得简单,同时产生美观且具有信息含量的图形。 Seaborn提供了一组针对统计数据可视化的高级函数和主题

    2024年02月12日
    浏览(50)
  • Seaborn数据可视化(三)

    使用displot()绘制直方图。 结果图: 使用kdeplot绘制密度图。 结果图: 示例1: 结果图:    示例2: 结果图:   结果图; 结果图:    

    2024年02月11日
    浏览(54)
  • Seaborn数据可视化(四)

    目录   1.绘制箱线图 2.绘制小提琴图 3.绘制多面板图 4.绘制等高线图 5.绘制热力图 结果图: 结果图: 结果图:    结果图:    结果图:  

    2024年02月11日
    浏览(43)
  • Seaborn数据可视化(二)

    目录 1.Seaborn风格设置 1.1 主题设置 1.2 轴线设置  1.3 移除轴线  1.4 使用字典传递函数  2.设置绘图元素比例 2.1 设置绘图元素比例paper 2.2 设置绘图元素比例poster 2.3 设置绘图元素比例notebook Seaborn将Matplotlib的参数划分为两个独立的组合,第一组用于设置绘图的外观风格,第二

    2024年02月12日
    浏览(48)
  • AI人工智能+区块链+物联网+大数据可视化平台建设综合解决方案

    因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片、文字、链接中所包含的软件/资料等,如有侵权,请跟我们联系删除,谢谢。将在收到信息后第一时间进行删除。 参考资料来源网络,仅用于行业知识分享,供个人学习参考,不得作商业用途。 AI人工

    2024年01月17日
    浏览(61)
  • 大数据毕业设计Flink+Hadoop+Hive地铁客流量可视化 地铁客流量预测 交通大数据 地铁客流量大数据 交通可视化 机器学习 深度学习 人工智能 知识图谱 数据可视化 计算机毕业设计

    河北传媒学院 本科 毕业 论文开题报告 专业 小四号宋体 班级 小四号宋体 姓名 小四号宋体 学号 小四号宋体 指导教师 小四号宋体 题目 基于hadoop+spark的深圳市地铁运营的分析与可视化 (1.内容包括:课题的来源及意义,国内外发展状况,本课题的研究目标、内容、方法、手

    2024年03月19日
    浏览(66)
  • ChatGPT4 助力 Python 数据分析与可视化、人工智能建模及论文高效撰写

    2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在各行各业的应用呈现了更多的可能性。202

    2024年02月02日
    浏览(70)
  • GPT4助力Python数据分析与可视化、人工智能建模及论文高效撰写

    详情点击链接:GPT4助力Python数据分析与可视化、人工智能建模及论文高效撰写 第一: GPT 4 基础入门 1、ChatGPT概述(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验(注册与充值、购买方法) 3、GPT-4与GPT-3.5的区别,以及与国内大语言模型(文心一言、星火等

    2024年01月18日
    浏览(62)
  • ChatGPT4助力Python数据分析与可视化、人工智能建模及论文高效撰写

    2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在各行各业的应用呈现了更多的可能性。202

    2024年02月03日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包