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

使用pandas.cut分箱后value_counts区间排序错误如何解决

解决pandas.cut分箱后统计结果的区间排序异常问题

pd.value_counts()方法默认按照统计值的降序排列,你看到的顺序异常是因为不同区间的样本量不同,优先展示了样本量最高的区间。pd.cut()返回的结果本身是有序分类(Categorical)类型,自带正确的区间顺序属性,只要调整排序规则即可。


方法1:调用value_counts时关闭排序

直接在统计时传入sort=False,就会按照分类本身的区间顺序输出:

ages_cut.value_counts(sort=False)

输出效果:

(0, 20]       268
(20, 40]      379
(40, 60]      233
(60, 80]       56
(80, 100]       3
(100, 120]      0
dtype: int64

方法2:对已生成的统计结果重排索引

如果已经拿到了乱序的统计结果,可以通过分箱结果自带的有序分类属性重排索引:

# 先拿到统计结果
count_result = ages_cut.value_counts()
# 用分箱自带的有序分类重排索引
count_result_sorted = count_result.reindex(ages_cut.cat.categories)

注意:如果执行pd.cut时主动设置了ordered=False,返回结果会是无序分类类型,此时需要手动指定区间顺序再重排:

custom_order = pd.IntervalIndex.from_tuples([(0,20),(20,40),(40,60),(60,80),(80,100),(100,120)])
count_result_sorted = count_result.reindex(custom_order)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03