异常值处理

基于3σ原则检测异常值

3σ原则又称为拉依达原则,根据正态分布得出的。(凡是超过(μ-3σ,μ+3σ)这个区间的均为异常值)

# 异常值的处理
def three_sigma(ser1):
#     求平均值
    mean_value = ser1.mean()
#     求标准差
    std_value = ser1.std()
#     位于(μ-3σ,μ+3σ)区间的数据是正常的,不在这个区间的数据为异常的
#      一旦发现有异常值,就标注为True,否则标注为False
    rule = (mean_value-3*std_value>ser1)|(ser1.mean()+3*ser1.std()<ser1)
#     返回异常值的索引位置
    index = np.arange(ser1.shape[0])[rule]
#     这里表示取0轴数据,[rule]是条件筛选
#     获取异常数据
    outrange = ser1.iloc[index]
    return outrange
​
# 不过使用这个函数时,传值时要一列数据一列数据传
打开文件代码为

file = open(文件路径)

df=read_csv(file)

df


基于箱尾图检测异常值

replace()

replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

to_replace:表示查找被替代值的方式

value:用来替换任何匹配to_replace的值,默认值None。

limit:表示向前或向后填充的最大尺寸间隙。

regex:接收布尔值或与to_replace相同的类型,默认为False,表示是否将to_replace和value解释为正则表达式。

mtehod:替换时使用的方法,pad/ffill表示向前填充,bfill表示向后填充。

# 这里为一个replace()小例子
df = pd.DataFrame({
    "菜谱名":["红烧肉","铁板鱿鱼","小炒肉","干锅鸭掌","酸菜鱼"],
    "价格":[38,25,26,388,35]
})
df.replace(to_replace=df["价格"][3],value=38.8)
# 或者这里也可以写成    df.replace(to_replace=388,value=38.8)
​
​
---------------------------------下面是输出结果---------------------------------
     菜谱名    价格
0    红烧肉    38.0
1    铁板鱿鱼   25.0
2    小炒肉    26.0
3    干锅鸭掌   38.8
4    酸菜鱼    35.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值