我试图从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()
我很感激你的帮助。
答案 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')
得到:
你可以进一步tweak。您还可以合并小数年龄,以便您可以使用整数索引,或者bin将数据称为5年龄跨度,以获得更加用户友好的输出。然后有seaborn有各种类型的分布图。