Python pandas数据预处理

2020-03-14  本文已影响0人  wangsb_2020

机器学习中学习数据的首要任务是数据预处理

1. 数据缺失值处理

不同情况下的数据缺失问题,可以使用不同发方法:

#生成带有缺失值的数据
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6,5), columns=list('ABCDE'))
df.iloc[2:4,2:4] = np.nan
df.iloc[1,0:2] = np.nan
print(df)
#1.针对数据先使用df.isnull()检查是否有缺失值
print(df.isnull())

#2.使用参数以字典的方式对特征A进行缺失值填补
df.fillna({'A':0.50}, inplace=True)
print(df['A'])

#3.使用向后插补的方法进行填充
print(df['B'].fillna(method="bfill"))  #向后插补

#4.使用向前插补的方法进行填充
print(df['C'].fillna(method="ffill"))  #向前插补

#5.使用某列的均值填补缺失值
df['D'][df['D'].isnull()] = df['D'].mean()
print(df['D'])
image.png
image.png
2. 数据标准化和LatelEncoder
from sklearn.preprocessing import LabelEncoder,StandardScaler
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
Iris = pd.read_csv('IRIS.csv')
print(Iris.head())

#作箱线图
Iris.boxplot()
plt.title('标准化前BoxPlot')
plt.show()

#对四个特征进行标准化
scaler = StandardScaler(with_mean=True, with_std=True)
Iris.iloc[:,0:4] = scaler.fit_transform(Iris.iloc[:,0:4])
Iris.boxplot()
plt.title('标准后BoxPlot')
plt.show()

#数据集species或Name类别是字符串,使用LabelEncoder对重新编码:
le = LabelEncoder()
Species = le.fit_transform(Iris['Name'])
print(Species)
#从结果看字符串已经使用0,1,2三种数字分别代替并进行了重新编码,方便以后建模使用。
image.png
image.png
3.数据的非线性特征生成
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
X = np.arange(8).reshape(4,2)
print(X)
pf = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
# degree控制多项式的度,即最多能有几个特征变量的乘积
# interaction_only是否保留交叉项,默认为False
# include_bias是否有常数项,默认为True
X1 = pf.fit_transform(X)
print(X1)
上一篇下一篇

猜你喜欢

热点阅读