【Python常用函数】一文让你彻底掌握Python中的toad.selection.select函数

任何事情都是由量变到质变的过程,学习Python也不例外。

只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。

本文和你一起来探索Python中的toad.selection.select函数,让你以最短的时间明白这个函数的原理。

也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。

本文目录
  1. 安装toad包

  2. select函数定义

  3. select函数实例

    3.1 导入库并加载数据

    3.2 实例


一、安装toad包

quality是toad库下的函数,调用需先要安装toad包。打开cmd,安装语句如下:

pip install toad
若安装成功,会显示结果如下:


二、select函数定义

select函数的功能是根据变量的缺失情况、IV值、相关性初步筛选出能入模的变量。

其中缺失情况是指变量缺失值的个数或缺失率,IV的定义可参考风控建模中的IV和WOE一文,相关性是指变量两两之间的相关程度。

其基本调用语法如下:

import toad
toad.selection.select(frame, target='target', empty=0.9, iv=0.02, corr=0.7, return_drop=False, exclude=None)
frame:数据集。
target:目标列或因变量列
empty:缺失值个数超过该阈值时删除变量,若值小于1,则变量缺失率高于该阈值时删除变量
iv:删除iv低于该阈值的变量。
corr:当两个变量相关性高于该阈值时,删除iv低的变量。
return_drop布尔值,是否返回删除变量的列名,默认False。
exclude:指定不被删除的列名。

三、select函数实例

  导入库并加载数据

背景:现需分析7252个客户的多头、关联风险、法院执行、风险名单和逾期信息,用于构建客户的贷前评分卡A卡。

在进行评分卡搭建之前需要对客户的信息进行筛选,挑选出和客户逾期信息相关性高的变量。

首先读取数据,具体代码如下:

#[1]读取数据import osimport toadimport numpy as npimport pandas as pd
os.chdir(r'F:\公众号\70.数据分析报告')date = pd.read_csv('testtdmodel1.csv', encoding='gbk')date.head(3)

os.chdir:设置数据存放的文件路径。

pd.read_csv:读取数据。

得到结果:


  实例

为了弄清楚数据框中有哪些列,我们先运行如下代码:

list(date.columns)

得到结果:

['input_time', '申请状态', '历史最高逾期天数.x', '原始分', '历史最高逾期天数.y', 'y', 'Ratio', '7天内申请人在多个平台申请借款', '1个月内申请人在多个平台申请借款', '3个月内申请人在多个平台申请借款', '7天内借款人手机申请借款平台数', '1个月内借款人手机申请借款平台数', '3个月内借款人手机申请借款平台数', '7天内借款人身份证申请借款平台数', '1个月内借款人身份证申请借款平台数', '3个月内借款人身份证申请借款平台数', '7天内关联P2P网贷平台数', '1个月内关联P2P网贷平台数', '3个月内关联P2P网贷平台数', '7天内申请人关联融资租赁平台数', '1个月内申请人关联融资租赁平台数', '3个月手机号关联身份证数', '1个月内申请人关联一般消费分期平台数', '3个月内申请人关联一般消费分期平台数', '风险名单占比', '一度关联节点个数', '二度关联节点个数', '一度风险名单个数', '二度风险名单个数', '一度风险名单占比', '二度风险名单占比', 'X3个月内申请人手机号作为第二联系人手机号出现的次数', 'X3个月内申请人手机号作为前三联系人手机号出现的次数', '是否命中法院执行模糊名单', '是否命中法院结案模糊名单', '是否命中手机风险关注名单', '是否命中身份证风险关注名单', '命中中风险关注名单笔数', '客户异常借款笔数', '信用异常笔数', '执行标的', '申请人执行标的是否超过100000', '3个月内申请人关联融资租赁平台数', '3个月身份证关联手机号数', '三个月银行相关平台数']
看下原始数据的行列情况,代码如下:
date.shape
得到结果:
(7252, 45)
说明这是一个7252行45列的数据框,接着删除数据框中无用列,只保留自变量和因变量,代码如下:
drop_columns = ['input_time', '申请状态', '历史最高逾期天数.x', '历史最高逾期天数.y'] # 去掉多余列,只保留自变量和因变量date_f = date.drop(columns=drop_columns)date_f.shape
得到结果:
(7252, 41)
最后调用函数删除空值率高于0.7,iv低于0.05的变量,且当两个变量相关性高于0.7时删除iv低的变量,代码如下:
selected_data, drop_lst= toad.selection.select(date_f,target = 'y', empty = 0.7, iv = 0.05, corr = 0.7, return_drop=True)display(selected_test)drop_lst
得到结果1:

得到结果2:
{'empty': array([], dtype=float64), 'iv': array(['X3个月内申请人手机号作为前三联系人手机号出现的次数', '是否命中法院结案模糊名单', '申请人执行标的是否超过100000'],       dtype=object), 'corr': array(['1个月内借款人身份证申请借款平台数', '3个月内申请人在多个平台申请借款', '1个月内借款人手机申请借款平台数',        '3个月内借款人手机申请借款平台数', '7天内申请人关联融资租赁平台数', '3个月内借款人身份证申请借款平台数',        '3个月内关联P2P网贷平台数', '1个月内申请人关联一般消费分期平台数', '7天内借款人手机申请借款平台数',        '一度风险名单个数', '是否命中手机风险关注名单', '7天内申请人在多个平台申请借款', '1个月内关联P2P网贷平台数'],       dtype=object)}

从结果1知,原始变量41个,经过筛选后剩下25个变量。

从结果2知,没有变量因为缺失率高于0.7而删除,因为iv低于0.05而删除的变量有3个,因为相关性高于0.7而删除的低iv变量13个。

如果把return_drop=True的值改成False,则不会返回drop_lst的值,这个可以根据需要进行设置。

为了验证删除iv低于0.05的变量是否真的为3个,可以运行如下代码:

toad.quality(date_f,'y',iv_only=True).tail(15)

得到结果:

可以发现iv低于0.05的变量确实是3个,不过需要注意的是,这里的iv是toad中自带函数计算的,如果有不同的划分方式,iv值会不同。

至此,Python中的select函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

往期回顾:

一文囊括Python中的函数,持续更新。。。

一文囊括Python中的有趣案例,持续更新。。。

一文囊括Python中的数据分析与绘图,持续更新。。。

一文囊括风控模型搭建(原理+Python实现),持续更新。。。



扫一扫关注我

19967879837

投稿微信号、手机号

请使用浏览器的分享功能分享到微信等