我正在处理从网站上获得的Titanic数据集: https://public.opendatasoft.com/explore/dataset/titanic-passengers/table/?flg=fr
我想显示每个幸存的班级的男性和女性人数(是或否)。
首先,我使用以下方法获得了全部男性和女性人数:
bysex=data1['Sex'].value_counts()
print(bysex)
这给了我这些结果:
male 577
female 314
Name: Sex, dtype: int64
结果表明,男性人数多于女性人数。
但是当我使用seaborn使用以下代码显示每个幸存班级的男女人数时:
plot1 = sns.FacetGrid(data1, col='Survived')
plot1.map(sns.countplot,'Sex')
然后我得到以下结果: enter image description here
此处显示,女性人数大于男性人数,对于没有幸存阶级的女性人数(大约450)甚至大于女性总数(314)。
这怎么可能?
答案 0 :(得分:0)
我认为映射存在问题。 在左图中,“性”互换了。
data1.loc[data1["Survived"] == "No", 'Sex'].value_counts()
male 468
female 81
Name: Sex, dtype: int64
第二个图是正确的。
data1.loc[data1["Survived"] == "Yes", 'Sex'].value_counts()
female 233
male 109
Name: Sex, dtype: int64
另一方面,当您使用
ax = sns.countplot(x="Survived", hue="Sex", data=data1)
您得到正确的结果。