python-3.x - pandas 使用分类字符串值对 x 轴进行排序
问题描述
我正在尝试对熊猫图 x 轴中的分类变量进行排序。我尝试从熊猫数据框本身进行排序,但我只能按字母顺序排序。我没有在情节中看到以这种方式排序的选项。我正在尝试按以下顺序获取 x 轴: [Mon, Tue, Wed, Thru, Fri, Sat, Sun] 。我怎么做?
df = data_df.groupby(['name1','weekday']).sum().reset_index()
s = (df.pivot_table(
index='weekday', columns='name1', values='count', aggfunc='sum'))
s.plot(kind='bar', stacked=True,figsize=(20,10),rot=0)
plt.show()
寻找这个输出
解决方案
据我所知,你的df
和s
本质上是一样的。此外,您可以reindex
然后绘制:
weekdays = ['Monday','Tuesday','Wednesday','Thursday',
'Friday','Saturday','Sunday']
# sample data
np.random.seed(1)
data_df = pd.DataFrame({
'name1':np.random.randint(0,3, 100),
'weekday':np.random.choice(weekdays, 100),
'count':np.random.randint(3,100)
})
# groupby and take sum
s = (data_df.groupby(['name1','weekday'])
.sum().unstack('name1')
.reindex(weekdays) # here is the key to get the correct order
)
# plot
s.plot.bar(stacked=True)
输出:
推荐阅读
- javascript - 如果javascript条件为真,如何调用php函数
- django - AbstractBaseUser 和 AbstractUser 之间的自定义用户模型有什么区别
- machine-learning - 不平衡数据的特征工程
- vba - 用于重置插入 Word 文档中的文本框的计数器的代码
- kubernetes - 具有惰性序列和 SSE 的有状态服务——如何通过容错进行分发?
- pine-script - 脚本实时冻结最新数据(重新绘制),仅在刷新浏览器页面时显示所需值
- javascript - jQuery pop 从末尾删除项目
- python-3.x - 为什么我不能在 Windows 的 python 3 中使用 pip 安装 hashlib?
- security - 自动将所有 HTTP 流量重定向到 HTTPS 是否会无意中鼓励中间人攻击向量?
- c# - 是否可以让分析器了解 Jetbrains NotNull-attributes 或等效项?