数据处理——异常值检测

本文介绍了异常值检测的两种方法:3σ原则和箱线图。3σ原则适用于正态分布数据,通过标准差和概率确定异常值范围。箱线图则依赖于四分位数和四分位距,不受数据分布限制,能更直观地识别异常值。异常值在箱线图中通常定义为低于QL-1.5IQR或高于QU+1.5IQR的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、3σ原则

  3σ原则又称为拉依达准则,该准则具体来说,就是先假设一组检测数据只含有随机误差,对原始数据进行计算处理得到标准差,然后按一定的概率确定一个区间,认为误差超过这个区间的就属于异常值。

  正态分布状况下,数值分布表:

数值分布 在数据中的占比
(μ-σ,μ+σ) 0.6827
(μ-2σ,μ+2σ) 0.9545
(μ-3σ,μ+3σ) 0.9973

  注:在正态分布中σ代表标准差,μ代表均值,x=μ为图形的对称轴

import pandas as pd
import numpy as np

# 定义3σ法则识别异常值函数
def three_sigma(Ser1):
    '''
    Ser1:表示传入DataFrame的某一列。
    '''
    rule = (Ser1.mean()-3*Ser1.std()>Ser1) | (Ser1.mean()+3*Ser1.std()< Ser1)
    index = np.arange(Ser1.shape[0])[rule]
    outrange = Ser1.iloc[index]
    return outrange
# 导入数据并调用three_sigma
df = pd.read_csv('./data.csv',encoding= 'gbk')
three_sigma(df['counts']).head()
### Kettle 中处理异常值的方法 #### 处理异常值概述 在数据清洗过程中,异常值(即离群点)是指那些明显偏离其他观测值的数据点。这些异常值可能会影响数据分析的结果准确性,因此需要对其进行适当处理。 #### 基于统计学的阈值检测 Kettle 提供了基于统计学的阈值检测方法来识别异常值。通过设定上下限阈值,可以筛选出超出正常范围的数据点[^1]。 ```sql SELECT * FROM your_table WHERE column_name < lower_threshold OR column_name > upper_threshold; ``` #### 使用聚类算法识别异常点 除了简单的阈值检测外,Kettle 还支持更复杂的基于聚类的异常点识别技术。这种方法能够自动发现数据集中不符合整体模式的数据点。 #### 删除包含异常值的记录 对于某些情况下的异常值,最简单直接的方式就是将其对应的整条记录删除。这可以通过配置过滤记录控件实现: 1. **创建转换** 2. **配置文本文件输入控件**:设置合适的分隔符(如 TAB) 3. **获取字段信息** 4. **配置过滤记录控件**:定义具体的过滤条件以移除含有异常值的行 5. **运行转换** 例如,在 `interpolation_data` 表中删除身高不在合理区间内的记录: ```sql DELETE FROM interpolation_data WHERE Height NOT BETWEEN 114 AND 226; ``` #### 替换异常值 有时并不希望完全丢弃带有异常值的数据项而是采取修正措施。此时可以选择用特定数值替代异常值或将它们设为空值后再做进一步处理。 ##### 示例一:固定值替换 当知道某个属性存在固定的默认值时可以直接赋给它。 ```sql UPDATE interpolation_data SET Height = COALESCE(Height, 170); ``` ##### 示例二:均值/中位数填充 如果想要保持原始分布特性,则可以用该列平均值或中位数代替缺失部分。 ```python import pandas as pd df[&#39;Height&#39;] = df[&#39;Height&#39;].fillna(df[&#39;Height&#39;].median()) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WoLykos

若对你有所帮助,请鼓励我一下~

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

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

打赏作者

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

抵扣说明:

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

余额充值