Python可视化神器Seaborn入门系列——kdeplot

news/2025/2/13 15:41:16/

Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。但应强调的是,应该把Seaborn视为matplotlib的补充,而不是替代物。
在这里插入图片描述

Seaborn安装

pip install seaborn

安装完Seaborn包后,我们就开始进入接下来的学习啦,首先我们介绍kdeplot的画法。

kdeplot(核密度估计图)

核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一。通过核密度估计图可以比较直观的看出数据样本本身的分布特征。具体用法如下:

seaborn.kdeplot(data,data2=None,shade=False,vertical=False,kernel='gau',bw='scott',
gridsize=100,cut=3,clip=None,legend=True,cumulative=False,shade_lowest=True,cbar=False, cbar_ax=None, cbar_kws=None, ax=None, **kwargs)

我们通过一些具体的例子来学习一些参数的用法:

  • 首先导入相应的库
%matplotlib inline  #IPython notebook中的魔法方法,这样每次运行后可以直接得到图像,不再需要使用plt.show()
import numpy as np  #导入numpy包,用于生成数组
import seaborn as sns  #习惯上简写成sns
sns.set()           #切换到seaborn的默认运行配置
  • 绘制简单的一维kde图像
x=np.random.randn(100)  #随机生成100个符合正态分布的数
sns.kdeplot(x)

在这里插入图片描述
cut:参数表示绘制的时候,切除带宽往数轴极限数值的多少(默认为3)

sns.kdeplot(x,cut=0)

在这里插入图片描述
cumulative :是否绘制累积分布

sns.kdeplot(x,cumulative=True)

shade:若为True,则在kde曲线下面的区域中进行阴影处理,color控制曲线及阴影的颜色

sns.kdeplot(x,shade=True,color="g")

在这里插入图片描述
vertical:表示以X轴进行绘制还是以Y轴进行绘制

sns.kdeplot(x,vertical=True)

二元kde图像

y=np.random.randn(100)
sns.kdeplot(x,y,shade=True)

在这里插入图片描述
cbar:参数若为True,则会添加一个颜色棒(颜色帮在二元kde图像中才有)

sns.kdeplot(x,y,shade=True,cbar=True)

在这里插入图片描述

举例说明二元kde图像

定义了一个函数


def plot_distribution_target(df, target, cols):dist_cols=5dist_rows=len(cols)plt.figure(figsize=(5*dist_cols,5*dist_rows))i=1for col in cols:ax=plt.subplot(dist_rows,dist_cols,i)ax=sns.kdeplot(df[df[target]==1][col],color='Red',shade=True)#train_dataax=sns.kdeplot(df[df[target]==0][col],color='Blue',shade=True)ax.set_xlabel(col)ax.set_ylabel('Frequency')ax=ax.legend(['target=1','target=0'])i+=1plt.show()

现在有个数据,保存在csv文件中:

import seaborn as sns  #习惯上简写成sns
sns.set()           #切换到seaborn的默认运行配置
#定义训练数据集的位置
pathTrain='./PROCESSING_DATA'
train_tag = pd.read_csv(pathTrain+'/df_tag.csv')
print(train_tag.head())

输出如下:

        id  flag  gdr_cd  age  mrg_situ_cd  edu_deg_cd  acdm_deg_cd  deg_cd  \
0  U7A4BAD     0       1   41            1           1            6       6   
1  U557810     0       1   35            0          12            5       6   
2  U1E9240     0       1   53            1           0            2       2   
3  U6DED00     0       0   41            1          12            6       6   
4  UDA8E28     0       0   42            1           1            6       1   job_year  ic_ind  ...  crd_card_act_ind  l1y_crd_card_csm_amt_dlm_cd  \
0         3       0  ...                 0                            0   
1         4       0  ...                 0                            0   
2         9       0  ...                 0                            0   
3         0       0  ...                 0                            0   
4         3       1  ...                 0                            0   atdd_type  perm_crd_lmt_cd  cur_debit_cnt  cur_credit_cnt  \
0          0                3              1               0   
1          0                1              1               0   
2          0                7              2               0   
3          0                1              1               0   
4          0                2              7               0   cur_debit_min_opn_dt_cnt  cur_credit_min_opn_dt_cnt  cur_debit_crd_lvl  \
0                      3492                         -1                 10   
1                      4575                         -1                 10   
2                      4894                         -1                 40   
3                      4938                         -1                 10   
4                      2378                         -1                 20   isTest  
0      -1  
1      -1  
2      -1  
3      -1  
4      -1  [5 rows x 44 columns]
plot_distribution_target(train_tag,'flag', ['gdr_cd','age'])

在这里插入图片描述
这几个特征,在target=0和target=1时的kde,发现这几个特征对target的区分能力都非常有限。


http://www.ppmy.cn/news/92658.html

相关文章

5月面试太难,吃透这份软件测试面试笔记后,成功跳槽涨薪30K

5月开始,生活工作渐渐步入正轨,但金三银四却没有往年顺利。昨天跟一位高级架构师的前辈聊天时,聊到今年的面试。有两个感受,一个是今年面邀的次数比往年要低不少,再一个就是很多面试者准备明显不足。不少候选人能力其实…

python 模块pymysql模块,连接mysql数据库

mysql安装教程 mysql语法大全 一、安装 pip install pymysql二、连接数据库 import pymysql # 打开数据库连接 conn pymysql.connect(host"localhost",user"testuser",password"test123",database"TESTDB" ) cursor conn.cursor(…

【IM群发推内容参考iMessage苹果推】下面的 mailto、news 和 isbn URI 都是 URN 的示例。

要实现APNs认证以用于iMessage推送,以下是一样平常的步调: 建立苹果开发者账户:确保你具有苹果开发者账户。若是没有,请注册一个开发者账户。 登录到苹果开发者中间:利用你的开发者账户登录到苹果开发者中心&#xf…

轻松实现远程访问本地wamp服务器,无公网IP也不怕,「内网穿透」

目录 前言 1.Wamp服务器搭建 1.1 Wamp下载和安装 1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册 2.1 本地网页发布 2.2 Cpolar云端设置 2.3 Cpolar本地设置 3. 公网访问测试 4. 结语 转载自cpolar极点云的文章:无公网IP?教你在外远程访问本地…

第 4 章 HBase 进阶

第 4 章 HBase 进阶 4.1 Master 架构1)Meta 表格介绍:(警告:不要去改这个表) 4.2 RegionServer 架构1)MemStore2)WAL(预写日志)3)BlockCache 4.3 写流程2&…

瑞吉外卖开发总结(全功能实现)

技术栈 项目部署 简历上可写的点 集中处理系统异常,自定义统一的错误码, 并封装了全局异常处理器,屏蔽了项目冗余的报错细节、便于接口调用方理解和统一处理。 基于静态ThreadLocal封装了线程隔离的全局上下文对象,便于在请求内部存取用户信…

SpringBoot项目中Controller层、Service层、Dao层、entity层、Configuration层、Utils层作用

SpringBoot项目中各层的作用 1、Controller层2、Service层3、Dao层(Mapper层)4、entity层(model层)5、Configuration层6、Utils层各层作用架构图 1、Controller层 Controller层为控制层,一般使用 RestController 或 C…

复习向 C/C++ 编程语言简介和概括(C++复习p1)

文章目录 C 编程语言C 和 C 关系标准的 C 组成ANSI 标准比较重要的标准化时间 C 编程语言 是一种静态类型的、编译式的、通用式的、大小写敏感、不规则的编程语言支持过程化编程,面向对象,泛型编程 C 和 C 关系 C 是 C 的一个超集,任何合法…