• Pandas处理异常值的两种方法


    使用方法:只需使用pandas读取csv、txt、excel等文件,并调用下列函数即可。

    # 一、异常值检测
    # 1、使用平均数 - 2 * 标准差 检测异常值
    
    def mean_median(df):
        for i in df.columns:
            mean = df[i].mean()
            std = df[i].std()
            top_num = mean + 2 * std
            bottom_num = mean - 2 * std
            print("正常范围的值:{}、{}".format(bottom_num,top_num))
            print("{0} 中是否存在大于正常范围的值:{1}".format(i,any(df[i] > top_num)))
            print("{0} 中是否存在小于正常范围的值:{1}".format(i,any(df[i] < bottom_num)))
            print('---------------------')
            # 以下对异常值进行替换
            replace_value1=df[i][df[i]<top_num].max()
            df.loc[df[i]>top_num,'tip'] = replace_value1
            replace_value2=df[i][df[i]>bottom_num].min()
            df.loc[df[i]<bottom_num,'tip']=replace_value2
        return df
            
    # outlier_processing(data)
    
    # 2、使用 上、下四分位数 检测异常值
    # mean_top 为上四中位数(就是将数据按从小到大排列,取3/4这个位置的数)
    # mean_bottom 为下四中位数(同上,取1/4位置的数)
    # mean_minus 为中位差 mean3 = mean1-mean2
    
    def quartile_processing(df):
        for i in df.columns:
            mean_bottom = df[i].quantile(q=0.25) # 下四分位数
            mean_top = df[i].quantile(q=0.75) # 上四分位数
            mean_minus = mean_top - mean_bottom # 中位差
            top_num = mean_top + 1.5 * mean_minus
            bottom_num = mean_top - 1.5 * mean_minus
            
            print("正常范围的值:{} ~ {}".format(bottom_num,top_num))
            print("{0} 中是否存在大于正常范围的值:{1}".format(i,any(df[i] > top_num)))
            print("{0} 中是否存在小于正常范围的值:{1}".format(i,any(df[i] < bottom_num)))
            print('---------------------')
            # 以下是对异常值做替换
            replace_value1=df[i][df[i]<top_num].max()
            df.loc[df[i]>top_num,i] = replace_value1
            replace_value2=df[i][df[i]>bottom_num].min()
            df.loc[df[i]<bottom_num,i]=replace_value2
    
        return df
    quartile_processing(data) #注意data必须为pd.DataFrame格式
     
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
  • 相关阅读:
    R-YOLOv7-tiny检测浸水玉米胚乳裂纹
    车船边缘网关是如何给车辆船只定位的?
    zookeeper
    最后的防线:数据存储加密方案
    Linux 安装 JDK
    .NET下数据库的负载均衡(有趣实验)(续)
    Java设计模式之模板方法模式
    Rust 从入门到精通09-模式解构
    外包公司“混”了2年,我只认真做了5件事,如今顺利拿到阿里 Offer。
    适用于 Windows 10 和 Windows 11 设备的笔记本电脑管理软件
  • 原文地址:https://blog.csdn.net/m0_37134868/article/details/134049412