我正在使用“泰坦尼克号”数据集对Seaborn进行试验,并使用条形图来显示乘客类别中存活率最高的概率。
现在我想知道是否有更好的方法用Seaborn可视化这些数据?任何可视化的想法都是受欢迎的。
onStart
答案 0 :(得分:2)
要绘制每班中幸存的乘客比例,您可以执行以下操作:
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()
的默认相关方法是计算Pearson相关系数(r),这是根据Wikipedia和this stats prof via Quora计算二进制变量之间相关性的合适选择。
一种更具伸缩性的创建虚拟变量的方法,可以使用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)