python数据离散化提供五种分箱方法:一、pandas.cut等宽分箱;二、pandas.qcut等频分箱;三、numpy.digitize自定义边界分箱;四、sklearn.kbinsdiscretizer统一接口分箱;五、scipy.mquantiles动态分位点分箱。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望使用CodeGeeX辅助编写Python数据离散化代码,特别是实现分箱(binning)处理逻辑,则需明确输入数据结构、分箱策略及输出格式。以下是多种可直接在CodeGeeX中提示调用或本地复现的分箱实现方法:
一、使用pandas.cut进行等宽分箱
该方法依据数值范围均等划分区间,适用于分布相对均匀的数据,能快速生成离散标签并支持自定义标签命名。
1、导入必要库:import pandas as pd。
2、准备原始数值序列:data = [12, 25, 37, 41, 55, 63, 78, 82, 91]。
3、调用cut函数指定箱数:bins = pd.cut(data, bins=3, labels=['Low', 'Medium', 'High'])。
4、将结果转为列表并打印:print(bins.tolist())。
二、使用pandas.qcut进行等频分箱
该方法确保每个箱内样本数量近似相等,适用于偏态分布数据,避免空箱或极端稀疏问题。
1、构造含重复值的示例数组:data = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50] * 2。
2、应用qcut划分四分位数箱:quantile_bins = pd.qcut(data, q=4, labels=['Q1', 'Q2', 'Q3', 'Q4'])。
3、提取唯一区间边界:print(quantile_bins.categories)。
4、获取离散化后类别编码:print(quantile_bins.codes)。
三、基于numpy自定义边界分箱
该方法允许手动设定任意断点位置,适用于业务规则驱动的离散场景,如年龄分段、收入等级等。
1、定义边界数组(升序排列):custom_edges = [0, 18, 35, 60, 120]。
2、生成待处理整数序列:ages = [16, 22, 33, 47, 65, 88]。
3、调用digitize定位所属箱编号:bin_indices = np.digitize(ages, custom_edges, right=True)。
4、映射为字符串标签:labels = ['Minor', 'Young Adult', 'Adult', 'Senior']; result = [labels[i-1] for i in bin_indices]。
四、利用sklearn.Preprocessing.KBinsDiscretizer统一接口分箱
该方法提供标准化API,支持等宽、等频及聚类三种策略,输出为二维数组,便于后续Pipeline集成。
1、初始化离散器(等宽策略):from sklearn.preprocessing import KBinsDiscretizer; est = KBinsDiscretizer(n_bins=4, encode='ordinal', strategy='uniform')。
2、构造二维输入(列向量形式):X = [[x] for x in [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]]。
3、拟合并转换:X_binned = est.fit_transform(X)。
4、查看离散化结果:print(X_binned.ravel().astype(int))。
五、使用scipy.stats.mstats.mquantiles实现动态分位点分箱
该方法通过计算指定分位数确定分割点,适合需要精确控制累积比例的统计建模任务。
1、导入统计模块:from scipy import stats。
2、生成模拟数据集:values = np.random.lognormal(mean=3, sigma=1, size=1000)。
3、计算0%、25%、50%、75%、100%分位点:quantiles = stats.mstats.mquantiles(values, prob=[0, 0.25, 0.5, 0.75, 1])。
4、传入pandas.cut执行分箱:binned = pd.cut(values, bins=quantiles[0], include_lowest=True)。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











