Python机器学习库sklearn数据预处理,数据集构建,特征选择

# 显示数据的缺失值
import pandas as pd
from io import StringIO
 
csv_data = '''A,B,C,D
1.0,2.0,3.0,4.0
5.0,6.0,,8.0
10.0,11.0,12.0,'''
# csv_data = unicode(csv_data)
df = pd.read_csv(StringIO(csv_data))
print(df)

1.缺失值处理

df.isnull().sum()  #isnull判断每个位置是否有NaN,计算每一个特征中:有几个样本在该特征上存在缺失 

1.直接删除缺省值多的样本或者特征

df.dropna()  #删除存在缺失值的样本

df.dropna(axis=1)#删除存在缺失值的特征

df.dropna(how='all')  #山所有特征都为缺失的样本

df.dropna(thresh=4)  #删除特征数少于参数指定个数的样本

df.dropna(subset=['C'])  #删除在指定特征处有缺失值的样本

2.处理类别型数据
import pandas as pd
df=pd.DataFrame([['green','M',10.1,'class1'],
                ['red','L',13.5,'class2'],
               ['blue','XL',15.3,'class1']])
df.columns=['color','size','price','classlabel']
df

1)序列特征映射
size_mapping={'XL':3,'L':2,'M':1}
df['size']=df['size'].map(size_mapping)#将size特征列的XL等字符替换成字典
size_mapping#映射对应的数字
df

2)类别编码
import numpy as np
class_mapping={label:idx for idx,label in enumerate(np.unique(df['classlabel']))}
#enumerate将列表参数映射成带序号的元组对
#class_mapping作用是找出出现一个新classlabel时的index
class_mapping

用映射字典将分类标签转换为整数

df['classlabel']=df['classlabel'].map(class_mapping)
df

创建反向映射,将转换后的分类标签匹配到原来的字符串

inv_class_mapping={v:k for k,v in class_mapping.items()}
df['classlabel']=df['classlabel'].map(inv_class_mapping)
df

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值