这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入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1月前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
70 3
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
2月前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
129 7
21个Python脚本自动执行日常任务(2)
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
45 2
|
1月前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
87 8
|
2月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
155 7
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
57 4

热门文章

最新文章

推荐镜像

更多