import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_excel("D:\\dataspace\\已结束项目任务数据.xls")
data=pd.DataFrame(data)
print(data)
x0=data.iloc[:,1]
x1=data.iloc[:,2]
# 选取经纬度两列特征
# 计算下四分位点
q1=x0.quantile(0.25)
print("q1",q1)
# 计算上四分位点
q3=x0.quantile(0.75)
print("q3",q3)
# 计算四分位距
iqr = q3-q1
print('iqr:',iqr)
lower_point =q1-1.5*iqr
Upper_point =q3+ 1.5*iqr
# 找到上下边缘值
Outlier3_x=[]
Inlier3_x = []
Outlier3_y=[]
Inlier3_y = []
for i in x0:
if i >Upper_point or i <lower_point:
Outlier3_x.append(i)
i_index = x0[x0==i].index.tolist()[0]
Outlier3_y.append(x1[i_index])
elif i>=lower_point and i<=Upper_point:
Inlier3_x.append(i)
i_index =x0[x0==i].index.tolist()[0]
Inlier3_y.append(x1[i_index])
# 遍历x[0]列表,找到在边缘区间以外的点作为异常点以及在边缘区间以内的点作为正常点。
print(Outlier3_x)
print(Outlier3_y)
plt.figure(figsize=(10,8))
plt.scatter(Inlier3_x,Inlier3_y,c='blue',s=20,label='Inlier')
plt.scatter(Outlier3_x,Outlier3_y,c='red',s=30,label='Outlier')
plt.legend()
plt.show()
# 绘制散点图
for i in range(len(x0)):
if x0[i] > Upper_point or x0[i] < lower_point:
print(data.iloc[i])
# 找到异常值对应的信息
按照老师的方式,将四分位距的统计学异常检测如法炮制
最新推荐文章于 2024-02-27 15:23:25 发布