如何从分组数据创建直方图

时间:2016-01-19 14:09:01

标签: python pandas matplotlib histogram

我试图从pandas中的分组数据创建直方图。

到目前为止,我能够创建标准线图。但我无法弄清楚如何做同样的直方图(条形图)。我希望获得2个年龄直方图,其中包括那些在泰坦尼克号迷恋中幸存下来并且没有完成的人 - 看看年龄分布是否存在差异。

来源数据: https://www.udacity.com/api/nodes/5454512672/supplemental_media/titanic-datacsv/download

到目前为止我的代码:

import pandas as pn
titanic = pn.DataFrame.from_csv('titanic_data.csv')

SurvivedAge= titanic.groupby(['Survived','Age']).size()
SurvivedAge=SurvivedAge.reset_index()
SurvivedAge.columns=['Survived', 'Age', 'Num']
SurvivedAge.index=(SurvivedAge['Survived'])
del SurvivedAge['Survived']

SurvivedAget=SurvivedAge.reset_index().pivot('Age', 'Survived','Num')

SurvivedAget.plot() 

当我试图从这个数据集中绘制直方图时,我得到了奇怪的结果。

SurvivedAget.hist()

我很感激你的帮助。

1 个答案:

答案 0 :(得分:3)

你可以:

titanic = pd.read_csv('titanic_data.csv')
survival_by_age = titanic.groupby(['Age', 'Survived']).size().unstack('Survived')
survival_by_age.columns = ['No', 'Yes']
survival_by_age.plot.bar(title='Survival by Age')

得到:

enter image description here

你可以进一步tweak。您还可以合并小数年龄,以便您可以使用整数索引,或者bin将数据称为5年龄跨度,以获得更加用户友好的输出。然后有seaborn有各种类型的分布图。