美文网首页呆鸟的Python数据分析我爱编程
136、pandas操作——异常值和排列

136、pandas操作——异常值和排列

作者: 陈容喜 | 来源:发表于2018-02-01 20:13 被阅读546次

    检测和过滤异常值

    异常值(outlier)的过滤或变换运算在很大程度上其实就是数组运算。

    下面是一组检测4个焊脚高度的数据: 0.png 读取数据,并找出P12这一列中绝对值大小超过0.3的值: 1.png 使用any方法,选出全部“超过0.1或-0.1的值”的行,其中any(1)是把一行中只要有一个数据满足超过-0.1或0.1的值,即把这一行的数据提取出来: 2.png 将数据的范围限制在-0.1到0.1以内,其中np.sign()返回一个由1和-1组成的数组,表示原始值的符号: 3.png

    排列和随机采样

    利用numpy.random.permutation函数实现对Series或DataFrame的列的随机重排序。 通过需要排列的轴的长度调用permutation,可产生一个表示新顺序的整数列表: 21.png 使用take函数按照列表进行排序: 22.png 从permutation返回的数组中切下前k个元素,其中k为期望的子集大小: 23.png 通过np.random.randint得到一组随机整数,使用替换的方式产生样品: 24.png

    源码:

    # coding: utf-8
    
    # ### 检测和过滤异常值
    
    # In[1]:
    
    import numpy as np
    from pandas import Series,DataFrame
    import pandas as pd
    
    
    # In[2]:
    
    # 读取数据
    exl_file = 'D:\\Python\\notebook\\B403 USB.xlsx'
    data = pd.read_excel(exl_file)
    data.describe()
    
    
    # In[3]:
    
    # 找出某列中绝对值大小超过0.3的值
    col = data['P12']
    col[np.abs(col) > 0.1]
    
    
    # In[4]:
    
    # 使用any方法,选出全部“超过0.1或-0.1的值”的行
    data[(np.abs(data) > 0.1).any(1)]
    
    
    # In[5]:
    
    '''
    将数据的范围限制在-0.1到0.1以内,
    其中np.sign()返回一个由1和-1组成的数组,表示原始值的符号
    '''
    data[np.abs(data) > 0.1] = np.sign(data) * 0.1
    data.describe()
    
    
    # ### 排列和随机采样
    
    # In[6]:
    
    df = DataFrame(np.arange(5 * 4).reshape(5,4))
    print(df)
    
    
    # In[7]:
    
    # 调用permutation产生一个表示新顺序的整数列表
    sampler = np.random.permutation(5)
    print(sampler)
    
    
    # In[8]:
    
    # 使用take函数按照列表进行排序
    df.take(sampler)
    
    
    # In[9]:
    
    df.take(np.random.permutation(len(df))[:3])
    
    
    # In[10]:
    
    bag = np.array([5,7,-1,6,4])
    sampler = np.random.randint(0,len(bag),size=10)
    print(sampler)
    
    
    # In[11]:
    
    draws = bag.take(sampler)
    print(draws)
    

    相关文章

      网友评论

        本文标题:136、pandas操作——异常值和排列

        本文链接:https://www.haomeiwen.com/subject/yiplzxtx.html