Python 数据分析 泰坦尼克经典案例

使用Python的sklearn数据包做数据分析经典案例泰坦尼克预测
摘要由CSDN通过智能技术生成

数据读取

分别读取两个csv文件中的数据合并到一个数组中

train = pd.read_csv('data/train.csv')  
test = pd.read_csv('data/test.csv')  
PassengerId = test['PassengerId']  
all_data = pd.concat([train, test], ignore_index=True)

数据可视化分析

通过打印alldata数组,可以看到test和train合并之后的数组数据
在这里插入图片描述
再通过discribe函数看出整体数据的特征及分布
在这里插入图片描述
由图可知数据集初步可分为11个特征和1个标签,且各特征值的总和、均值、标准差、最值、上下四分位点一目了然。
查看变量类型以及数量,分析得:
1.full数据集共1309行
2.浮点型变量有3个,整型变量4个,字符型5个
3.Survived列为标签,1代表获救,0代表遇难
4.Age\Cabin\Embarked\Fare\Name\Parch\PassengerId\Pclass\Sex\SibSip\Ticket11列为特征
5.Age\Cabin\Embarked\Fare数据有缺失
接下来将train中的数据可视化,分析几个特征和幸存之间的关系

可视化处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

填充缺失数据

1.Age Feature:Age缺失量为263,缺失量较大,用Sex, Title, Pclass三个特征构建随机森林模型,填充年龄缺失值。特征提取并转化。

age_df = all_data[['Age', 'Pclass', 'Sex', 'Title']]  
age_df = pd.get_dummies(age_df)  
known_age = age_df[age_df.Age.notnull()].as_matrix()  
unknown_age = age_df[age_df.Age.isnull()].as_matrix()  
y = known_age[:, 0]  
X = known_age[:, 1:]  
rfr = RandomForestRegressor(random_state=0, n_estimators=100, n_jobs=-1)  
rfr.fit(X, y)  
predictedAges = rfr.predict(unknown_age[:, 1::])  
all_data.loc[(all_data.Age.isnull()), 'Age'] = predictedAges  

2.Embarked Feature:Embarked缺失量为2,缺失Embarked信息的乘客的Pclass均为1,且Fare均为80,因为Embarked为C且Pclass为1的乘客的Fare中位数为80,所以缺失值填充为C。

all_data['Embarked'] = all_data['Embarked'].fillna('C')  

3.Fare Feature:Fare缺失量为1,缺失Fare信息的乘客的Embarked为S,Pclass为3,所以用Embarked为S,Pclass为3的乘客的Fare中位数填充。

fare=all_data[(all_data['Embarked'] == "S") & (all_data['Pclass'] == 3)].Fare.median()  
all_data['Fare']=all_data['Fare'].fillna(fare)  

特征选择

把姓氏相同的乘客划分为同一组,从人数大于一的组中分别提取出每组的妇女儿童和成年男性。

all_data['Surname']=all_data['Name'].apply(lambda x:x.split(',')[0].strip())  
Surname_Count = dict(all_data['Surname'].value_counts())  
all_data['FamilyGroup'] = all_data['Surname'].apply(lambda x:Surname_Count[x])  
Female_Child_Group=all_data.loc[(all_data['FamilyGroup']>=2) & ((all_data['Age']<=12) | (all_data['Sex']
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值