python数据应用与分析的课后答案(python数据分析超简单入门——项目实践篇)python教程 / python在数据科学中的实践教程...

wufei123 发布于 2024-06-28 阅读(11)

关注头条号,私信回复资料会有意外惊喜呦………………最后一张照片有资料呦。

| 导语 适用于数据分析小白们~ ------ up主也是小白一枚,大加一起交流哈写在前面的话:1、项目来源于up主自学udacity中的一个项目实践,up主自身能力不足,因此文章很浅显2、泰坦尼克数据集是kaggle中一个好的可选数据集,网上有很多基于此数据集的分析&存活预测实践的文章

3、要有点python基础哦~ 没有也没关系,先下载软件跑跑代码也是好的话不多说,这就开始~

一、前期准备数据下载:https://d17h27t6h515a5.cloudfront.net/topher/2016/December/584bcec3_titanic-data/titanic-data.csv

软件准备:python 2.7 (安装 pandas 库) 多嘴说一句,懒得装各种库各种包的童鞋,请直接下载anaconda另外推荐jupyter,代码+报告结合神器pandas --- 用过的人都说好用,没用过的小伙伴赶紧开始尝试吧~~。

二、分析开始1、导入数据&查看基本信息import numpy as npimport pandas as pdimport matplotlib.pyplot as plt data_src=titanic-data.csvdf = pd.read_csv(data_src,header=0) # 导入数据print df.info() # 查看数据集的基本信息,print df.describe() # 查看数据的摘要信息print df.head() # 查看前几行数据,方便了解数据具体情况

以 “ print df.info() ” 为例,运行后输出如下结果:

其中:PassengerId => 乘客IDSurvived => 是否生还Pclass => 乘客等级(1/2/3等舱位)Name => 乘客姓名Sex => 性别Age => 年龄SibSp => 堂兄弟/妹个数

Parch => 父母与小孩个数Ticket => 船票信息Fare => 票价Cabin => 客舱Embarked => 登船港口从数据集的基本信息可以看出,Age \ Cabin \ Embarked 是存在缺失值的,其中Cabin字段缺失值过多。

对于少量缺失值的情况,常用的方法是去除和补齐,数值型的数据是可以根据统计学的方法或者机器学习的方法将其进行补齐的对于存在大量缺失值的字段,应衡量此字段的重要程度与修复代价之间的权重up主是果断的没有再考虑这个字段了。

2、分析 乘客存活率与各单变量之间的关系 先看下全部样本的存活率是多少:survived_rate = float(df[Survived].sum()) / df[Survived].count()print survived_rate: ,survived_rate

运行代码输出:survived_rate: 0.383838383838 【舱位】再看下 舱位和存活率之间的关系:x=[df[(df.Pclass==1)][Pclass].size,df[(df.Pclass==2)][Pclass].size,df[(df.Pclass==3)][Pclass].size] y=[df[(df.Pclass==1) & (df.Survived == 1)][Pclass].size,\ df[(df.Pclass==2) & (df.Survived == 1)][Pclass].size, \ df[(df.Pclass == 3) & (df.Survived == 1)][Pclass].size] print 1 Pclass number: + str(x[0]) + + 1 Pclass survive: + str(y[0]) + + 1 Pclass survive rat:, float(y[0]) / x[0] print 2 Pclass number: + str(x[1]) + + 2 Pclass survive: + str(y[1]) + + 2 Pclass survive rat:, float(y[1]) / x[1] print 3 Pclass number: + str(x[2]) + + 3 Pclass survive: + str(y[2]) + + 3 Pclass survive rat:, float(y[2]) / x[2] Pclass_survived_rate = (df.groupby([Pclass]).sum() / df.groupby([Pclass]).count())[Survived] Pclass_survived_rate.plot(kind=bar) plt.title(Pclass_survived_rate) plt.show()

输出结果如下:

可以很清楚的看出,舱位与存活率之间的关系三等舱的乘客们很惨~【性别】可以再简单看看性别的影响:Sex_survived_rate = (df.groupby([Sex]).sum() / df.groupby([Sex]).count())[Survived] Sex_survived_rate.plot(kind=bar) plt.title(Sex_survived_rate) plt.show() 。

【年龄】数据集里面的年龄是一个数值型变量,先按照未处理的裸数据来绘图Age_survived_rate=(df.groupby([Age]).sum()/df.groupby([Age]).count())[Survived] Age_survived_rate.plot() plt.title(Age_survived_rate) plt.show()

得出的结果特别难懂对于连续型数值变量,可以先做特征离散化,将年龄分布在各个年龄段中,效果就好多了呢~这里引出了特征工程中的概念---离散化最近up主刚上了一届特征工程的课,等待up主的课后笔记吧~age_clean_date=df[~np.isnan(df[Age])] #去除年龄数据中的NaN ages=np.arange(0,81,5) #0~80岁,每5岁一段(年龄最大80岁) age_cut=pd.cut(age_clean_date.Age,ages) age_cut_grouped=age_clean_date.groupby(age_cut) age_Survival_Rate=(age_cut_grouped.sum()/age_cut_grouped.count())[Survived] #计算每年龄段的幸存率 age_Survival_Rate.plot(kind=bar) plt.title(Age_group_survived_rate) plt.show()

感兴趣的小伙伴可以多尝试几个变量,看看能不能找到更有趣的结论哦~3、分析 乘客存活率与复合变量之间的关系一个数据表象,往往是多个因素影响的结果,其中多个因素的影响力各不同(可以稍微联想主成份分析的概念)。

因此复合变量的分析也是必不可少的哦~ 单变量中舱位和性别对存活率的影响都很大,up主好奇到底是哪一个主要决定了乘客能否登上救生船,因此就对舱位和性别整合为复合变量,做了分析Pclass_Sex_survived_rate=(df.groupby([Sex,Pclass]).sum()/df.groupby([Sex,Pclass]).count())[Survived] Pclass_Sex_survived_rate.plot(kind=bar) plt.title(Pclass_Sex_survived_rate) plt.show() 。

结果发现三等舱的女性存活率 高于 一等舱的男性存活率可见当时的绅士风度啊!很多人在问,学习Python读什么书,这其实是一个非常通用的问题,学习分为三种方式:看书、上课,而读书学习是最实惠也是最高效的一种,小编整理了一些Python高分书籍给大家,从0基础到高级适合不同学习阶段,希望大家学习愉快。

获取方式:点击小编头像,关注后私信回复“资料”即可下载

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻969