【发布时间】:2019-11-10 16:07:33
【问题描述】:
我的数据如下:
Survived,Pclass,Name,Sex
0,3,"Braund, Mr. Owen Harris",male
1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female
1,3,"Heikkinen, Miss. Laina",female
1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female
0,3,"Allen, Mr. William Henry",male
0,3,"Moran, Mr. James",male,
当我试图比较头等舱的幸存者人数和性别时,结果很奇怪。
当我尝试这样做时
data[(data['Sex']=='female') & (data['Pclass']== 1)]['Survived'].value_counts().plot(kind='bar')
plt.legend()
plt.xticks(np.arange(2), rotation=0)
plt.title("Male and female survivors in first class")
plt.show()
这表明几乎所有头等舱的女性都活了下来(这是正确的)
但是当我尝试这样做时:
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
data = pd.read_csv('titanic_data/train.csv')
males = data[(data['Sex']=='male') & (data['Pclass'] == 1)]['Survived'].value_counts()
females = data[(data['Sex']=='female') & (data['Pclass']== 1)]['Survived'].value_counts()
plt.bar(range(len(females)), females, align='edge', width=-0.4, label='Female', color='red', alpha=0.5)
plt.bar(range(len(males)), males, align='edge', width=0.4, label='Male', color='blue', alpha=0.5)
plt.legend()
plt.xticks(np.arange(len(males)), rotation=0)
plt.title("Male and female survivors in first class")
plt.show()
这表明几乎所有女性都死了(这是错误的!)
【问题讨论】:
-
它对我来说很好用。我得到了 2 个活着的女性和 0 个活着的男性。试试
print (females),你会看到 2 -
无法重现您的问题。我有 0 男 2 女幸存。
-
我认为问题在于可视化。添加
plt.xticks(np.arange(4), rotation=0),您将看到与df.plot相似的条形 -
我更新了问题。打印后(女性)我看到“1 - 94, 0 - 3”。这不是我在条形图上看到的。
标签: python pandas matplotlib data-science