精华内容
下载资源
问答
  • 现在有这样一组数据,希望去除掉里面的异常数据。其中,异常数据可能比正常数据大也可能比正常数据小,可能是正的也可能是负的。 数据为deg=[] import numpy as np if(True): #new_nums = list(set(deg)) #...

    现在有这样一组数据,希望去除掉里面的异常数据。其中,异常数据可能比正常数据大也可能比正常数据小,可能是正的也可能是负的。

    数据为deg=[]

    import numpy as np
    
    if(True):
        #new_nums = list(set(deg)) #剔除重复元素
        mean = np.mean(deg)
        var = np.var(deg)
        print("原始数据共",len(deg),"个\n",deg)
        '''
        for i in range(len(deg)):
            print(deg[i],'→',(deg[i] - mean)/var)
            #另一个思路,先归一化,即标准正态化,再利用3σ原则剔除异常数据,反归一化即可还原数据
        '''
        #print("中位数:",np.median(deg))
        percentile = np.percentile(deg, (25, 50, 75), interpolation='midpoint')
        print("分位数:",percentile)
        #以下为箱线图的五个特征值
        Q1 = percentile[0]#上四分位数
        Q3 = percentile[2]#下四分位数
        IQR = Q3 - Q1#四分位距
        ulim = Q3 + 1.5*IQR#上限 非异常范围内的最大值
        llim = Q1 - 1.5*IQR#下限 非异常范围内的最小值
    
        new_deg = []
        for i in range(len(deg)):
            if(llim<deg[i] and deg[i]<ulim):
                new_deg.append(deg[i])
        print("清洗后数据共",len(new_deg),"个\n",new_deg)

    运行效果如下,由于数据是从摄像头采集的,每次会有点不一样

    展开全文
  • 本篇文章主要是解决单变量数据集中的异常点分析,本代码中对异常数据的处理方式为删除,剔除异常数据,也可以适当修改,对异常数据进行自己需要的操作。 1. 四分位法 原理介绍: 首先计算出第一四分位数(Q1)、中位...

    本文为博主在处理异常数据的笔记与总结,如有理解不当之处,欢迎指正。

    个人博客连接: JMX的个人博客

    本篇文章主要是解决单变量数据集中的异常点分析,本代码中对异常数据的处理方式为删除,剔除异常数据,也可以适当修改,对异常数据进行自己需要的操作。

    1. 四分位法

    原理介绍:
    首先计算出第一四分位数(Q1)、中位数(第二四分位数Q2)、第三四分位数(Q3)。
    中位数也就是将一组数字按从小到大的顺序排序后,处于中间位置(也就是50%位置)的数字。
    同理,第一四分位数、第三四分位数是按从小到大的顺序排序后,处于25%、75%的数字。
    四分位法找出异常数据是利用:

    IQR=Q3Q1IQR=Q3−Q1,那么 Q3+1.5(IQR)Q3+1.5(IQR)Q11.5(IQR)Q1−1.5(IQR)之间的值就是可接受范围内的数值,这两个值之外的数认为是异常值,该原理类似于正态分布中异常数据的检测,只是将阈值变成了由四分位点求得。
    在这里插入图片描述

    def detect_outliers_4div(df):
    	outlier_indices = []
    	raw = df
    	try:
    		# 1st quartile (25%)
    		Q1 = np.percentile(df, 25)
    		# 3rd quartile (75%)
    		Q3 = np.percentile(df, 75)
    		# Interquartile range (IQR)
    		IQR = Q3 - Q1
    
    		# outlier step
    		outlier_step = 1.5 * IQR
    		for nu in df:
    			if (nu < Q1 - outlier_step) | (nu > Q3 + outlier_step):
    				df.remove(nu)
    	except:
    		return raw
    	return df
    

    2. 基于标准差的检测方法

    假设数据是正态分布的,由概率论中的知识我们可以知道:

    • 95.449974%的数据在平均数左右两个标准差范围内
    • 99.730020%的数据在平均数左右三个标准差范围内
    • 99.993666%的数据在平均数左右四个标准差范围内
      在这里插入图片描述
      以95%作为示例阈值,来剔除异常点。
    def detect_outliers_std(df,threshold=0.95):
    	outlier_indices = []
    	for nu in df:
    		if nu > np.quantile(df,threshold):
    			df.remove(nu)
    	return df
    

    3. 基于ZSCORE检测方法

    ZSCORE计算公式为Zi=xiXstdZ_i=\frac {x_i-X}{std}

    std为数据标准差,X为数据均值

    我们取阈值为3.5,代码如下:

    def detect_outliers_zscore(df,threshold=3.5):
    	outlier_indices = []
    	for nu in df:
    		zscore = (nu - np.mean(df))/np.std(df)
    		if abs(zscore) > threshold:
    			df.remove(nu)
    	return df
    

    4. 基于MAD检测方法

    该方法为对ZSCORE方法的增强,MAD定义为:
    MAD=medianxiXMAD=median{|x_i-X|}

    medianmedian为取中位数,XX为数据的中位数

    Mi=0.6475(xiX)MADM_i=\frac{0.6475(x_i-X)}{MAD}

    取阈值为3.5,代码如下:

    def detect_outliers_mad(df,threshold=3.5):
    	outlier_indices = []
    	MAD = np.median(abs(df - np.median(df)))
    	for nu in df:
    		zscore = abs((nu - np.median(df))*0.6475/MAD)
    		if zscore > threshold:
    			df.remove(nu)
    
    	return df
    

    完整代码如下:

    #_*_coding:utf-8_*_
    # author    : jmx
    # create    : 19-9-17 上午10:31
    # filename  : test.py
    # IDE   : PyCharm
    import numpy as np
    
    def detect_outliers_4div(df):
    	outlier_indices = []
    	raw = df
    	try:
    		# 1st quartile (25%)
    		Q1 = np.percentile(df, 25)
    		# 3rd quartile (75%)
    		Q3 = np.percentile(df, 75)
    		# Interquartile range (IQR)
    		IQR = Q3 - Q1
    
    		# outlier step
    		outlier_step = 1.5 * IQR
    		for nu in df:
    			if (nu < Q1 - outlier_step) | (nu > Q3 + outlier_step):
    				df.remove(nu)
    	except:
    		return raw
    	return df
    
    def detect_outliers_std(df,threshold=0.95):
    	outlier_indices = []
    	for nu in df:
    		if nu > np.quantile(df,threshold):
    			df.remove(nu)
    	return df
    
    def detect_outliers_zscore(df,threshold=3.5):
    	outlier_indices = []
    	for nu in df:
    		zscore = (nu - np.mean(df))/np.std(df)
    		if abs(zscore) > threshold:
    			df.remove(nu)
    	return df
    
    def detect_outliers_mad(df,threshold=3.5):
    	outlier_indices = []
    	MAD = np.median(abs(df - np.median(df)))
    	for nu in df:
    		zscore = abs((nu - np.median(df))*0.6475/MAD)
    		if zscore > threshold:
    			df.remove(nu)
    
    	return df
    
    
    df = [-0.2296411544084549,-1.404792070388794,-0.0,-1.3356698751449585,-4.174769878387451,
          84.90332174301147,-0.0,-0.0]
    
    clean = detect_outliers_std(df)
    print(clean)
    

    参考文章:用Python做单变量数据集的异常点分析

    展开全文
  • 由于经历一些调试,所以代码结构不一定最优,适合数据处理的新手,...由表三可知,元素背景值在[p-s, p+s],所以应用到表一,将不符合的数据剔除 上代码 import numpy as np import pandas as pd path = "E:/M...

    由于经历一些调试,所以代码结构不一定最优,适合数据处理的新手,大神欢迎提出改进

     

    数据来源:

    http://www.mcm.edu.cn

     

     

    设p为均值,s为标准差

    由表三可知,元素背景值在[p-s, p+s],所以应用到表一,将不符合的数据剔除

    上代码

    import numpy as np
    import pandas as pd
    path = "E:/Model_building/A/cumcm2011A附件_数据.xls"
    s1 = pd.read_excel(path, sheet_name="附件1")
    s2 = pd.read_excel(path, sheet_name="附件2")
    s3 = pd.read_excel(path, sheet_name="附件3")   # 读入一个文件中的三个表
    s1 = s1.values     # 转化为数值形式
    s2 = s2.values
    s3 = s3.values
    s1 = pd.DataFrame(s1)   # 转化为dataframe形式
    s2 = pd.DataFrame(s2)
    s3 = pd.DataFrame(s3)
    print(s1)
    s1 = s1.iloc[2:, 0:5]
    s2 = s2.iloc[2:, 0:9]
    s3 = s3.iloc[2:, :]     # 去掉表头等不需要的部分,如表一的右边
    print(s1,'\n')
    print(s2,'\n')
    print(s3,'\n')
    l = []
    for c in range(1,9):          # 将各元素标准差放到列表
        a = s2.iloc[: ,c].std()
        l.append( a )
        print(a,'\n')
    
    p = []
    for c in range(1,9):    # 各元素均值放到列表
        a = s2.iloc[:, c].mean()
        p.append( a )
        
    
    for c in range(0,8):         
        themin = p[c] - 2*l[c]
        themax = p[c] + 2*l[c]
        print(themin, '  ', themax)
        s2 = s2[(s2.iloc[:, c+1] >= themin )& (s2.iloc[:, c+1] <= themax ) ]      # 选出符合的行
        print(s2)
        print('\n',s2.shape[0],'\n')
    ID = pd.DataFrame(s2.iloc[:, 0])   # 表二0列单独成表
    print(ID)
    s1 = pd.merge(s1, ID, how="inner", right_on=0, left_on=0)    # 找出表一0列在表二0列的行,merge,join,constack进行拼接
    print(s1)
    path = "E:/Model_building/A/"  # 保存
    s1.to_excel(path+"sheet1.xlsx")
    s2.to_excel(path+"sheet2.xlsx")
    s3.to_excel(path+"sheet3.xlsx")

     

    展开全文
  • 数据处理-利用 python进行异常值分析

    千次阅读 2019-07-06 14:17:18
    不加剔除的把异常值代入数据分析过程中,会对结果产生不良影响,而对异常值的分析其原因,常常成为为发现问题的而改进决策的契机。 异常值是指样本中的个别值,其数值明显偏离其余的数据异常值通常也称为离群点,...

    异常值分析是检验数据是否有录入错误数据和不合常理的数据。不加剔除的把异常值代入数据分析过程中,会对结果产生不良影响,而对异常值的分析其原因,常常成为为发现问题的而改进决策的契机。

    异常值是指样本中的个别值,其数值明显偏离其余的数据。异常值通常也称为离群点,所以异常值分析也叫做离群点分析。

    异常值分析通常有以下几种:

    (1)简单统计量分析

    最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出了合理的范围。

    (2)3σ原则

    如果数据服从正态分布,在3σ原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。在正态分布的假设下,距离平均值3σ之外的值出现的概率为,属于极个别的小概率事件

    (3)箱型图分析

    箱型图提供了识别异常值的一个标准:异常值通常被定义为小于或大于的值。Q1 -1.5IQR称为下四分位数,表示全部观察值中有四分之一的数据取值比它下;Q2 -1.5IQR称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数和下四分位数之差,期间包含了全部观察值的一般。

    如果数据记录和属性比较多,使用人工分辨的方法就不切实际,所以这里需要编写程序来检测出含有缺失值的记录和属性以及缺失率个数和缺失率等

    以下就是箱型图利用 python进行生成分析一下:

    #-- coding: utf-8 --

    import pandas as pd

    catering_sale = ‘path’ #餐饮数据

    data = pd.read_excel(catering_sale, index_col = u’日期’) #读取数据,指定“日期”列为索引列

    import matplotlib.pyplot as plt #导入图像库

    plt.rcParams[‘font.sans-serif’] = [‘SimHei’] #用来正常显示中文标签

    plt.rcParams[‘axes.unicode_minus’] = False #用来正常显示负号

    plt.figure() #建立图像

    p = data.boxplot(return_type=‘dict’) #画箱线图,直接使用DataFrame的方法

    x = p[‘fliers’][0].get_xdata() # 'flies’即为异常值的标签

    y = p[‘fliers’][0].get_ydata()

    y.sort() #从小到大排序,该方法直接改变原对象

    #用annotate添加注释

    #其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。

    #以下参数都是经过调试的,需要具体问题具体调试。

    for i in range(len(x)):

    if i>0:

    plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))

    else:

    plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

    plt.show() #展示箱线图

    数据处理-利用 python进行异常值分析
    另外提供的参数还有平均值、标准差、最小值、最大值等。
    在这里插入图片描述

    展开全文
  • Python-异常值分析

    千次阅读 2018-05-29 22:16:55
    忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。异常值是指样本中的个别值,其...
  • 忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。 异常值是指样本中的个别值,其
  • 基于Python异常值处理汇总

    千次阅读 2020-07-23 14:28:46
    其中,异常值是指数据集中存在的不合理的点,这些异常点如果不加以剔除或者修正而错误的包括进数据的计算分析过程中,那么会对结果产生非常不好的影响,导致结果偏差。因此,重视异常值的出现,分析其产生原因,并对...
  • 所谓的异常数据,就是在重复测量数据列中,与其他数据明显不一致的数据。 关于异常值的判断,主要有两种办法:技术性方法和统计学方法。前者是在对对象有一定的基本物理化学特性认识的基础上,判断测量数据的合理性...
  • Python异常值分析

    2019-12-14 15:31:30
    忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。 异常值是指样本中的个别值,其...
  • 1.数据质量分析 主要任务是检查原始数据中是否存在脏数据,包括缺失值,异常值,不一致值,重复数据及...异常值,不合常理的数据剔除可消除不良影响,分析可进行改进。异常值分析也称离群点分析。 常用的分析方法:简
  • 数据预处理,异常值是否剔除,需视具体情况而定,因为异常值可能蕴含着有用的信息 将含有异常值的记录直接删除的方法简单易行,但缺点也很明显,在观测值很少的情况下,这种删除会造成样本量不足,可能会改变变量...
  • 原创文章,如需转载请保留出处 ...现给定一些信用卡相关数据,从中剔除异常数据 import pandas as pd import matplotlib.pyplot as plt import numpy as np %matplotlib inline data = pd.read_csv('c...
  • 这里关键就是对每个属性进行各种查看,然后对其中异常的数值进行剔除,主要就是平均数、峰值啊等的查看,直接上常用的函数了。 例如 1.通过平均值和最大值最小值对比可能发现数据都是k附近的,但是最大值或者...
  • python学习——格拉布斯准则实现

    千次阅读 2019-07-08 21:01:53
    期末某课程设计有个题目要求用程序实现格拉布斯准则剔除异常数据,遂度娘,发现大神都是使用c++,java等解决问题,答主最近在学习python,遂现学现用,编了个还能用的python程序,用了一些数据检验还算靠谱。
  • 剔除异常值 放下表一和表二Excel的截图 大体思路: 实际问题中,不同数据可能有不同的性质和量纲,为进行模糊聚类,需进行标准化处理。这里采用极差变换: 放代码: import numpy as np import pandas ...
  • python爬虫 1.爬取识货篮球鞋首页并对球鞋品牌做词频统计生成词云 思路: 一、爬网页 1.导包 2....1.创建一个字典用于保存整理后的字符串 2.jieba库进行分割 3.剔除异常数据并对词频数据进...
  • Python爬取天津房价并进行可视化

    千次阅读 2019-01-23 10:54:24
    3.读取CSV文件,对数据进行处理,包括剔除异常值,空值等,进行可视化 代码 import requests from bs4 import BeautifulSoup import csv import pandas as pd #获取网页信息 def getHTMLText...
  • 箱型图法处理异常

    2021-03-04 11:12:33
    Python异常数据处理——箱型图分析 一下Python是使用箱型图找到异常值并用线性插值把剔除异常后的缺失填充上。 核心代码 import pandas as pd def wash_data(df: pd.DataFrame): """箱型图法""" q1 = df.quantile...
  • 本文主要介绍根据给定条件对列表中的元素进行筛序,剔除异常数据,并介绍列表推导式和生成表达式两种方法。。 1.列表推导式(list comprehension) mylist = [1, 2, 3, -4, -5, 6, 7, 8, 9] positive_list = [n...
  • 在建立时间序列模型之前,必须先对时间序列数据进行必要的预处理,以便剔除那些不符合统计规律的异常样本,并对这些样本数据的基本统计特性进行检验,以确保建立时间序列模型的可靠性和置信度,并满足一定的精度要求。...
  • s.strip(‘a’):从字符串前后剔除字符串’a’ s.index(‘k’,start,end):找不到会报错,建议前面加个异常处理结构 s.find(‘k’,start,end):找不到不会报错 (2)列表(列表属于有序可变序列) 列表仅用于表示一维和...
  • 在anaconda里python3.8运行拉格朗日插值代码时提示错误 请大神看看应该怎么改呢? 小白谢过! excel下载链接 链接:https://pan.baidu.com/s/1IYAPr-4UFnHZNZk_vLHhiw 提取码:ejwn #拉格朗日插值...
  • 1、去重工作地址,获取地址坐标(高德) 2、去重公司,获取公司情况 3、工作筛选,由于智联...4、剔除数据异常值,过大过小,NA值 5、工作根据,工作,公司情况,工作内容,技能要求等进行评分,目的是找到适合我的工作
  • 机器学习流程

    2017-03-22 17:21:17
    首先确定目标类型为分类还是回归,而后获取样本数据类别,而后获得数值型属性的描述性统计信息和类别型属性的具体类别分布,再通过上述获取信息,剔除异常值或者合并类别属性类别。 python pandas包用于数据处理...
  • 大数据报告怎么做?

    2021-02-20 10:54:15
    总结一下做好一份大数据分析报告需要...③数据处理能力,获取到的数据含有大量的异常数据或我们不care的数据,首先需要把这些数据剔除出去。具体我认为要会数据处理的方法,如python或者excel。 ④数据分析能力,通过
  • Scikit-learn 学习笔记

    千次阅读 2016-08-09 23:40:26
    SVM 支持向量机支持向量机可以用于分类、回归和异常剔除 缺点:如果特征比样品多( m ),效果会比较差 支持向量机不能直接给出结果的可能性(针对二值分类问题)注意,支持向量机使用的样品数据可以是密集...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

python剔除异常数据

python 订阅