距离上一篇文章更新刚刚看了一下,大概22天前了,因为这段时间家里以及学业上的事比较忙,就耽搁得久了,于是今天我又双双缀缀来更新啦:)本次Python数据分析用到的工具:Anaconda,Python3.7
一、分析目的
探索泰坦尼克号邮轮上生存率与其他因素(性别、客舱等级、年龄等)之间的关系
二、理解数据
2.1.数据导入
将下载好的数据集导入分析工具,观察该数据集的内容以及质量
2.1.1.导入相关库
2.1.2.数据导入
2.1.3.理解数据
2.1.4.注意事项
在数据导入时可能会出现如下报错:
FileNotFoundError: File b'E:\titanicdata\train.csv' does not exist
解决方法:
Windows下的路径为:E:\titanicdata\train.csv
应将 data_train = pd.read_csv("E:\titanicdata\train.csv"
改为: data_train = pd.read_csv("E:\\titanicdata\\train.csv")
或 data_train = pd.read_csv("E:/titanicdata/train.csv")
或 data_train = pd.read_csv(r"E:\titanicdata\train.csv"
原因如下:反斜杠\是转义字符,想表达\请用\\
三、数据清洗
3.1.选择子集
表中的数据都已筛选,这里不用操作
3.2.列名重命名
这里笔者认为英文更加直观,即不更改。若需要更改列名,Python命令如下:
###方法1:
df.rename(index=str, columns={"A": "a", "B": "c"},inplace=True)
将表格内的A、B两列的列名分别改为了a、c;
###方法2:
df1.reindex(index=['a','b','c','d'],columns=['one','two','three','four'])
将表格的列名由abcd改为one。two,three,four;
3.3.缺失值处理
3.3.1.查看缺失值情况(两种方法)方法一:方法二:使用missingno库
注:没安装的还是先安装哈
3.3.2.处理数值型缺失值
对于数值型数据的缺失值处理一般采用该列数据的均值或者中位数进行替换。
3.3.3.处理"分类型"缺失值
分类型数据:Embarked,利用该列出现频数最多的数据(众数)来填充。从下图可以看出"S"出现次数最多
进行缺失值填充并查看处理效果
四、数据可视化
4.1.单因素分析
4.1.1.人数的生还率与死亡率间的比较
共891人,其中生还率与死亡率如下:
结论:这891名乘客中,生还和未生还的比率分别为 38% 和 62%。
4.1.2.生还率与Pclass(舱位等级)的关系不同级别客舱人数分布可视化展示舱位与生还率的关系
结论:头等舱的生还率最大,达到了0.6以上,三等舱的生还率最低,在0.3以下
4.1.3.性别与生还率的关系
结论:女性幸存者远远大于男性幸存者
4.1.4.综合考虑性别、舱位等级与幸存率之间的关系
结论:1,2,3等舱的女性生还率都大于男性生还率,且在1等舱中,男、女生还率都较高,1,2等舱的女性生还率
较为接近
4.1.5.年龄与生还率间的关系将所有年龄段划分为5等份各个年龄段与生还率间的关系
结论:年龄段在(0.34,16.336]的人生还率最高,其次是年龄段在(48.168,64.084]生还率第二,生还率最低的年
龄段是(64.084,80.0]这个年龄段的人。
4.1.6.登船港口与生还率的关系
结论:在C上船的生还率最高,S最低
4.2.多因素分析
4.2.1.年龄、性别、舱位与生还率间的关系可视化
sns.FacetGrid(data=titanic_df,row="agegroup",aspect=2.5)\
.map(sns.pointplot,"Pclass","Survived","Sex",hue_order=["male","female"],ci=None,palette="deep", markers=["^", "o"], linestyles=["-", "--"]).add_legend()
plt.show()
五、总结样本数量为891人,其中生还者342 人,生还率为 38%,死亡率62%
从舱位等级来看,一等舱的生还率最高,占比0.629630;三等舱生还率最低,仅为0.242363
从性别上来看,女性的生还率远高于男性,占比0.742038,男性生还率为0.188908
从年龄段划分来看,(0.34, 16.336]这个年龄段生还率最高,其次是(48.168, 64.084],生还率最低的年龄段是(64.084, 80.0]