欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python清洗常用工具

程序员文章站 2022-03-09 20:31:14
...

脏数据存在的几种问题

  • 1.数据缺失(Incomplete):属性值为空的情况.如Occupancy=” ”
  • 2.数据噪音(Noisy):数据值不合常理的情况。如Wage = -100
  • 3.数据不一致(Inconsistent):数据前后存在矛盾。如age=”042”或Birthday=“01/09/2015”
  • 4.数据冗余(Redundant):数据量或属性数目超出数据分析需要的情况
  • 5.离群点/异常值(outliers):偏离大部分值的数据
  • 6.数据重复:在数据集中出现多次的数据

python的Numpy和Pandas主流清洗工具包

  • Numpy向量化运算是数据处理变得高效
  • Pandas提供大量数据清洗的高效方法- Python中,尽可能使用Numpy和Pandas函数,提高清洗效率## Numpy 常用数据结构
  • 常用数据结构是ndarray(n dimension array)
  • 使用array函数创建,语法为 array(列表或元组)
  • 可以使用其他函数如arange、linspace,zeros等创建

数组创建,操作

  • 操作如下
    # 导入库
    import numpy as np
    # 1.创建以集合[-9,8,4,90]为元素数组
    arr1 = np.array([-9,8,4,90]) 
    # 2.从0开始,创建5个元素,步长为1,左闭右开
    >>> np.arange(0,5,1)
    array([0, 1, 2, 3, 4]) 
    # 3.创建等差数组,1为起始值,10 为终止值,20为个数
    >>> np.linspace(1,10,5)
    array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ])
     # 4.产生总数为11个0的一维数组,元素全为0
     >>> np.zeros(11)
     array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 
     # 5.产生4行5列的二维数组,元素全为0
     >>> np.zeros([4,5])
     array([[0., 0., 0., 0., 0.],       
    	   [0., 0., 0., 0., 0.],       
    	   [0., 0., 0., 0., 0.],       
      	   [0., 0., 0., 0., 0.]])
     # 6.产生总数为11个0的一维数组,元素全为1
     >>> np.ones(4)array([1., 1., 1., 1.]) 
     # 7.产生4行5列的二维数组,元素全为1
     >>> np.ones([4,5])
     array([ 
     	    [1., 1., 1., 1., 1.],      
     	    [1., 1., 1., 1., 1.],       
     	    [1., 1., 1., 1., 1.],      
       	    [1., 1., 1., 1., 1.]])
     # 8.查看长度
     >>> np_darr  = np.ones([4,5])
     >>> np_darr.size
     20
     # 9.查看类型
     >>> np_darr.dtype
     dtype('float64') 
     # 10.查看数组维度
     >>> np_darr.shape(4, 5) 
     # 11.按下标取元素,下标也是左开右闭
     # 11.1 一维数组
     >>> np_darr2  = np.ones([5])
     #11.2获取下标从0到1的所有元素
     >>> np_darr2[0:2]
     array([1., 1.]) 
     # 12.1 二维数组,第一个参数是对行操作,第二个参数是对列操作,下标是左闭右开
     >>> np_darr2  = np.array([[1,2,3],[4,5,6],[7,8,9]])
     # 2.2 获取1行2列元素
     >>> np_darr2[1,2]
     6
     #同 np_darr2[1,2]
     >>> np_darr2[1][2]
     6  
     # 12.3获取第1,2列元素
     >>> np_darr2[:,0:2]
     array([
     	   [1, 2],       
     	   [4, 5],       
     	   [7, 8]])
     # 2.3获取第2列
     >>> np_darr2[:,2]
     array([3, 6, 9])
    

常见清洗函数

  • 排序
    • np.sort(element)
      >>> s = np.array([1,23,2,4,10,9,10])
      >>> s = np.sort(s)
      >>> s
      array([ 1,  2,  4,  9, 10, 10, 23])
      
    • python sort
      >>> np.array(sorted(s,reverse=True))
      array([23, 10, 10,  9,  4,  2,  1])
      >>> np.array(sorted(s))
      array([ 1,  2,  4,  9, 10, 10, 23])
      
    • np.argsort(s),返回原始数组,元素按照降序进行下标返回
      array([ 1,  2,  4,  9, 10, 10, 23])
      >>> s = np.array([1,23,2,4,10,9,10])
      # 升序返回原始数组,每个元素下标
      >>> np.argsort(s)
      array([0, 2, 3, 5, 4, 6, 1], dtype=int64)
      
    • np.sort()应用二维数组
      #二维数组
      >>> td_arr= np.array([[0,1,3],[4,2,9],[4,5,9],[1,-3,4]])
      >>> td_arr
      array([   [ 0,  1,  3],      
                [ 4,  2,  9],        
                [ 4,  5,  9],        
                [ 1, -3,  4]]) 
      # 按行进行排序
      >>> np.sort(td_arr,axis=0)
          array([ [ 0, -3,  3],       
          	    [ 1,  1,  4],       
             	    [ 4,  2,  9],       
          	    [ 4,  5,  9]   
          	    ])
      # 按列排序
      >>> np.sort(td_arr,axis=1)
         array([[ 0,  1,  3],
                [ 2,  4,  9],
                [ 4,  5,  9],
                [-3,  1,  4]])