这3个Seaborn函数可以搞定90%的可视化任务

简介: 这3个Seaborn函数可以搞定90%的可视化任务

数据可视化是数据科学的重要组成部分。它帮助我们探索和理解数据。数据可视化也是传递信息和交付结果的重要工具。

由于数据可视化的重要性,在数据科学的生态系统中有许多数据可视化库和框架。其中一个流行的是Seaborn,这是一个用于Python的统计数据可视化库。

我最喜欢Seaborn原因是它巧妙的语法和易用性,通过Seaborn我们只用3个函数就可以创建普通的图表。

  1. Relplot:用于创建关系图
  2. Displot:用于创建分布图
  3. Catplot:用于创建分类图

这3个函数提供了一个图形级的界面,用于创建和定制不同类型的图。我们将通过几个示例来理解如何使用这些函数。

示例将基于一个超市数据集(https://www.kaggle.com/aungpyaeap/supermarket-sales)。我们首先导入库并读取数据集。

importnumpyasnpimportpandasaspdimportseabornassnssns.set(style='darkgrid')
df=pd.read_csv("/content/supermarket.csv", parse_dates=['date'])
df.head()

640.png

Relplot

relplot函数用于创建关系图,即线图和散点图。这些图提供了变量之间关系的概述。

让我们首先创建单位价格和总数列的散点图。我们指定数据和列名。kind参数用于选择绘图类型。

sns.relplot(data=df, x='unit_price', y='total', kind='scatter')

640.png

这是一堆直线,因为总价格等于单位价格乘以数量,数量就是直线的斜率。

让我们使用relplot函数创建一个线图。我们可以画出每天的总销售额。第一步是按日期对销售进行分组,然后计算总和。

df_sub=df[['total','date']].groupby('date').sum().reset_index()
df_sub.head()

640.png

现在我们可以创建直线图了。

sns.relplot(data=df_sub, x='date', y='total', kind='line',
height=4, aspect=2)

640.png

我们使用height 和aspect参数来调整绘图的大小。aspect参数设置宽高比。

Displot

使用分布函数创建分布图,从而使我们可以大致了解数值变量的分布。我们可以使用displot函数创建直方图,kde图,ecdf图和rugplots。

直方图将数值变量的取值范围划分为离散的容器,并计算每个容器中的数据点(即行)的数量。让我们画一个总销售额的柱状图。

sns.displot(data=df, x='total', hue='gender', kind='hist',
multiple='dodge', palette='Blues', height=4, aspect=1.4)

640.png

hue参数根据给定列中的不同值分隔行。我们已经将性别列传递给了hue参数,因此我们可以分别看到女性和男性的分布。

多个参数决定了不同类别的栏如何显示(“dodge”表示并排显示)。当使用hue变量时,palette 参数用于选择调色板。

这些函数的一个优点是它们的参数基本上是相同的。例如,它们都使用hue、height和aspect 参数。它使学习语法更容易。

kde图创建了给定变量(即列)的核密度估计值,因此我们得到概率分布的估计值。我们可以通过将kind参数设置为“kde”来创建kde图。

sns.displot(data=df, x='total', hue='gender', kind='kde',
palette='cool', height=5, aspect=1.4)

640.png

Catplot

使用catplot函数创建分类图,如箱形图、条形图、带状图、小提琴图等。总共有8个不同的分类图可以使用catplot函数生成。

箱形图用中位数和四分位数表示变量的分布。下面是每个产品线单价栏的箱形图。

sns.catplot(data=df, x='prod_line', y='unit_price', kind='box',
height=6, aspect=1.8, width=0.5)

640.png

“width”参数调整框的宽度。

以下是箱形图的结构:

640.png

中位数是所有点都排序后的中间点。Q1(第一或下四分位数)是下半部分的中位数,Q3(第三或上四分位数)是上半部分的中位数。

我们还可以创建一个条形图来检查不同产品线的单价。与使用方框不同,条形图用一个点表示每个数据点。因此,它就像数字和分类变量的散点图。

让我们为branch和total列创建一个条形图。

sns.catplot(data=df, x='branch', y='total', kind='strip',
height=5, aspect=1.3)

640.png

这些点的密度给了我们一个分布的大致概念。似乎C分支在顶部区域有更多的数据点。我们可以通过检查每个分行的平均总额来证实我们的想法。

df[['branch','total']].groupby('branch').mean()              
totalbranch--------------------A312.354029B319.872711C337.099726

C的平均值高于其他两分行的平均值。

catplot功能下的另一种类型是小提琴图。这是一种plto和kde的组合。因此,它提供了一个变量分布的概述。

例如,我们可以为前面示例中的strip plot所使用的列创建小提琴图。我们需要做的就是改变kind参数。

sns.catplot(data=df, x='branch', y='total', kind='violin',
height=5, aspect=1.3)

640.png

C的小提琴的顶部比其他两支略粗。

总结

relplot、displot和catplot函数可以生成14个不同的图,这些图几乎涵盖了我们在数据分析和探索中通常使用的所有可视化类型。

这些函数提供了一个标准的语法,这使得掌握它们非常容易。在大多数情况下,我们只需要更改kind参数的值。此外,自定义绘图的参数也是相同的。

在某些情况下,我们需要使用不同类型的图表。但是我们需要的大部分都在这三个函数的范围内。

目录
相关文章
|
3天前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
15 1
|
4天前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
29 10
|
1天前
|
开发框架 并行计算 算法
揭秘Python并发神器:IO密集型与CPU密集型任务的异步革命,你竟还傻傻分不清?
揭秘Python并发神器:IO密集型与CPU密集型任务的异步革命,你竟还傻傻分不清?
11 4
|
4天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【9月更文挑战第23天】在本文中,我们将探索如何通过编写Python脚本来自动化常见的系统管理任务,从而提升效率并减少人为错误。文章将介绍基础的Python编程概念、实用的库函数,以及如何将这些知识应用于创建有用的自动化工具。无论你是新手还是有经验的系统管理员,这篇文章都将为你提供有价值的见解和技巧,帮助你在日常工作中实现自动化。
|
1天前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
8 1
|
1天前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
6 1
|
6天前
|
运维 监控 安全
自动化运维:使用Python脚本简化日常任务
【9月更文挑战第21天】在快速迭代的软件开发环境中,运维工作往往因为重复性高、易出错而被诟病。本文将介绍如何通过编写简单的Python脚本来自动化这些日常任务,从而提升效率和减少错误。我们将以实际案例为基础,展示如何从零开始构建一个自动化脚本,并解释其背后的原理。文章旨在启发读者思考如何利用编程技能来解决工作中的实际问题,进而探索技术与日常工作流程结合的可能性。
|
2天前
|
开发框架 并行计算 .NET
燃烧吧,Python!异步编程如何点燃IO密集型任务,让CPU密集型任务也加速狂奔?
燃烧吧,Python!异步编程如何点燃IO密集型任务,让CPU密集型任务也加速狂奔?
8 2
|
4天前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
20 4
|
5天前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
14 4