最适合用Seaborn可视化概率的图

时间:2017-10-08 20:33:41

标签: python matplotlib dataframe seaborn

我正在使用“泰坦尼克号”数据集对Seaborn进行试验,并使用条形图来显示乘客类别中存活率最高的概率。

现在我想知道是否有更好的方法用Seaborn可视化这些数据?任何可视化的想法都是受欢迎的。

onStart

enter image description here

1 个答案:

答案 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()

enter image description here

如果您对乘客班级和生存之间的相关性感兴趣(根据@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),这是根据Wikipediathis stats prof via Quora计算二进制变量之间相关性的合适选择。

enter image description here

更新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)