quantile()
确定四分位数的位置有两种方法, 方法1 pos = (n+1)p 方法2 pos = 1+(n-1)p
pandas 中使用的是方法2确定的。默认使用linear插值
In [213]:
df
Out[213]:
In [217]:
df.quantile(0.1)
Out[217]:
In [ ]:
#默认使用的是linear插值
#data1列
#pos=1+(5-1)*0.1=1.4 fac=0.4, -1.700586+(-1.337130-(-1.700586))*0.4=-1.555204
In [229]:
df.quantile([0.05,0.95]) #注意中括号
Out[229]:
In [260]:
def cap_outliers(ser,lower,higher):
low,high=ser.quantile([lower,higher])
ser[ser<low]=low
ser[ser>high]=high
return (ser)
cap_outliers(df['data1'],0.05,0.95)
Out[260]: