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

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

目录
相关文章
|
6天前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
43 1
|
6天前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
60 1
|
1月前
|
供应链 并行计算 算法
1行Python搞定高频任务!26个实用技巧解决日常+进阶需求
本文整理了26个Python极简技巧,涵盖日常高频操作与进阶玩法,助你用最少代码高效解决问题,提升编程效率。适合各阶段Python学习者参考。
73 27
|
6天前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
48 0
|
17天前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
221 101
|
24天前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
169 99
|
24天前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
147 98
|
28天前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
2月前
|
Python
Python 函数定义
Python 函数定义
142 1
|
1月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
186 0

推荐镜像

更多