繁体   English   中英

Pandas中分组值的堆积直方图

[英]Stacked histogram of grouped values in Pandas

我正在尝试使用此代码创建分组值的堆叠直方图:

titanic.groupby('Survived').Age.hist(stacked=True)

但我得到的这个直方图没有叠条。

在此输入图像描述

如何在不必直接使用matplotlib或迭代组的情况下将柱状图的条形图堆叠起来?

使用的数据集: https//www.udacity.com/api/nodes/5454512672/supplemental_media/titanic-datacsv/download

到目前为止,我发现的最好方法是使用组创建一个新的数据框:

pd.DataFrame({'Non-Survivors': titanic.groupby('Survived').get_group(0).Age,
              'Survivors':   titanic.groupby('Survived').get_group(1).Age})
            .plot.hist(stacked=True)

在此输入图像描述

改善答案,最好的方法是:

titanic.pivot(columns='Survived').Age.plot(kind = 'hist', stacked=True)

在此输入图像描述

我定义了一个利用np.histogram的自定义函数
另请注意,直方图组是在'Survived'组中计算'Survived'

def hist(x):
    h, e = np.histogram(x.dropna(), range=(0, 80))
    e = e.astype(int)
    return pd.Series(h, zip(e[:-1], e[1:]))

kw = dict(stacked=True, width=1, rot=45)
titanic.groupby('Survived').Age.apply(hist).unstack(0).plot.bar(**kw)

在此输入图像描述

这个解决方案使用条形图而不是直方图,但我认为它可以为您提供所需的内容。

titanic.groupby(['Survived', pd.cut(titanic['Age'], np.arange(0,100,10))])\
       .size()\
       .unstack(0)\
       .plot.bar(stacked=True)

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM