大数据清洗2(元素操作)

Posted 晨沉宸辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据清洗2(元素操作)相关的知识,希望对你有一定的参考价值。

一、访问ndarray中的元素–索引和切片

import numpy as np #全部行都能输出 from IPython.core.interactiveshell 
import InteractiveShell InteractiveShell.ast_node_interactivity = "all"

1、基本索引和切片

1.1 一维数组的索引和切片

arr1 = np.random.randint(0,20,10)
arr1

在这里插入图片描述

arr1[3]

在这里插入图片描述

#切片语法:ndarray[start:stop:step] 
#如果start被省略,默认从第0个位置开始切片 
#如果stop被省略,默认切片到最后,包含最后位置的元素 
#如果step被省略,默认步长为1
arr1[:]

在这里插入图片描述

arr1[2:5] 
#终止值位置如果被指定,这个位置是不会被切到的

在这里插入图片描述

arr1[1:7:2]

在这里插入图片描述

arr1
反向切片的时候一定要注意,切片的方向要和步长方向一致,否则不能切到任何元素
arr1[-2:-5:-1]

在这里插入图片描述

arr1
arr1[::-1]
arr1[-1:0:-1]

在这里插入图片描述

arr1[-1:-10:-1]

在这里插入图片描述

arr1[-1:-11:-1]

在这里插入图片描述

1.2 高维数组的基本索引和切片

arr2 = np.random.randint(0,20,(3,3)) 
arr2

在这里插入图片描述

arr2[1]
arr2[2][1]

在这里插入图片描述

arr1
arr1[1]
arr3 = np.random.randint(0,20,(2,3,3)) 
arr3

在这里插入图片描述

arr3[0][0][1:]

在这里插入图片描述

通过基本索引和切片切出来的新数组,和原数组之间相互不独立,对其中一个数组内元素进行更改的时候,
另一个数组内对应的元素也会发生相应的改变

arr1
arr1_1=arr1[3:6] #浅拷贝
 arr1_1

在这里插入图片描述

arr1_1[1] = 99
arr1_1

在这里插入图片描述

arr1
arr1_2 = arr1[6:8].copy() #深拷贝,切片出来的数组和原数组之间相互独立,互不影响 
arr1_2

在这里插入图片描述

arr1_2[1] = 88
array([15, 88])
arr1

2、高级索引

2.1 整数数组索引和切片

arr1
arr1[[1,2,4,5]]
arr1_3 = arr1[[1,2,4,5]] 
arr1_3

在这里插入图片描述

arr1_3[2] = 66
arr1_3

在这里插入图片描述

arr1
arr2
arr2[[0,1,2],[0,1,2]] #切片语法中arr[[元素所在的数组中第0个轴上的位置信息],[元素所在的数组 中第1个轴上的位置信息].......]

在这里插入图片描述

arr3
#切取18,4,14 
arr3[[0,0,1],[0,0,2],[0,2,0]]

在这里插入图片描述

2.2 布尔索引

arr1
arr1>10

在这里插入图片描述

arr1[arr1>10]

在这里插入图片描述

二、NumPy运算

1、算术运算相关函数

在这里插入图片描述

arr6 = np.array([2,2,2]) 
arr6
np.exp(2) #自然数e的平方

在这里插入图片描述

np.exp(arr6)

在这里插入图片描述

np.e
np.e**2

在这里插入图片描述

np.exp2(arr6)

在这里插入图片描述

pow(3,2)
np.power(arr6,3)

在这里插入图片描述

np.power(3,arr6)
np.square(arr6)

在这里插入图片描述

np.sqrt(arr6)
np.log(arr6) #求自然对数

在这里插入图片描述

np.log2(arr6)
np.log10(arr6)
np.log(4)/np.log(2) #求的是以2为底4的对数

在这里插入图片描述

10//3
10%3 #余数
arr6
np.mod(arr6,2)
arr7 = np.array([3,3,3])
np.mod(arr6,arr7)

在这里插入图片描述

2、取整函数

  • numpy.around() 这个函数返回四舍五入到所需精度的值。
  • numpy.floor() 向下取整 此函数返回不大于输入参数的最大整数。
  • numpy.ceil()向上取整 本函数返回输入值的上限
arr8 = np.random.randn(8) 
arr8

在这里插入图片描述

np.around(arr8) #四舍五入,0.5取偶
np.around(arr8,3)

在这里插入图片描述

