【发布时间】:2017-02-16 13:02:10
【问题描述】:
lat
50.63757782
50.6375742
50.6375742
50.6374077762
50.63757782
50.6374077762
50.63757782
50.63757782
我用这些纬度值绘制了一个图表,并注意到图表中出现了突然的峰值(异常值)。我想用最后三个值的中值替换每个 lat 值,以便我可以看到有意义的结果
输出可能是
lat lat_med
50.63757782 50.63757782
50.6375742 50.6375742
50.6375742 50.6375742
50.63740778 50.6375742
50.63757782 50.6375742
50.63740778 50.6375742
50.63757782 50.6375742
50.63757782 50.6375742
我有数千个这样的 lat 值,需要使用 for 循环来解决这个问题。我知道下面的代码有错误,由于我是 python 的初学者,感谢您帮助解决这个问题。
for i in range(0,len(df['lat'])):
df['lat_med'][i]=numpy.median(numpy.array(df['lat'][i],df['lat'][i-2]))
我刚刚意识到三点的中位数计算不符合我的目的,我需要考虑五个值。有没有办法改变我想要的值的中值函数。谢谢你的帮助
def median(a, b, c):
if a > b and a > c:
return b if b > c else c
if a < b and a < c:
return b if b < c else c
return a
【问题讨论】:
-
您想用
median(lat[i-2], lat[i-1], lat[i])替换lat[i]?为什么不median(lat[i-1], lat[i], lat[i+1])?无论如何,使用任一公式,您的数组边界都会出现问题:如果i = 0,则lat[i-1]不存在。您可以在循环中做一些聪明的事情来处理这些情况,或者在循环之外做一些简单的事情来处理它们。
标签: python numpy replace median imputation