首页
学习
活动
专区
工具
TVP
发布

python特征工程——数据探索及缺失率单值率计算

好久不见,小编最近待业在家,如果各位有互金的坑,可以帮小编介绍一下哈。

大家知道,开发模型的时候,特征的预测力及稳定性很重要,而预测力和稳定性的衡量指标也有很多。

先说怎么判断特征稳定性,特征稳定性主要包括客群是否发生变化以及风险点是否发生变化。一般客群发生变化会去看时间维度上的特征分布或者分箱的PSI,如果时间维度的特征分布不稳定或者PSI的值过大,那么这个特征也是不稳定的。风险点发生变化主要体现在比如测试集或验证集map了学习集的分箱后计算的的woe和学习集趋势不同,那么这样的特征也是不能用的。

然后是特征的预测力衡量,预测力衡量的指标有很多,小编今天主要介绍的缺失率和单值率。

以下是进行数据探索和计算缺失率单值率的代码:

首先是数据探索:

def EDA(df):

'''

df为输入数据集,本函数主要用于数据探索

'''

res = []

nrows = len(df) # 行数

# for col in df.columns:

for col in df.columns:#

x = df[col] # series

na= x.isnull().sum() # 每个series的空值个数

nunique = x.nunique() # 每个特征的单一值个数

missRate = na*1.0/nrows # 缺失率

#分别处理数值型特征和字符型特征

# if is_number_type(x):

if x.dtypes != 'object':

# 计算分位数

q = stats.scoreatpercentile(x.dropna(),[1,10,25,50,75,90,100])

iqr = q[4]-q[2]

iqrlow = q[2]-1.5*iqr

iqrupp = q[4]+1.5*iqr

r = (col,'Number',nrows,na,nunique,missRate,q[0],q[1],q[2],q[3],q[4],q[5],q[6],

x.mean(),x.std(),(x

(x==0).sum(),(x>0).sum(),(xiqrupp).sum(),

np.nan,np.nan,np.nan,np.nan)

res.append(r)

else:

cnts = x.value_counts()

top = cnts.index[0]

tail = cnts.index[-1]

toprate = cnts[0]*1.0/nrows

tailrate = cnts[-1]*1.0/nrows

r = (col,'Char',np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,

np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,

np.nan,

top,toprate,tail,tailrate)

res.append(r)

col1= ['Name','Type','N','Nmiss','Nunique','Missrate','Q1','Q10','Q25',

'Q50','Q75','Q90','Q100','Avg','Std','NNeg','Nzero',

'Npos','Noutl','Noutu','top','toprate','tail','tailrate']

print('done')

eda_stat = pd.DataFrame(res,columns = col1).sort_values(by = 'Type')

return eda_stat

以上是查看特征分布的函数

def pct_check(df,cutoff_pct,cutoff_miss,ignore=[]):

'''

检查百分比

'''

cols=[]

for col in df.columns:

if col in ignore:

continue

pct = df[col].value_counts()*1.0/len(df)

missrate =1-(df[col].count()*1.0/len(df))

if (len(pct[pct>=cutoff_pct])>0)or (missrate>=cutoff_miss):

cols.append(col)

return cols

这个找出符合单值率集缺失率阈值的特征。

谢谢大家~

  • 发表于:
  • 原文链接 https://kuaibao.qq.com/s/20181104G1EEZC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据 《腾讯内容开放平台服务协议》 转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云 开发者 公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券