【问题标题】:How to plot a Horizontal bar with y-axis value from categorical data如何从分类数据中绘制带有 y 轴值的水平条
【发布时间】:2021-10-09 05:22:02
【问题描述】:

有人可以帮忙解决这个问题吗? .

组织是索引,我需要显示一个水平条形图,显示每个组织进行的实验尝试总数,顶部最多,底部最少。

数据框如下: 组织日期时间尝试 一个....失败 b .... 成功 b .... 失败 a .... 部分成功 成功 b ....部分成功

我知道尝试是分类数据,它有一些 count_values() 函数,但是 只是不知道如何编码?我对编程很陌生,非常感谢您的指导。

【问题讨论】:

  • 请提供示例数据集。
  • 亲爱的 Anne,正如这里经常指出的那样,您最好发布一个 minimal reproducible example,以便该社区可以尝试通过编写操作代码来帮助您。您将获得更多及时的帮助和指导,以助您取得成功。祝你好运!
  • 图片并没有真正的帮助。正如@massimopinto 所写,应该能够重现该问题。另请阅读How to make good reproducible pandas examples

标签: pandas dataframe matplotlib pivot-table bar-chart


【解决方案1】:

让我们假设这个输入:

np.random.seed(0)
df = pd.DataFrame({'company': np.random.choice(['A', 'B', 'C', 'D'], 50),
                   'Location': 'non-relevant',
                   'Outcome': np.random.choice(['Success', 'Failure'], 50),
                  }).set_index('company')
df.head()
             Location  Outcome
company                       
A        non-relevant  Success
D        non-relevant  Failure
B        non-relevant  Failure
A        non-relevant  Failure
D        non-relevant  Failure
...

计算每组的计数并排序:

>>> df2 = df.groupby('company')['Outcome'].count().sort_values()
>>> df2
company
C     8
A    12
B    12
D    18
Name: Outcome, dtype: int64

情节:

df2.plot.barh()

这里如何计算失败/成功:

df2 = df.groupby('company')['Outcome'].value_counts().unstack('Outcome')
df2 = df2.loc[df2.sum(axis=1).sort_values().index]
df2.plot.barh(stacked='True')

【讨论】:

  • 1.您可以编辑您的问题并添加 df2 + graph 的内容。 2. 您想忽略“部分”值还是将它们视为成功/失败? (例如部分成功 -> 成功)
猜你喜欢
  • 2017-09-19
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
相关资源
最近更新 更多