第二章第一节 数据清洗及特征处理

2.1缺失值观察与处理

import numpy as np
import pandas as pd
tr=pd.read_csv('train.csv')
tr.isnull().sum()#查看每个特征缺失值个数

 

对Age列的数据的缺失值进行处理

tr['Age'].dropna()#删除缺失值
tr['Age'].fillna(0)#用0来填补缺失值

检索空缺值时,使用data['A'].isnull() 比较合适,若采用data['A']==np.nan,即使在缺失值位置也会返回False,因为np.nan是无法比较的,不能用于‘==’中对空值进行判断。

2.2重复值观察与处理

tr[tr.duplicated()]#按行查看重复值
tr.drop_duplicates()#删除重复值

2.3特征观察与处理

分箱操作就是将连续数据进行分组。

pd.cut(tr['Age'],5,labels=['1','2','3','4','5'])
#将Age平均分箱成5个年龄段,并分别用类别变量12345表示
pd.cut(tr['Age'],[0,5,15,30,50,80],labels=['1','2','3','4','5'])
#将Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
pd.qcut(tr['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels=['1','2','3','4','5'])
#将Age按10% 30% 50% 70% 90%五个年龄段,并用分类变量12345表示
tr['Sex'].value_counts()
tr['Sex'].unique()
#查看Sex变量名及种类的两种方法

将文本变量Sex用数值1和2来表示的两种方法

tr['Sex_num']=tr['Sex'].replace(['male','female'],[1,2])
tr['Sex_num']=tr['Sex'].map({'male': 1, 'female': 2})

将文本变量用one-hot编码表示 ,将变量变为数字的,稀疏的。能唯一地表示数据的每一个特征。

for feat in ["Age", "Embarked"]:
#     x = pd.get_dummies(tr["Age"] // 6)
#     x = pd.get_dummies(pd.cut(tr['Age'],5))
    x = pd.get_dummies(tr[feat], prefix=feat)
    tr = pd.concat([tr, x], axis=1)
    #tr[feat] = pd.get_dummies(tr[feat], prefix=feat)
    
tr.head()

 采用正则表达式从纯文本Name特征里提取出Titles的特征,如Mr,Miss,Mrs等

tr['Title'] = tr.Name.str.extract('([A-Za-z]+)\.', expand=False)

总结:在第二章第一节中学习到了更多的数据处理方法,如对缺失值和重复值的处理以及通过分箱操作来分组,将文本变量用数字来替代。最后的one-hot编码因为以前没有接触过,所以还有一些疑问,需要多找些资料来学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值