如何用Python的Pandas按性别分类绘制自杀死亡人数柱状图
解决方法:生成男女自杀人数的汇总柱状图
嘿,我完全懂你想要的效果啦——你需要的是仅展示男、女两个柱状图,分别对应各自的自杀死亡总人数,而不是现在每个数据条目单独占一个柱子的图表。咱们来调整一下代码,几步就能搞定:
问题根源
你当前的代码suicide_df.plot.bar('sex')是把suicide_df里的每一行数据都绘制成一个柱子,所以才会出现一堆零散的柱子。我们需要先对性别进行分组计数,再基于汇总后的数据绘图。
完整代码示例
import pandas as pd import matplotlib.pyplot as plt # 假设你已经完成了数据导入和筛选,得到suicide_df # 按性别统计自杀人数 suicide_counts = suicide_df['sex'].value_counts() # 绘制柱状图 suicide_counts.plot(kind='bar', rot=0) # rot=0让x轴标签保持水平,更易读 # 设置图表标签和标题 plt.xlabel('性别') plt.ylabel('自杀死亡人数') plt.title('不同性别的自杀死亡人数对比') plt.show()
代码解释
suicide_df['sex'].value_counts():这个Pandas方法会自动统计sex列中每个值的出现次数,也就是直接得到男性和女性的自杀总人数,结果是一个包含两个元素的Series。.plot(kind='bar', rot=0):基于汇总后的Series绘制柱状图,rot=0参数可以让x轴的“F”“M”标签保持水平,避免倾斜影响阅读。- 最后添加标签和标题,让图表信息更清晰直观。
另一种等价方法(使用groupby)
如果你更习惯用groupby来实现分组统计,也可以这样写:
suicide_counts = suicide_df.groupby('sex').size() # 后续绘图代码和上面一致
这样调整后,你就能得到只有两个柱子的柱状图,完美符合你的需求啦!
内容的提问来源于stack exchange,提问作者ZaneK
相关产品推荐
相关产品推荐

