如何使用pandas将数据按40%、40%、20%的比例拆分至指定分桶
40:40:20自定义分桶实现方案
用pandas自带的pd.qcut()即可实现,该函数是专门用于按分位数做等频分箱的工具,支持自定义传入分位区间,相比你之前用的pd.cut()更适配百分位拆分的需求。
核心实现代码
import pandas as pd # 定义分位边界:对应0%、40%、80%、100%四个节点,刚好拆分出三个区间 quantile_bins = [0, 0.4, 0.8, 1.0] # 自定义分桶标签,可按需调整为数值/字符类型 bin_labels = ["低40%", "中40%", "高20%"] # 执行分桶,retbins=True会同时返回拆分的数值边界 df['count_group'], split_borders = pd.qcut( df['count'], q=quantile_bins, labels=bin_labels, retbins=True )
常见问题处理
- 若数据存在大量重复值导致分位边界重合报错,可添加
duplicates='drop'参数自动处理重复边界:df['count_group'], split_borders = pd.qcut( df['count'], q=quantile_bins, labels=bin_labels, retbins=True, duplicates='drop' ) - 打印
split_borders即可查看每个分桶对应的实际数值拆分边界 - 若需要数值类型的分桶标识,直接将
bin_labels修改为[1,2,3]即可
内容的提问来源于stack exchange,提问作者Maths12
相关产品推荐
相关产品推荐

