【python】等频分箱qcut

在python 较新的版本中,pandas.qcut()这个函数中是有duplicates这个参数的,它能解决在等频分箱中遇到的重复值过多引起报错的问题;

在比较旧版本的python中,提供一下解决办法:

import pandas as pd

def pct_rank_qcut(series, n):
    '''
    series:要分箱的列
    n:箱子数
    '''
    edages = pd.series([i/n for i in range(n)] # 转换成百分比
    func = lambda x: (edages >= x).argmax() #函数:(edages >= x)返回fasle/true列表中第一次出现true的索引值
    return series.rank(pct=1).astype(float).apply(func) #series.rank(pct=1)每个值对应的百分位数,最终返回对应的组数;rank()函数传入的数据类型若为object,结果会有问题,因此进行了astype

 

    原文作者:喜东东cc
    原文地址: https://blog.csdn.net/qq_34105362/article/details/82622939
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