You need to enable JavaScript to run this app. pandas使用pd.qcut分箱后按箱均值平滑及添加箱边界列的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

pandas使用pd.qcut分箱后按箱均值平滑及添加箱边界列的实现方法

Pandas 等频分箱后的衍生值计算实现

前置准备

基于题目给定的示例构造测试数据,生成与使用习惯一致的等频分箱结果:

import pandas as pd
import numpy as np

# 题目指定的原始目标列
target_col = pd.Series([4, 8, 15, 21, 21, 24, 25, 28, 34])
# 按3等频生成分箱分组,与日常使用的 pd.qcut(col, 3) 逻辑完全一致
bin_group = pd.qcut(target_col, q=3)

功能1:分箱内均值替换的数值平滑

直接基于分箱分组使用transform方法计算组内均值,pandas会自动将均值广播到组内所有原始值,无需手动构建分箱与均值的映射表:

# 生成平滑后的列
col_smoothed = target_col.groupby(bin_group).transform("mean")

运行结果与题目示例完全匹配:[9, 9, 9, 22, 22, 22, 29, 29, 29]

该方法会自动按索引对齐值,避免手动映射时出现的顺序错位问题。

功能2:匹配每个值所属分箱的最近边界值

首先基于分箱分组计算每个组的实际极值:组内最小值为分箱左边界,组内最大值为分箱右边界,再计算原始值到两个边界的距离,选取距离更近的边界即可。

# 计算每个分箱的实际边界
bin_left = target_col.groupby(bin_group).transform("min")
bin_right = target_col.groupby(bin_group).transform("max")

# 计算值到两个边界的距离
distance_left = target_col - bin_left
distance_right = bin_right - target_col

# 选取距离更近的边界作为结果
col_nearest_boundary = np.where(distance_left <= distance_right, bin_left, bin_right)

运行结果与题目示例完全匹配:[4, 4, 15, 21, 21, 24, 25, 25, 34]

当值到两个边界的距离相等时,上述逻辑会默认选取左边界,可根据实际需求调整判断条件。


内容的提问来源于stack exchange,提问作者Blaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 01:45:04