如何用python删除异常值,python剔除异常数据
数据清理python有三种处理缺失值的方法:删除、不处理和插值数据。
有五种数据插值:
1)通过平均值、中值和众数进行插值
2)使用固定值进行插值
3)最近插值
4)回归方法
5)插值法
主要的插值方法有jxdgb插值、拉格朗日插值多项式插值、埃尔米特插值、分段插值、样条插值等。
本文主要介绍拉格朗日插值多项式:
对数学得好的可以看看拉格朗日插值多项式的数学公式,不感兴趣的可以跳过后续的python代码。
拉格朗日插值多项式是以18世纪法国数学家约瑟夫拉格朗日的名字命名的多项式插值方法。拉格朗日插值多项式可以找一个多项式,这个多项式正好取每个观测点的观测值。
从数学上讲,对于平面上已知的n个点,可以求出一个n-1次多项式y=a _ { 0 } a _ { 1 } x a _ { 2 } x 2.a _ {n-1} x n-1,这样多项式曲线就可以通过这n个点,从而找出缺失的值并补上。
已知的n点n-1次多项式为:y=a _ { 0 } a _ { 1 } x a _ { 2 } x 2 a _ { n-1 } x n-1。
代入n个点的坐标(x _ {1},y _ {1}),(x _ {2},y _ {2}),(x _ {n},y _ {n})转换成多项式函数,并得到
y _ { 1 }=a _ { 0 } a _ { 1 } x _ { 1 } a_{2}x_{1}^2 a_{n-1}x_{1}^n-1
y _ { 2 }=a _ { 0 } a _ { 1 } x _ { 2 } a_{2}x_{2}^2 a_{n-1}x_{2}^n-1
y _ { n }=a _ { 0 } a _ { 1 } x _ { n } a_{2}x_{n}^2 a_{n-1}x_{n}^n-1
求解拉格朗日插值多项式,如下所示:
l(x)=y _ { 1 } \ frac {(x-x _ { 2 })(x-x _ { 3 })(x-x _ { n })} {(x _ { 1 }-x _ { 3 })(x _ { 1 }-x _ { n })} y _ { 2 } \ frac {(x-x _ { 2 })(x-x _ { 3 })(x-x _ { n })} {(x _)
将缺失值的函数值对应的点代入插值多项式,即可得到趋势值的近似值L(x)。
接下来是本文的核心部分,好累。
#拉格朗日插值代码
导入熊猫作为pd #导入数据分析库熊猫
来自scipy。插值导入拉格朗日#导入拉格朗日插值函数
Inputfile=path #销售数据路径
Outputfile=path #输出数据路径
Data=pd.read_excel(inputfile) #读入数据
#自定义列向量插值函数
#s是列向量,n是插值位置,k是取前后的数据个数。默认值为5。
def poly interp _ column(s,n,k=5):
Y=s [list (range (n-k,n)) list (range (n1,n1k)),fetch
Y=y[y.notnull()] #消除空值
Return lagrange (y.index,list (y)) (n) #插值并返回插值结果。
#逐个元素地确定是否需要插值。
对于数据列中的I:
对于范围内的j(len(data)):
If (data[i].isnull())[j]: #空则插值。data[I][j]=poly interp _ COLUMN(data[I],j) data.to _ excel(输出文件)#输出结果并写入文件
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。