【问题标题】:Python histogram stacked with categorical data与分类数据堆叠的 Python 直方图
【发布时间】:2021-07-20 10:06:33
【问题描述】:

假设我有一个熊猫数据框,其中包含汽车价格和其他列中的一些功能,包括加热座椅。我正在努力绘制与汽车是否有加热座椅相关的汽车价格(1==True,0==False)。到目前为止,我已经开始使用它,但它不能正常工作。

cars[['Price','Heated Seats']].plot.hist(stacked=True)

我一直在寻找一段时间,但找不到一个简单的解决方案以及一种并排显示图表的方法。

【问题讨论】:

  • 请提供一些示例数据以及是否可以预期输出。遵循本指南可能有用stackoverflow.com/help/minimal-reproducible-example
  • 您是否尝试为每个价格段绘制一对加热/非加热条?
  • x 轴为价格,y 轴为汽车数量。有不同的价格点,目标是在不同汽车价格点的数量之上查看带加热座椅的汽车数量。

标签: python pandas matplotlib plot


【解决方案1】:

首先使用cut 创建价格点:

df = pd.DataFrame({'Price': np.random.randint(1000, size=100), 'Heated Seats': np.random.choice([1, 0, 0], size=100)})
df['Price Point'] = pd.cut(df.Price, bins=range(0, 1000, 100))

#     Price  Heated Seats Price Point
# 0     726             1  (700, 800]
# 1     257             1  (200, 300]
# ..    ...           ...         ...
# 98    809             1  (800, 900]
# 99    668             1  (600, 700]

然后groupby 价格点和unstack value_counts 绘制堆叠条:

df.groupby('Price Point')['Heated Seats'].value_counts().unstack().plot.bar(stacked=True)

【讨论】: