【问题标题】:Creating Histogram with Additional Data Element使用附加数据元素创建直方图
【发布时间】:2021-06-23 23:23:09
【问题描述】:

我有一个数据框,其中汇总了不同类别的数量和值。我需要将其可视化以显示不同数量组下有多少类别,以及它们之前的总和值是多少。

要使用的示例数据框:

df = pd.DataFrame({'cat': ['A','B','C','D','E','F','G','H','I','J'],
                   'count': [5,10,50,20,3,18,28,93,42,31],
                   'value': [100,245,890,510,85,690,730,2470,1870,1180],
                  })

我使用这个创建了计数的直方图:

df.plot(kind='hist',y='count',bins=[0,20,40,60,80,100])

这将显示 'cat' 在 'count' 变量的不同组(类)中的分布。

现在,对于每个这样的类,我需要在同一张图表上显示总的“价值”。要么只是针对每个直方图条显示为数字的总和,要么是在同一图表(轴)右侧带有辅助 y 轴的线。

这将使我能够证明计数为(例如)0-20 的类别总共获得了 1220 的价值。 [值(A+B+E+F)]

另外,您可能会建议我是否应该使用其他图表来更好地可视化此语句,而不是直方图。

【问题讨论】:

  • 我可以使用轴上的坐标在轴上绘制特定值,并为这些坐标提供特定值。但是,当数据发生变化或直方图箱增加或减少时,这需要手动操作。有什么方法可以通过一个简单的命令或混合两个不同的图表来做到这一点?
  • 我发现在这里绘制一个经验累积分布函数可能是一个更好的选择。虽然我不知道这是什么。一旦我明白这一点,我会更新。

标签: python-3.x pandas dataframe matplotlib histogram


【解决方案1】:

我使用 pandas.cut() 方法手动创建 bin 并生成另一个数据帧,该数据帧是早期数据帧的聚合。

这是我能想到的最接近的。但我仍然没有清楚地了解我想要展示的内容。

df['Bins'] = pd.cut(df['count'],bins=range(0,70,10))
df1 = df.groupby('Bins').agg({'Bins':'count','value':'sum'})
df1.plot(kind='bar',subplots=True,figsize=(15,8))
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2012-11-04
    • 2022-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多