微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qcut/Cut 和 Groupby 证据权重

如何解决Qcut/Cut 和 Groupby 证据权重

我对一个 DataFrame 进行了分组,并对分组后的 Dataset 进行了统计(计算的证据权重)。

  binned_x = pd.qcut(data[col],bins,duplicates='drop')
  d0 = pd.DataFrame({'x': binned_x,'y': data[target]})
  
 #sum = the number of 1's,count-sum= number of 0's
 d = d0.groupby("x",as_index=False).agg({"y": ["count","sum"]})
 d.columns = ['Cutoff','N','Events']
 #np.maximum to handle variables with 0 Events
 d['% of Events'] = np.maximum(d['Events'],0.5) / d['Events'].sum()
 d['Non-Events'] = d['N'] - d['Events']
 d['% of Non-Events'] = np.maximum(d['Non-Events'],0.5) / d['Non-Events'].sum()
 d['woe'] = np.log(d['% of Events']/d['% of Non-Events'])

接下来我想做的是将间隔添加到原始数据帧(为每个值分配一个间隔),这很容易data[col+"_bins"] = pd.cut(data[col],temp['Cutoffs'],right = True,precision = 2) 但我想添加另一列,其中包含我计算的证据权重和一个“计数器”,例如,如果该值在第一个间隔中,则在新列“bin_number”中添加一个 0。

有没有办法用相应的计算值“取消分组”数据?这将使它变得非常简单。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。