基本上有一个熊猫数据框,看起来像:
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来对资产列进行分组,然后计算均值并覆盖另一幅图,但是我觉得它们必须是另一种方式。
编辑:通过我所说的垃圾桶来澄清
答案 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)