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
相关产品推荐
相关产品推荐

