机器学习之数据预处理——缺失值
本文先给大家介绍Pandas进行数据预处理会用到哪些方法,之后再介绍缺失值的处理方法。
1.Pandas基础
import pandas as pd
df1=pd.read_csv(r'miss.csv',encoding='gbk')
2.数据预处理——缺失值处理
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#构造缺失值
#使用常数值来填充缺失值
df.fillna(0)
#使用变量来填充缺失值
a=1
df.fillna(a)
#使用特定字符来填充缺失值
df.fillna('unknown')
#参考上一行的值填充,设定填充几个
df.fillna(method="ffill")
df.fillna(method="ffill",limit=2)
#参考下一行的值填充,设定填充几个
df.fillna(method="bfill")
df.fillna(method="bfill",limit=2)
#使用属性的平均值来填充缺失值
df.fillna({1:np.mean(df.loc[0:6,1]),2:np.mean(df.loc[0:6,2])})
3.数据预处理——插值法
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()
#插值法填充缺失值(前一个值和后一个值得平均数)
df.interpolate(method='values')
#如果index是时间
df.index=pd.date_range('20201001',periods=7)
df.interpolate(method='time')
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()
下一节学习线性回归法填补缺失值和拉格朗日插值法
编写打磨课件不易,走过路过别忘记给咱点个赞,小女子在此(❁´ω`❁)谢过!如需转载请注明。
参考文献:
1.《对比EXCEL轻松学习Python数据分析》
2.《Python数据分析与数据化运营》
3.https://blog.csdn.net/oxuzhenyi/article/details/77971330
。
。