这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参数的值。此外,自定义绘图的参数也是相同的。

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

目录
相关文章
|
1天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
7 3
|
23天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
24天前
|
存储 数据安全/隐私保护 索引
|
8天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
13天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
15天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
18天前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
24 4
|
20天前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
33 3
|
19天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
17 1
|
25天前
|
索引 Python
Python中的其他内置函数有哪些
【10月更文挑战第12天】Python中的其他内置函数有哪些
13 1
下一篇
无影云桌面