绘制一个熊猫数据框列的Matplotlib直方图,用点表示另一列的平均值

时间:2019-03-05 15:49:12

标签: python pandas matplotlib histogram

基本上有一个熊猫数据框,看起来像:

d = {'Percentage' : [8,20,24,27, 58], 'Assets' : [10,12,53,32,11]}

df = pd.DataFrame(d)

我想创建一个Percentage列的直方图,其频率为百分比落入bin的频率,

bins = [0,25,50,75,100]

a = sns.FacetGrid(df)

a = a.map(plt.hist, "Percentage", bins=bins)

但是现在我想在直方图中覆盖一个表示垃圾箱平均资产的点,这是我不能做的。

我知道我可以按各自百分比所属的bin来对资产列进行分组,然后计算均值并覆盖另一幅图,但是我觉得它们必须是另一种方式。

编辑:通过我所说的垃圾桶来澄清

1 个答案:

答案 0 :(得分:0)

直方图在这里可以使用,但是我认为自己计算和使用条形图会更容易-鉴于您也必须处理Assets

这个想法是,您需要确定每个数据点属于哪个bin。然后,您可以按bin和平均值分组以计算平均值Assets。实际上,seaborn处理得很好:

df['bins'] = pd.cut(df['Percentage'], bins=bins)
df['count'] = 1

fig, ax1 = plt.subplots()
sns.barplot(data=df, x='bins', y='count', estimator=np.sum, ax=ax1)

ax2 = ax1.twinx()
sns.pointplot(data=df, x='bins', y='Assets', color='m', join=False, ci=None, ax=ax2)

enter image description here