You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用seaborn创建按登船港口划分的乘客生存情况分组柱状图

错误原因

你当前的用法中,sns.barplot()默认会对y字段做均值聚合,所以输出的是不同登船点的乘客平均存活率,不是你需要的存活/死亡人数统计。同时你将y和hue参数都设为Survived,逻辑也完全不匹配需求。

解决方案

方案1:直接使用计数专用的sns.countplot()(更简便)

该函数专门用来统计分组的样本数量,不需要额外处理源数据,直接替换绘图函数即可:

df_drop_Emb = df_titanic.dropna(subset= ["Embarked"])
plt.figure(figsize=(10, 8))
# 替换barplot为countplot,不需要传入y参数,默认统计样本数量
sns.countplot(x="Embarked", 
            hue="Survived", 
            data=df_drop_Emb)
plt.ylabel("人数", size=14)
plt.xlabel("登船港口", size=14)
plt.title("各登船港口存活/死亡乘客数量", size=18)
plt.show()

方案2:坚持使用sns.barplot()的话,先手动做分组聚合统计人数

先按登船点、存活状态两个维度分组统计人数,再把统计得到的人数字段传给y参数即可:

df_drop_Emb = df_titanic.dropna(subset= ["Embarked"])
# 分组统计各分类下的人数
count_df = df_drop_Emb.groupby(["Embarked", "Survived"], as_index=False).size()
plt.figure(figsize=(10, 8))
sns.barplot(x="Embarked", 
            y="size", # y参数设置为统计得到的人数字段
            hue="Survived", 
            data=count_df)
plt.ylabel("人数", size=14)
plt.xlabel("登船港口", size=14)
plt.title("各登船港口存活/死亡乘客数量", size=18)
plt.show()

内容的提问来源于stack exchange,提问作者mert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:36:05