按照老师的方式,将四分位距的统计学异常检测如法炮制

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])
# 找到异常值对应的信息

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那个叫马尔的大夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值