python数据预处理:补充缺失数据

python数据预处理:补充缺失数据,第1张

  1. 算法处理的是数据,不是字符串,也不是布尔值True或者False。

  2. 不可以删除数据。可以求平均值

  3. 对于字符串类型以及布尔类型的分类数据。需要转换成0,1,2这样的数字索引。


import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset=pd.read_csv('Data2.csv')

X=dataset.iloc[:,:-1].values# 取每一行的前3列
y=dataset.iloc[:,3].values# 取所有行的最后一列

# 用平均数补充缺失值
from sklearn.impute import SimpleImputer
imputer=SimpleImputer(missing_values=np.nan,strategy="mean")
imputer=imputer.fit(X[:,1:3])
X[:,1:3]=imputer.transform(X[:,1:3])```

使用数据如下:

Country Age Salary Purchased
0 France 44.0 72000.0 No
1 Spain 27.0 48000.0 Yes
2 Germany 30.0 54000.0 No
3 Spain 38.0 61000.0 No
4 Germany 40.0 NaN Yes
5 France 35.0 58000.0 Yes
6 Spain NaN 52000.0 No
7 France 48.0 79000.0 Yes
8 Germany 50.0 83000.0 No
9 France 37.0 67000.0 Yes

直接对字符编码成1,2,3的缺点

本来平等的字符串,变成1,2,3之后,好像有先后或者大小顺序了。这不太好,所以要用onehot编码。

#直接编码成数字
from sklearn.preprocessing import LabelEncoder
labelencoder_y=LabelEncoder()
y=labelencoder_y.fit_transform(y)

labelencoder_X=LabelEncoder()
X[:,0]=labelencoder_X.fit_transform(X[:,0])

# 改成onehot编码,只对第一列就可以
#onehot编码
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
onehotencoder = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder = 'passthrough')

X = onehotencoder.fit_transform(X)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/737525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存