如何使用matplotlib或seaborn基于pandas Series绘制堆叠柱状图
问题原因
你当前通过分组得到的s1是一维Series,仅包含一列数值、行索引为两种还款状态。堆叠柱状图要求数据至少具备两个维度:每一行对应X轴的一个分类,每一列对应一个需要堆叠的数值系列,一维数据自然无法生成堆叠效果,只会渲染为两个并列的独立柱子。
解决方法
如果你需要将两种还款状态的贷款数堆叠为单个柱子,只需将一维Series转换为一行多列的DataFrame即可,参考代码:
# 将Series转换为DataFrame后转置,得到一行两列的结构 s1_stacked = s1.to_frame().T # 绘制堆叠柱状图 s1_stacked.plot.bar(stacked=True)
扩展场景
如果你需要按其他维度(比如贷款等级、申请年份等)分组,在每个分组下展示还款状态的堆叠分布,可以调整groupby逻辑,分组后通过unstack生成多列结构:
# 示例:按贷款等级+还款状态双维度分组,生成每行对应一个等级、每列对应还款状态的DataFrame s2 = df_sort.groupby(['grade', 'loan_status'])['count_loans'].sum().unstack() s2.plot.bar(stacked=True)
内容的提问来源于stack exchange,提问作者Bluetail
相关产品推荐
相关产品推荐

