【问题标题】:Matplotlib bar chart that displays the x values for male and femalesMatplotlib 条形图,显示男性和女性的 x 值
【发布时间】:2020-03-29 21:02:11
【问题描述】:

我想尝试按性别分析婚姻状况的分布,我觉得条形图是最好的方法。我可以弄清楚如何获取每种婚姻状况的人数,但无法弄清楚如何将每种状态的男性和女性结果分开。我已经看过很多关于 matplotlib 中使用 pandas 的条形图的教程,但我似乎无法理解。

数据框:

数值为人数的系列结构:

这是我为每个状态的人数绘制的:

series = dfFile["marital_status"].value_counts()

series.plot('bar')
plt.show()

我得到了什么:

我想要得到的是这样的东西,但 x 值作为婚姻状况:

对 Python 和 Matplotlib 很陌生,所以如果答案很明显,或者问题的措辞不是很好,我会同意。

【问题讨论】:

  • 这是关于使用 pandas 操作/分析数据,并且在不知道您的数据框包含什么的情况下我们无能为力,之后绘图位有点明显。
  • 啊,我明白了,我已经编辑了问题以包含数据框。谢谢

标签: python pandas numpy matplotlib bar-chart


【解决方案1】:

这应该会有所帮助:

gender_column = <ENTER GENDER COLUMN NAME HERE>
dfFile.groupby(["marital_status", gender_column]).size().unstack(level=1).plot(kind='bar')

【讨论】:

  • 感谢您的回复,但打印了两个栏(男性和女性),但我想为每种婚姻状况的男性和女性设置一个栏。所以总共会有 14 个条形图(7 个婚姻状况 X 2 个性别)
  • 已编辑,上面的解决方案会给你(7个婚姻状况X 2个性别)
  • 不确定我是否做错了什么,但它给我的结果与我从问题中发布的代码中得到的结果相同,只是以随机顺序。这是因为男性酒吧隐藏在女性酒吧后面还是反之亦然,所以我需要抵消其中一种性别的 x 值?我已经编辑了这个问题以包含一个与我想要实现的结果非常相似的图表。
  • 非常感谢,我知道这听起来很荒谬,但我花了两天时间试图弄清楚这一点。我可以看到它非常简单,但无论出于何种原因,我都无法理解它。你是一个救生员
  • unstack 方法将成为您未来的朋友。在此处了解更多信息:pandas.pydata.org/pandas-docs/stable/reference/api/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-02
  • 2013-06-11
  • 1970-01-01
  • 2017-10-08
相关资源
最近更新 更多