数据处理之异常值分析、处理

异常值的分析方法

1、简单统计量分析

做一个描述性统计,进而查看哪些数据不合理。最常用的是最大值和最小值,如年龄的最大值199,则存在异常。

2、3σ原则

针对服从正态分布的数据,

P(|x-\mu |>3\sigma )\leqslant 0.003

3、箱形图分析(R语言)

首先,读取数据集,用sum(),mean()函数来分别获取缺失样本数、缺失比例。

saledata <- read.csv(file="catering_sale.csv",header = TRUE)

sum(complete.cases(saledata)) #TRUE为1,FALSE为0。结果为非缺失样本数

sum(!complete.cases(saledata)) #结果为缺失样本数

mean(!complete.cases(saledata)) #缺失比例

saledata[!complete.cases(saledata),] #获取缺失值记录

然后,进行箱形图分析

sp <- boxplot(saledata$销量,boxwex = 0.7) #画出箱形图,boxwex参数控制箱形的宽度

sd.s <- sd(saledata[complete.cases(saledata),]$销量) #结果是完整样本的标准差
mn.s <- mean(saledata[complete.cases(saledata),]$销量) #结果是完整样本的均值

points(1.1,mn.s,col="red",pch=18) #标出均值点,其中1.1为x轴坐标

arrows(xi,mn.s-sd.s,xi,mn.s+sd.s,code=3,col="pink",angle=75,length=.1) #画出箭头,从均值点到上、下标准差的距离

text(rep(c(1.05,0.95),length(sp$out)/2),sp$out,sp$out,col="red") #标出异常点的值,在点的左边、右边(1.05,0.95)各标示一半。其中sp$out是所有异常值点

最后,结合具体业务,判定哪些点为正常值,哪些点为异常值。

3、箱行图分析(Python)

首先,识别缺失值:

import pandas as pd

data = pd.read_excel('catering_sale.xls',index_col = u'日期') #指定日期列为索引列

data.describe() #查看数据的基本情况

输出结果为:

count是非空值数,通过len(data)得到201,所以缺失值数为1。

然后,进行箱形图分析

import pandas as pd
data = pd.read_excel('catering_sale.xls',index_col = u'日期')

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #正常显示负号

plt.figure() #建立图像
p = data.boxplot(return_type='dict') #画箱形图,指定返回类型为字典
x = p['fliers'][0].get_xdata() #‘fliers’为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() #从小到大排序

#用annotate函数添加注释
#其中有些相近的点,注释会出现重叠,需要调试、控制注释的位置
for i in range(len(x)):
    if i > 0:
        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i]))
    else:
        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))

plt.show() #展示箱形图

输出结果为:

最后,结合具体业务,判定哪些点为正常值,哪些点为异常值。

 

异常值的处理方法:

1、删除

2、视为缺失值,进行补数

3、平均值修正,可用前后两个观测的平均值修正。

4、不处理

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值