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

如何为Python中value_counts生成的柱状图自定义排序顺序

实现自定义排序的柱状图方法

要给柱状图设置完全自定义的排序(不用默认的升/降序、按值或索引排序),有两种直接实用的实现方式:

方法一:将列转为分类类型(永久生效)

先把目标列转换成分类数据类型,并指定你想要的自定义顺序,之后对该列的统计都会遵循这个顺序:

import pandas as pd

# 1. 定义你需要的自定义排序顺序,把所有可能的选项按要求列出来
custom_order = ["中立", "同意", "非常同意", "不同意", "非常不同意"]

# 2. 将列转换为分类类型,指定顺序并标记为有序
df['perception_survey'] = pd.Categorical(df['perception_survey'], categories=custom_order, ordered=True)

# 3. 按自定义顺序统计并绘图,和你原代码逻辑一致
df['perception_survey'].value_counts().plot(kind='bar', title='I feel happy', ylabel='Number of Respondents')

方法二:用reindex重新排序(仅当前统计生效)

如果不想修改原数据的类型,只针对这次的统计结果调整顺序,可以先统计出频次,再用reindex按自定义顺序重新排列:

import pandas as pd

# 1. 定义自定义排序顺序
custom_order = ["中立", "同意", "非常同意", "不同意", "非常不同意"]

# 2. 先统计频次,再按自定义顺序重新索引
# dropna=False 会保留自定义顺序里所有选项(哪怕原数据里没有,计数为0),不需要的话可以删掉这个参数
counts = df['perception_survey'].value_counts().reindex(custom_order, dropna=False)

# 3. 基于重新排序后的结果绘图
counts.plot(kind='bar', title='I feel happy', ylabel='Number of Respondents')

注意点

  • 如果自定义顺序里包含原数据中没有的选项,reindex加dropna=False会在柱状图里显示对应空柱子(计数为0),不需要的话去掉该参数即可。
  • 两种方法的核心都是先让统计结果遵循你的自定义顺序,再传入绘图函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:35:04