arr9 = np.array([1.5,2.5,3.5,4.5]) 
arr9

在这里插入图片描述

np.around(arr9)
np.floor(arr9) #向下取整,找到距离浮点数最近的下限整数

在这里插入图片描述

arr10 = np.array([1.99999999,1.0000001]) 
arr10
np.floor(arr10)

在这里插入图片描述

np.ceil(arr10) #向上取整

3、统计函数

在这里插入图片描述

最大值 最小值 均值 中位数 标准差 方差

arr11 = np.random.randint(0,21,(3,3)) 
arr11

在这里插入图片描述

np.amax(arr11)

在这里插入图片描述

np.amax(arr11,axis=0)
np.amax(arr11,axis=1)

在这里插入图片描述

np.amin(arr11) 
np.amin(arr11,axis=0) 
np.amin(arr11,axis=1)

在这里插入图片描述

np.sum(arr11)
np.sum(arr11,axis=0)
np.mean(arr11)
np.mean(arr11,axis=0) 
np.mean(arr11,axis=1)

在这里插入图片描述

array([2., 7., 6.]) 

array([1.66666667, 5.33333333, 8. ])

 np.var(arr11) 
 np.var(arr11,axis=0) 
 np.var(arr11,axis=1)

在这里插入图片描述

26.666666666666668

 array([ 2.66666667, 34.66666667, 28.66666667])
  array([ 5.55555556, 29.55555556, 24.66666667]) 
np.std(arr11) 
  np.std(arr11,axis=0)
   np.std(arr11,axis=1) 

5.163977794943222

4、排序和索引函数

在这里插入图片描述

arr13 = np.random.randint(1,30,9) 
arr13

在这里插入图片描述

np.sort(arr13) #升序排序
np.sort(arr13)[::-1] #降序排序

在这里插入图片描述

arr14 = np.random.randint(1,30,(4,3)) 
arr14

在这里插入图片描述

np.sort(arr14) #默认按最内侧轴进行排序
np.nonzero(arr15) #返回的是非零元素在原数组中的位置
np.where(arr13>10) #这里返回的是位置信息
arr13[np.where(arr13>10)]

在这里插入图片描述

arr16 = np.random.randint(1,30,9) 
arr16

在这里插入图片描述

5、唯一化

  • np.unique() 去重函数
arr13 
array([23, 18, 26, 29, 7, 18, 17, 8, 2]) 
np.unique(arr13) 
array([ 2, 7, 8, 17, 18, 23, 26, 29])
`np.unique(arr13,return_index=True,return_counts=True)` 

在这里插入图片描述

(array([ 2, 7, 8, 17, 18, 23, 26, 29]), array([8, 4, 7, 6, 1, 0, 2, 3], dtype=int64), array([1, 1, 1, 1, 2, 1, 1, 1], dtype=int64))

6、集合逻辑

  • np.in1d() 验证元素是否在给定序列中
  • np.intersect1d() 求交集
  • np.union1d() 求并集
  • np.setdiff1d() 求差集
#求交集 并集 差集 判断元素是否在数组当中 
arr13 
arr16

array([23, 18, 26, 29, 7, 18, 17, 8, 2]) array([ 1, 4, 1, 18, 11, 17,
15, 3, 28])

#判断元素是否在数组中
 np.in1d(arr13,arr16)
 array([False, True, False, False, False, True, True, False, False]) 
 

在这里插入图片描述
在这里插入图片描述

 np.in1d(arr16,arr13)
  array([False, False, False, True, False, True, False, False, False]) np.in1d(arr16,arr13,invert=True) 
  array([ True, True, True, False, True, False, True, True, True]) arr16[
  np.in1d(arr16,arr13,invert=True)] 
  
  array([ 1, 4, 1, 11, 15, 3, 28]) 
  np.intersect1d(arr13,arr16) #求交集 

在这里插入图片描述

  
 np.union1d(arr13,arr16)
   #求并集 
   array([ 1, 2, 3, 4, 7, 8, 11, 15, 17, 18, 23, 26, 28, 29]) 

在这里插入图片描述

以上是关于大数据清洗2(元素操作)的主要内容,如果未能解决你的问题,请参考以下文章

大数据清洗4(pandas-DataFrame常用操作)

大数据之Hadoop(MapReduce):数据清洗(ETL)

大数据课堂测试3——数据清洗

大数据清洗3(pandas - 基本数据结构)

微博excel数据清洗(Java版)

手把手教你搞定4类数据清洗操作