python 数据可视化sns作图

相信很多人在jupyter notebook画图,是这样的过程,

画什么图? 散点? 柱状?function是什么?google查一下。

嗯,我还差个标题,标题加在哪里,stackoverflow 看看有没有。

对了,我还要调颜色,调坐标,我还想双轴展示,左右展示。

然后,google看了10几个链接,结果,要么花了半个小时,不停试错,终于画出了想要的图,要么还在一个个点google 搜索的link内容。

如果你有大量时间,当然是没什么问题,但是数据岗位求职时候,那些take home challenge可不会给你这么多时间。

所以,在这种情况下,我们只需要掌握这3个function,我们就能快速画出任何(80%)我们想要画的图。

这三个function就是:

  1. sns.relplot
  2. sns.catplot
  3. sns.distplot

我们先看看为什么这3个function那么万能。

img

第一个:sns.relplot

2个连续变量作图

从最简单的x,y轴作图来说,如果x轴和y轴的feature都是连续变量的话,我们就可以用:sns.relplot。

比如,吃饭总价和小费

img

我们看到

下图sns.relplot和sns.scatter是一样的。

img

下图sns.relplot 和 sns.line是一样的。

img

所以,当两个连续变量做图时,不做任何aggregation的话,

我们用sns.relplot就可以了。

我们只需要通过更改sns.relplot(kind=’scatter’, /kind= ‘line’)就可以达到作图的要求了

第二个:sns.catplot

1个分类变量作图,第2个连续变量

sns.catplot故名思议,cat 指的是categorical的意思,所以,只要你的x轴是categorial变量的话,用catplot基本可以解决80%的作图。

举一个例子:

img

catplot() 和 stripplot() 可以作出同样的图

img

这里catplot 和relplot 不同的地方,relplot是将原数据的y值直接展现在坐标系作图,

而catplot既可以在y轴呈现原有y的数值,也可以aggregation原数据y后作图。

可以aggegation成平均,或者aggregation成distribution;

比如:

img

1、aggegation成平均(点图)

img

2、求aggegation成平均(柱状图)

img

这里比较讨巧的地方是,我们在做AB测试分析的时候,需要计算conversion rate,我们可以通过catplot,用上图的方法,直接从原数据自动aggregate出来。

非常方便。

3、另外,catplot还能做max,min的distribtuion

img

img

4、当然,像sns.catplot开头的那张也可以对y值直接做plot,不做任何的aggregation

img

5、sns.plot还可直接计算categorical变量出现的次数:

img

img

第三种:sns.distplot

从上面sns.catplot(kind=count)功能我们发现,x轴是分量变量,那如果x轴是连续变量,我可以计数吗?

也就是说,我可以plot出连续变量的frequency 的 distribution吗?

当然可以,其实有2方法,第一种,有pandas的cut function,把连续变量分段,变成分段变量(比如把年龄34,23等变成10-20,20-30,30-40等);

第二种功能就是直接用sns.displot()function。

img

仔细一看是不是就是PDF和CDF图。

img

img

以上就是我们为什么可以用sns.relplot, sns.catplot, sns.distplot来快速完成作图了。

到此为止,我们如果只要一种坐标系的图的话,用这三种function就可以了。

最后再来回味一下:

img


很多人要问,

如果我想分类展示呢,比如左右2个图?

问题1:

左边是AB测试中的test group,右边是AB测试中的control group,左右分类展示,应该怎么作图?

我们可以用catplot 实现,只需在注明其中参数是col = ‘gender’就可以了

img

问题2:

对于x轴如果是连续变量,也是希望如上图分类展示,应该如何展示?

这时候,我们需要用到前面没有提到的sns.FacetGrid function

img

问题3:

左右两张图,左图是AB测试,test和control组的样本量,右图是他们的conversion rate。

这时候,我们就不能用catplot了,因为catplot其中没有参数ax的设定。所以我们不能通过告诉ax[0]就是左边,ax[1]就是右边来实现,因为catplot没有ax参数。

我们只能用cat下一层的function,因为这一层级有ax的参数。

img

问题4:

重叠展示2张图,比如样本量是柱状图,conversion rate是点图,怎么样在同一张图里实现。

同理,因为catplot没有ax的参数输入,所以我们只能用下一层级的function。

img

问题5:

有没有非常快速加辅助线的方法?

有,如下。

img

最后的话,掌握这3种function可以快速作图,但是还是希望有空的话,多看看官方文档,加深认识。

原文链接:https://zhuanlan.zhihu.com/p/124919408

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44322234

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值