机器学习之数据预处理——缺失值

机器学习之数据预处理——缺失值

本文先给大家介绍Pandas进行数据预处理会用到哪些方法,之后再介绍缺失值的处理方法。

1.Pandas基础

import pandas as pd
df1=pd.read_csv(r'miss.csv',encoding='gbk')

机器学习之数据预处理——缺失值_第1张图片机器学习之数据预处理——缺失值_第2张图片机器学习之数据预处理——缺失值_第3张图片机器学习之数据预处理——缺失值_第4张图片机器学习之数据预处理——缺失值_第5张图片机器学习之数据预处理——缺失值_第6张图片机器学习之数据预处理——缺失值_第7张图片
机器学习之数据预处理——缺失值_第8张图片机器学习之数据预处理——缺失值_第9张图片
机器学习之数据预处理——缺失值_第10张图片机器学习之数据预处理——缺失值_第11张图片机器学习之数据预处理——缺失值_第12张图片机器学习之数据预处理——缺失值_第13张图片机器学习之数据预处理——缺失值_第14张图片
机器学习之数据预处理——缺失值_第15张图片
2.数据预处理——缺失值处理

机器学习之数据预处理——缺失值_第16张图片
机器学习之数据预处理——缺失值_第17张图片机器学习之数据预处理——缺失值_第18张图片机器学习之数据预处理——缺失值_第19张图片

import pandas as pd
import numpy as np
#生成服从“0~1”均匀分布的随机样本值
df=pd.DataFrame(np.random.randn(7,3))
df.loc[0:4,1]=np.NaN#构造缺失值
df.loc[0:2,2]=np.NaN#构造缺失值

机器学习之数据预处理——缺失值_第20张图片

#使用常数值来填充缺失值
df.fillna(0)
#使用变量来填充缺失值
a=1
df.fillna(a)
#使用特定字符来填充缺失值
df.fillna('unknown')

机器学习之数据预处理——缺失值_第21张图片

#参考上一行的值填充,设定填充几个
df.fillna(method="ffill")
df.fillna(method="ffill",limit=2)

机器学习之数据预处理——缺失值_第22张图片

#参考下一行的值填充,设定填充几个
df.fillna(method="bfill")
df.fillna(method="bfill",limit=2)

机器学习之数据预处理——缺失值_第23张图片

#使用属性的平均值来填充缺失值
df.fillna({1:np.mean(df.loc[0:6,1]),2:np.mean(df.loc[0:6,2])})

3.数据预处理——插值法

机器学习之数据预处理——缺失值_第24张图片

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(7,3),columns=("one","two","three"))
df.loc[1:4,"one"]=np.NaN#构造缺失值
df.loc[1:2,"two"]=np.NaN#构造缺失值
df.interpolate()

机器学习之数据预处理——缺失值_第25张图片

#插值法填充缺失值(前一个值和后一个值得平均数)
df.interpolate(method='values')

机器学习之数据预处理——缺失值_第26张图片

#如果index是时间
df.index=pd.date_range('20201001',periods=7)
df.interpolate(method='time')

机器学习之数据预处理——缺失值_第27张图片

import numpy as np
from scipy import interpolate
import pylab as pl

x=np.linspace(0,10,11)
#x=[  0.   1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]
y=np.sin(x)
xnew=np.linspace(0,10,101)
pl.plot(x,y,"ro")

for kind in ["nearest","zero","slinear","quadratic","cubic"]:#插值方式
    #"nearest","zero"为阶梯插值
    #slinear 线性插值
    #"quadratic","cubic" 为2阶、3阶B样条曲线插值
    f=interpolate.interp1d(x,y,kind=kind)
    # ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of first, second or third order)
    ynew=f(xnew)
    pl.plot(xnew,ynew,label=str(kind))
pl.legend(loc="lower right")
pl.show()

机器学习之数据预处理——缺失值_第28张图片

下一节学习线性回归法填补缺失值和拉格朗日插值法

编写打磨课件不易,走过路过别忘记给咱点个赞,小女子在此(❁´ω`❁)谢过!如需转载请注明。

参考文献:

1.《对比EXCEL轻松学习Python数据分析》

2.《Python数据分析与数据化运营》

3.https://blog.csdn.net/oxuzhenyi/article/details/77971330


你可能感兴趣的:(特征工程-缺失值处理,机器学习,python,机器学习,数据分析,数据挖掘)