numpy系列之数组的数据预处理1.类型转换2.缺失值处

1.类型转换

众所周知,不同类型的数值可以作的运算是不一样的,所以要对我们拿到的原始数据转换为我们想要的数据类型。在numpy数组中,数据类型转换用到的方法是astype(),在astype后的括号里面指明要转换成的目标类型即可。例子如下所示:
先来创建一个整数类型的数组

import numpy as np
​
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr)
复制代码

result:

[[1 2 3]
 [4 5 6]
 [7 8 9]]
复制代码
print(arr.dtype)
复制代码

result:

int32
复制代码

1.1 将arr数组从int类型转换成float类型

arr_float = arr.astype(np.float64)
print(arr_float)
复制代码

result:

[[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]
复制代码
print(arr_float.dtype)
复制代码

result:

float64
复制代码

1.2 将arr数组从int类型转换成str类型

arr_str = arr.astype(np.string_)
print(arr_str)
复制代码

result:

[[b'1' b'2' b'3']
 [b'4' b'5' b'6']
 [b'7' b'8' b'9']]
复制代码
print(arr_str.dtype)
复制代码

result:

|S11
复制代码

注:pandas系列之数据类型转换和异常值的处理一文中也提到过astype()方法。这里astype()方法和该系列系列中的astype()方法虽然分属于两个不同的库,但本质上是相同的,pandas中的某一列其实就是numpy数组。

2.缺失值处理

缺失值在numpy中用np.nan表示

缺失值处理拢共分2步,第一步判断是否含有缺失值,将缺失值找出来。第二步对缺失值进行填充。示例过程如下:

在处理缺失值之前,先创建一个包含有一个缺失值的数组

import numpy

​
arr = np.array([1, 2, np.nan, 4])
print(arr)
复制代码

result:

[ 1.  2. nan  4.]
复制代码

2.1 查找缺失值

查找缺失值用到的方法是isnan()。如果某一位置返回True,说明该位置为缺失值。返回False,则说明该位置的值不是缺失值。

查找缺失值的方法示例如下:

print(np.isnan(arr))
复制代码

result:

[False False  True False]
复制代码

2.2 处理缺失值

处理缺失值的方法示例如下:

arr[np.isnan(arr)] = 0
print(arr)
复制代码

result:

[1. 2. 0. 4.]
复制代码

3.重复值处理

先创建一个重复值的数组
重复值的处理比较简单,直接调用unique()方法即可。直接看下面的例子即可。

import numpy as np
​
arr = np.array([1, 2, 3, 2, 1])
print(arr)
复制代码

result:

[1 2 3 2 1]
复制代码
print(np.unique(arr))
复制代码

result:

[1 2 3]
复制代码