
【千锋教育干货暴击】
如果你想更好的学习Python乃至转行,弯道超车,快人一步!本课程零基础即可加入学习,抓住大数据、机器学习、人工智能时代的红利,开启你的第一行代码吧!
↓ ↓ ↓
千锋教育Python教程_700集零基础Python入门到精通教程(保姆级新手教程)
千锋教育Python教程全套_python零基础入门到精通(学完可达到Python工程师水平)
在进行数据分析的时候除了有缺失值之外,还可能遇到异常值和重复值。
异常值:

常采用盖帽法或者数据离散化进行处理

1、异常值的判断
也叫n个标准差法,均值±n个标准差内的数据叫做正常值,一般为2-3个标准差
计算均值和标准差
import numpy as np
import pandas as pd
data = pd.read_excel('university.xlsx')
jz = data['报名人数'].mean()
print(jz)
bzc = data['报名人数'].std()
print(bzc) 结果:
> 1525.2222222222222
> 4975.899109579891 搭配any(),查看是否有超过上下限的数据,这种数据为异常值
top = data['报名人数'].mean() + 2 * data['报名人数'].std()
bottom = data['报名人数'].mean() - 2 * data['报名人数'].std() 结果:
> 11477.020441382005
> -8426.57599693756 是否有超过下限的情况
any(data.报名人数 < bottom) # 结果:False 是否有超过上限的情况
any(data.报名人数 > top) # 结果:True 查看【报名人数】为正常值的数据
data[data[&#39;报名人数&#39;].between(bottom,top)] 可以看出少了索引为4和12的数据,该数据报名人数分别为17388和20000,超出上限11477.020441382005
也可以画个直方图看一下数据的分布情况,感受一下:
data.报名人数.plot(kind =&#39;hist&#39;)

箱线法

上界 、下界范围之内的数据叫做正常值,范围之外的叫做异常值。
# 下四分位数Q1 = data.报名人数.quantile(0.25)print(Q1)# 上四分位数Q3 =data.报名人数.quantile(0.75)print(Q3)# 分位差IQR = Q3 - Q1print(IQR)# 上界print(Q3 + 1.5 * IQR)# 下界print(Q1 - 1.5 * IQR)# 是否有超出上界的数据print(any(data.报名人数 &gt; Q3 + 1.5 * IQR))# 是否有低于下界的数据print(any(data.报名人数 &lt; Q1 - 1.5 * IQR)) 结果:
&gt; 134.5206.572.0314.526.5TrueTrue 箱线图看一下:
data.报名人数.plot(kind = &#39;box&#39;) 结果:

说明有超出上限和下限的值
2、异常值的处理
方法一:

数据准备:(新增一列【new_报名人数】数据,是为了替换异常值后做对比)
data[&#39;new_报名人数&#39;] = data[&#39;报名人数&#39;] 计算小于上限的最大值,作为替换值
# 计算小于上限的最大值,作为替换值UL = Q3 + 1.5 * IQR# 低于上限的最大值replace_value = data.new_报名人数[data.new_报名人数 &lt; UL].max()# 用替换值替换超出上限的数据:data.loc[data.new_报名人数&gt;UL,&#39;new_报名人数&#39;] = replace_valuedata 最终:

方法二:

计算百分之一分位数、百分之九十九分位数
# 百分之一分位数P1=data.new_报名人数.quantile(0.01)# 百分之九十九分位数P99=data.n

一般保留第一条重复数据,对其他重复数据进行移除。

data.duplicated() True为重复数据

取出重复值
data[data.duplicated()] 结果:

按照指定列判断重复数据
data[data.duplicated(subset=[&#39;学院&#39;,&#39;报名人数&#39;])]

删除重复数据 df.drop_duplicates
一般有重复数据后可以删除

data.drop_duplicates(inplace=True)data 删除后无重复数据。
需要资料也可以关注微信公众号:Python专栏,事不宜迟,一起进步吧!
