我正在试验使用“泰坦尼克号”数据集的“海运”,并使用一张条形图来可视化乘客的等级,以获得最高的生存概率。
现在,我想知道是否有更好的方式来可视化这样的数据与海运?任何可视化的想法都是欢迎的。
df2.groupby(['Survived', 'Pclass']).size().unstack().plot(kind='bar', stacked=True)
发布于 2017-10-13 20:44:33
要绘制出每一班幸存乘客的比例,您可以做以下操作。
import seaborn as sns
sns.set(style='ticks', context='talk')
titanic = sns.load_dataset('titanic')
ax = sns.pointplot('pclass', 'survived', data=titanic, join=False, palette='Set2')
ax.set_ylim(0, 1)
sns.despine()
如果您对乘客级别与生存之间的相关性感兴趣(如@cᴏʟᴅsᴘᴇᴇᴅ中的评论所示),您可以发现如下所示:
# Create binary dummy variables for each passenger class
titanic['pclass1'] = titanic['pclass'] == 1
titanic['pclass2'] = titanic['pclass'] == 2
titanic['pclass3'] = titanic['pclass'] == 3
# Create correlation matrix only for the columns of interest
plot_data = (titanic[['survived', 'pclass1', 'pclass2', 'pclass3']]
.corr()
.loc['survived', 'pclass1':]
.to_frame()
.T)
# Plot the correlation coefficients
ax = sns.barplot(data=plot_data)
ax.axhline(0, color='black')
sns.despine()
.corr()
的默认相关方法是计算皮尔逊相关系数(r),这是计算维基百科和这是来自Quora的数据二元变量间相关性的合适选择。
更新2017-10-18
一种更可伸缩的方法来创建虚拟变量来使用pd.get_dummies()
。因此,可以在没有单独的列赋值的情况下生成plot_data
:
plot_data = (pd.concat(
[pd.get_dummies(titanic['pclass'], prefix='pclass', prefix_sep=''),
titanic['survived']], axis=1)
.corr()
.loc['survived', 'pclass1':]
.to_frame()
.T)
https://stackoverflow.com/questions/46635777
复制相似问题