You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas.qcut剩余值处理问题及生成100分位数箱需求

解决pd.qcut分箱丢失箱子的问题

问题根源

你用pd.qcut划分100个分位数箱时,因为分位数计算出现重复分界点,导致相邻箱子被合并。比如1-101的整数序列,部分百分位对应的数值相同,qcut会自动合并这些箱子,最终出现空箱。

替代方案:用百分位排名映射箱号

直接通过计算每个数据的百分位排名,再映射到1-100的箱号,能保证不管数据量是100条还是百万级,都能生成恰好100个箱,且每个箱都有数据(当数据量≥100时)。

修改后的代码:

import pandas as pd

game_num = range(1, 102, 1)
player_name = ['Fred'] * 101

df = pd.DataFrame({'name': player_name, 'game_num': game_num})

# 计算百分位排名(0到1之间),再映射为1-100的箱号
df['percentile_bin'] = (df['game_num'].rank(pct=True) * 100).astype(int)
# 修正边界值:确保最小排名对应1号箱
df['percentile_bin'] = df['percentile_bin'].replace(0, 1)

验证结果

执行df.percentile_bin.nunique()会返回100,每个箱都有数据:

  • 1号箱包含game_num=1
  • 2到99号箱各对应1条连续数值
  • 100号箱包含game_num=101(因rank(pct=True)最大值为1,乘以100后为100)

通用适配

对于任意≥100条的单个个体数据,这个方法都能稳定生成100个分位数箱:

  • 数据量刚好100条时,每个箱恰好1条数据
  • 数据量超过100条时,每个箱的数据量均匀分布(最多相差1条)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:50:30