Python#单变量分析包

本文介绍了Python中用于单变量分析的工具包fctn,包括四个核心函数:count_iv、qcut_iv、customcut_iv和autocut_iv,分别用于不同方式的分组分析。通过将Ipynb_importer.py和fctn.ipynb放在同一文件夹,可以在建模项目中直接调用这些函数,简化工作流程。
摘要由CSDN通过智能技术生成

写在前面

1、目的

建模经常要做单变量分析,就把单变量分析要用到的函数全部封装为一个包fctn,其中的函数包含:

1)count_iv(df, refuse, x):每个值为一组
2)qcut_iv(df, refuse,x, n)::n等分进行分组
3)customcut_iv(df,refuse,x,group):自定义区间进行分组
4)autocut_iv(df,refuse, x, percent = 1):自动合并占比x以下的组进行分组

2、用法

将Ipynb_importer.py与fctn.ipynb放入统一文件夹内

在建模文件中:

import Ipynb_importer
import fctn

可以直接直接从fctn中调用函数,例如:

fctn.count_iv(alldata, 'respond', 'ini_lvl')

3、输出结果

fctn.qcut_iv(result, 'target', 'province_br',5)

在这里插dd入图片描述

代码

fctn.ipynb

import pandas as pd
import numpy as np
import seaborn as sns
import math

def count_iv(df, refuse, x):
    meany = df[refuse].mean()
    df[x] = df[x].fillna('Nan')
    t = df.groupby([x])[refuse].agg(['count','mean']).reset_index()
    t['percent'] = t['count']/df[x].count()*100
    t['是否初步显著'] = t.apply(lambda row: 1 if abs(row['mean']-meany)/meany>=0.2 and row['percent']>=2 else 0, axis=1)
    t['是否初步拒绝'] = t.apply(lambda row: 1 if row['mean']>(2*meany) else 0, axis=1)
    gc = df[refuse].value_counts()[0]
    bc = df[refuse].value_counts()[1]
    t['gr'] = t.apply(lambda x: (1-x['mean'])*x['count']/gc, axis=1)
    t['br'] = t.apply(lambda x: x['mean']*x['count']/bc, axis=1)
    
    t['WoE'] = t.apply(lambda x: math.log(x['gr']/x['br'])*100 if ((x['br'] > 0) and (x['gr'] > 0)) else 0,axis=1)
    t['cIV'] = t.apply(lambda x: (x['gr']-x['br'])*math.log(x['gr']/x['br']) if ((x['br'] > 0) and (x['gr'] > 0)) else 0, axis=1)
    

   # t['WoE'] = t.apply(lambda x: math.log(x['gr']/x['br'])*100, axis=1)
   # t['cIV'] = t.apply(lambda x: (x['gr']-x['br'])*math.log(x['gr']/x['br']), axis=1)
    print('meany:',meany , 'IV值:',t['cIV'].sum() )
    f=sns.barplot(x=x,y='mean',data=t)

    return t

def qcut_iv(df, refuse,x, n):
    meany = df[refuse].mean()
    #df[x] = df[x].fillna('Nan')
    x1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值