- 集中趋势:均值、中位数、众数
- 离散程度:方差(标准差),IQR=Q3-Q1 (中间 50%数据的范围)
- 分布形态描述:核密度分布图、改进箱图
以下例子data为某一服务的响应时长数据,浮点型。
import numpy as np
# 1. 集中趋势:均值、中位数、众数
m=np.mean(data)
print('均值:',m)
md=np.median(data)
print('中位数:',md)
# 2.离散程度:方差、标准差,IQR=Q3-Q1(中间 50%数据的范围)
v=np.var(data)
print('方差:',v)
s=np.std(data)
print('标准差:',s)
Percentile = np.percentile(data,[0,25,50,75,100])
IQR = Percentile[3] - Percentile[1]
print('Q1:',Percentile[1])
print('Q2:',Percentile[2])
print('D1:',Percentile[3])
print('IQR:',IQR)
U1 = Percentile[3] + IQR*1.5
U2 = Percentile[3] + IQR*3.0
D1 = Percentile[1] - IQR*1.5
D2 = Percentile[1] - IQR*3.0
print('上界可能异常值:',U1)
print('上界异常值:',U2)
print('下界可能异常值:',D1)
print('下界异常值:',D2)
# 3. 分布形态:改进箱图、核密度分布图
df_select=df.loc[(df['distance']>0)&(df['distance']<U2)]
print(df_select)
data2=df_select['distance']
fig1 = plt.figure()
sns.boxplot(y=data2)
fig2 = plt.figure()
ax=sns.kdeplot(data2,shade=True,color="g" )
x, y = ax.get_children()[0].get_paths()[0].vertices.T
maxid = y.argmax()
print("众数",x[maxid])
时长本不应该是负数,所以去掉负数。众数 0.148。5s未响应基本上属于服务异常
去掉异常值后的密度分布情况
参考链接:https://wenku.baidu.com/view/f084924d11a6f524ccbff121dd36a32d7375c795.html