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

Python可视化:如何绘制单图表展示各城市投诉类型?求修正异常代码

问题分析与解决方案

原代码的核心问题有两个:

  • 未指定聚合函数:pivot_table默认计算均值,但我们需要统计各城市各类投诉的数量,必须显式指定计数类的聚合逻辑
  • 索引/列的顺序不符合需求:按你描述的「展示各城市的各类投诉情况,不同颜色表示投诉类型」,原代码的索引和列顺序搞反了

正确实现代码(匹配需求:X轴为城市,不同颜色对应投诉类型)

import pandas as pd
import matplotlib.pyplot as plt

# 1. 生成统计透视表:统计每个城市每种投诉的数量
pivot_t = df.pivot_table(
    index='City',               # X轴对应城市
    columns='Complaint Type',   # 堆叠系列对应投诉类型(颜色区分)
    values='Unique Key',
    aggfunc='count',            # 用Unique Key计数,也可以用aggfunc='size'更直接
    fill_value=0                # 补全无投诉的类型为0,避免NaN影响绘图
)

# 2. 绘制堆叠柱状图
pivot_t.plot(kind='bar', stacked=True, figsize=(12, 6))

# 可选:美化图表
plt.title('各城市各类投诉数量分布')
plt.xlabel('城市')
plt.ylabel('投诉数量')
# 把图例放到图表外侧,避免遮挡柱子
plt.legend(title='投诉类型', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

若需求为X轴展示投诉类型、堆叠各城市数据

如果实际需要查看每种投诉在不同城市的分布,只需调整透视表的索引和列:

pivot_t = df.pivot_table(
    index='Complaint Type',
    columns='City',
    values='Unique Key',
    aggfunc='count',
    fill_value=0
)
pivot_t.plot(kind='bar', stacked=True, figsize=(12, 6))
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:23:20