Excel VS Python 第四期——异常值处理

Excel VS Python 第四期

相信大家最近都在为河南加油

郑州这次的特大暴雨属于极端天气,而在数据分析过程中,我们也常会遇到一些极端大或极端小的异常数据值

如果变量服从或近似服从正态分布,那么大于“均值+3倍标准差”,或小于“均值-3倍标准差”的数据值就为“异常值”

一般而言,数据处于“均值±3倍标准差”范围外的概率小于0.3%,属于小概率事件

今天要为大家介绍如何使用Excel 和 Python处理数据集中的异常值

案例数据继续使用UCI的红酒质量评分数据集

需要完成的任务是检测并删除变量“fixed acidity”的异常值

知识点8:检测异常值

Excel

=AVERAGE(A:A)-3*STDEV.P(A:A)   #计算A列变量的异常值左边界,计算结果为3.098
=AVERAGE(A:A)+3*STDEV.P(A:A)   #计算A列变量的异常值右边界,计算结果为13.541
开始——排序和筛选
点击“fixed acidity”下拉框——数字筛选——介于
“大于或等于”输入13.541——点击“或”——“小于或等于”输入3.098——确定

Python

import numpy as np   #载入numpy库
import pandas as pd   #载入pandas库
data = pd.read_excel('C:/Users/dell-pc/Desktop/data.xlsx')   #读取Excel文件数据
data.head(5)   #显示数据集的前5行
data.shape[0]   #显示数据集的行数

def three_sigma(x):   #传入某变量  
    mean_value = x.mean()   #计算该变量的均值  
    std_value = x.std()   #计算该变量的标准差  
    rule = (mean_value - 3 * std_value > x) | (x.mean() + 3 * x.std() < x)   #处于(mean-3std,mean+3std)区间外的数据为异常值
    index = np.arange(x.shape[0])[rule]   #获取异常值的行位置索引  
    outlier = x.iloc[index]   #获取异常值的数据  
    return outlier   #返回异常值的数据

three_sigma(data["fixed acidity"])   #显示变量"fixed acidity"的异常值


知识点9:删除异常值

Excel

选中筛选出的各行——右击——删除行
点击“fixed acidity”下拉框——全选

Python

left = data["fixed acidity"].mean() - 3 * data["fixed acidity"].std()   #设置该变量异常值的左边界mean-3std
right = data["fixed acidity"].mean() + 3 * data["fixed acidity"].std()   #设置该变量异常值的右边界mean+3std
data_new = data[(left < data["fixed acidity"]) & (data["fixed acidity"] < right)]   #删除该变量为异常值的样本记录
data_new.head(5)   #显示新数据集的前5行
data_new.shape[0]   #显示新数据集的行数

★微信搜一搜“TriHub数据社”,欢迎关注获得入社福利

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值