一、异常值
处理异常值之前,需要明确哪些是异常值。有很多种规则和方法来筛选异常值,这里我们以Z标准化得到的阈值作为判断标准。
利用正态分布定位异常值
Z标准化会将数据转换为标准差为1,均值为0且符合正态分布的数据序列,一般来说,99%以上的数据都聚集在均值周围三个标准差距离范围内。这里我们以两个标准差为界,超出则算作异常值。
z标准化的公式为:
![49f9fe36b18e9d6f4d8a2061c007c6db.png](https://i-blog.csdnimg.cn/blog_migrate/44f09eb43ec853f820eb9a271bdf46f5.jpeg)
![47dbd3e984ea669a461072a02fa5e12b.png](https://i-blog.csdnimg.cn/blog_migrate/a25f2e4ad5a29f735e5b0c0e06876add.jpeg)
![7455eb447fecbdd07a32de7e8bc5ad29.png](https://i-blog.csdnimg.cn/blog_migrate/11a57b59418504a4a2465201b8ca25c3.jpeg)
可以看到,在第一列中,最后一个数字150距离均值超过了两个标准差,符合异常值的标准。
有些时候,在不清楚用什么边界来判断异常值时,我们也可以使用一些数学模型来判断异常值,比如聚类算法。
定位了异常值之后,常见的处理有删除或者使用边界值、均值等来替换。
二、重复值
重复值也会对我们的分析造成困扰。在pandas中,我们可以使用duplicated()方法来定位重复值,使用drop_duplicated()方法来删除重复数据。
在删除重复数据时,我们可以指定是根据其中的一列来判断重复还是根据多列判断重复。当我们指定多列时,只有当每一列的取值都相同时才会被认为是重复数据。
![6af97f5fe3c8fa184fcf14341d495f72.png](https://i-blog.csdnimg.cn/blog_migrate/0273e02829b1f860fcb127b8e78be2a3.jpeg)
需要注意的是,重复数据并不总是没有意义的,也并不总是需要删除的。需要根据实际应用场景来判断到底执行什么操作。