【问题标题】:Stacked Bar Chart based on Pandas Column - Python基于 Pandas 列的堆积条形图 - Python
【发布时间】:2020-12-19 07:18:45
【问题描述】:

我有一组可以用以下代码复制的数据:

import numpy as np

import pandas as pd

Neurons = np.array([
    20, 600, 300, 300, 200,  50,  20, 100,  50, 300, 100, 600, 20,20,
    600, 200, 200, 600, 600, 100, 200, 200, 300, 200, 100, 50, 100,
    600, 200, 300,  20,  20, 200, 300, 600, 600, 100, 300, 200, 300])

Option = np.array([
    'Put', 'Put', 'Put', 'Put', 'Put', 'Put', 'Put', 'Put',
    'Put', 'Put', 'Put', 'Put', 'Put', 'Put', 'Put', 'Put',
    'Call', 'Call', 'Call', 'Call', 'Call', 'Call', 'Call', 'Call',
    'Call', 'Call', 'Call', 'Call', 'Call', 'Call', 'Call', 'Call',
    'Call', 'Call', 'Call', 'Call', 'Call', 'Call', 'Call', 'Call'])

df = pd.DataFrame({"Neurons" : Neurons, "Option": Option})

“神经元”和“选项”列应视为分类。我想构建一个条形图,其中神经元在 x 轴上按升序显示,在 y 轴上按模型数显示。

例如,有 6 个模型,其中有 20 个神经元,由 4 个 Put 和 2 个 Call 组成。因此,条形图应显示两个条形图,y 轴读数分别为 4 和 2,以两种不同的颜色显示在图例中。这应该对神经元的所有分类值重复。 (一共六个)

这只是数据的一小部分,在完整数据集中,选项列最多有六个分类选项。我想在同一图表上为每个单独的条形图。

任何帮助将不胜感激。提前谢谢你!

【问题讨论】:

  • 您的问题是什么?具体来说,您尝试了什么不起作用?如果您不知道如何在 Pandas 中运行条形图,请research 很多关于该主题的文档、教程、博客,甚至 SO 帖子。选择一个实现并返回特定错误或您尝试的不良结果。
  • 我知道如何在 pandas 中绘制条形图。话虽如此,它并没有根据分类“选项”变量绘制图表。它仅绘制每个神经元的模型总数。因此,对于每个分类神经元变量,我只得到 1 个柱,但我应该得到两个。这是一个例子:pd.value_counts(df.Neurons).sort_index().plot(kind="bar", align="center", color="blue")
  • 请编辑您的问题 - 您无法在 cmets 中格式化代码。
  • 值得注意的是,每个类别的单独条形不是堆叠条形图(这是问题标题所要求的)。堆积条形图的每个类别的值在一个条形图中相互叠加。
  • 谢谢bsauce。我意识到我上面所说的可能具有误导性,但我希望能够将它们堆叠在一起或彼此相邻。感谢您的帮助。

标签: python pandas bar-chart categorical-data


【解决方案1】:

我不确定这是否是解决此问题的最理想解决方案,但经过深思熟虑后,我确实设法解决了问题。

ct = pd.crosstab(df.Option,df.Neurons)
ct.transpose().plot.bar(stacked=False)

【讨论】:

  • 你可以 pd.crosstab(df.Neurons,df.Option).plot.bar(stacked=False) 但我想这就是你需要的?
【解决方案2】:

根据您的评论,试试这个:

df.groupby('Option').Neurons.value_counts().unstack(0).plot.bar()

在此代码中,我们首先按选项分组,然后获取选项组中每个神经元值的值计数。然后,取消堆叠,这样一列 Option="Put" 和一列 Option="Call"。然后,使用这种格式的数据,您将获得所需的绘图。

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2018-05-09
    • 1970-01-01
    • 2021-12-11
    • 2020-11-03
    相关资源
    最近更新 更多