python 用groupby之后生成新的数据框

2020-11-19  本文已影响0人  丙吉

最近在做一点点风控的东西,想把toad中的ks_bucket改修正下,原码里面是按得分的最大最小值划分的bucket,但我在实际的应用中想更个性化的划分节点去统计。

首先需要解决的一个问题是把0~1上的概率给划分到不同的区间,然后分别统计即可。

之前一直用groupby,分组后想count, sum,后变成df。在网上找了好几种方法,都没有成功,最后还是英文文档解决了我的问题。

bin_00 = [0, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 1]  # 要分组的切割点
OOT['bucket'] = pd.cut(OOT['probi_1'], bin_00)    # OOT['probi_1'] 是 我要划分的列
image.png

这是划分好后的各列情况 , 第一列:概率,第二列:所属的区间, 第三列: 实际的label

我主要是 想把这三列 , 按第二列分组,统计各区间的总数,和label为1的数
用NamedAgg 即可把原来的分组变为数据框。

OOT_groupby = OOT.groupby("bucket", as_index=False).agg(
    total=pd.NamedAgg(column="probi_1", aggfunc="count"),
    bads=pd.NamedAgg(column="label", aggfunc="sum"))
image.png
上一篇下一篇

猜你喜欢

热点阅读