数据分析之数据处理(三)

数据分析之数据处理(三)

一、异常值处理

  • 异常值是指样本中的个别值,其数值明显偏离其余的观测值
  • 异常值也称离群点,异常值的分析也称为离群点的分析
  • 异常值分析 → 3σ原则 / 箱型图分析
  • 异常值处理方法 → 删除 / 修正填补

异常值分析

(1)3б原则:如果数据服从正态分布,异常值被定义为一组测定值中与平均值的偏差超过3倍的值:p(|x - μ| > 3σ) ≤ 0.003
(2)箱型图分析

(一)3б原则

1.创建数据

import warnings
warnings.filterwarnings('ignore')
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
# step 1 创建数据
data=pd.Series(np.random.randn(10000)*100)

2.正态性检验

# step 2 正态性检验
u=data.mean()#计算平均值
std=data.std()#计算标准差
stats.kstest(data,'norm',(u,std))
print('*****均值为%.3f,标准差为:%.3f*****'%(u,std))

3.绘制数据密度曲线

# step 3 绘制数据密度曲线
fig=plt.figure(figsize=(10,6))
ax1=fig.add_subplot(2,1,1)
data.plot(kind='kde',grid=True,style='--k',title='密度曲线')
plt.show()

4.筛选异常值,剔除异常值之后的数据datda_c

# step 4 筛选出异常值,提出异常值之后的数据
ax2=fig.add_subplot(2,1,2)
error=data[np.abs(data-u)>3*std]
data_c=data[np.abs(data-u)<=3*std]
print('\n*****异常值共%i条*****'%len(error))

5.图表显示

# 图表显示
plt.scatter(data_c.index,data_c,color='k',marker='.',alpha=.3)
plt.scatter(error.index,error,color='r',marker='.',alpha=.5)
plt.xlim([-10,10010])
plt.grid()
plt.show()

运行结果
在这里插入图片描述
数据分析之数据处理(三)_第1张图片

(二)箱型图分析

1.创建数据

# 异常值分析——箱型图分析
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定字体
plt.rcParams['axes.unicode_minus'] =False# 图画中正常显示负数
# step 1 创建数据
data=pd.Series(np.random.randn(10000)*100)

2.箱型图查看数据分布情况(以内限为界)

# step 2 箱型图查看数据分布情况(以内限为界)
fig=plt.figure(figsize=(10,6))
ax1=fig.add_subplot(2,1,1)
color=dict(boxes='DarkGreen',whiskers='DarkOrange',medians='DarkBlue',caps='Grey')
data.plot.box(vert=False,grid=True,color=color,ax=ax1,label='样本数据')
# plt.show()

3.查看基本统计量

# step 3 查看基本统计量
s=data.describe()
print('******基本统计量*****\n',s)

4. 计算分位差

# step 4 计算分位差
q1=s['25%']
q3=s['75%']
iqr=q3-q1
mi=q1-1.5*iqr
ma=q3+1.5*iqr
print('\n******分位差为:%.3f,下限为:%.3f,上限为:%.3f*****\n'%(iqr,mi,ma))

5.筛选异常值,剔除异常值之后的数据data_c

# step 5 筛选异常值,剔除异常值之后的数据data_c
ax2=fig.add_subplot(2,1,2)
error=data[(data<mi)|(data>ma)]
data_c=data[(data>=mi)&(data<=ma)]
print('异常值共有%i条'%len(error))

6.图表显示

# step 6 图表显示
plt.scatter(data_c.index,data_c,color='k',marker='.',alpha=.3)
plt.scatter(error.index,error,color='r',marker='.',alpha=.5)
plt.xlim([-10,10010])
plt.grid()
plt.show()

运行结果
数据分析之数据处理(三)_第2张图片
数据分析之数据处理(三)_第3张图片
自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷

你可能感兴趣的:(机器学习,数据分析,Python,python,数据分析,机器学习)