数据分析
1.numpy
1.1 数组
1.1.1 创建数组
# newlist = [1,2,3]
# print('列表',newlist)
# print(type(newlist))
# arr1 = numpy.array(newlist)
# print('数组',arr1)
# print(type(arr1))
1.1.2 数组的组成
1.1.2.1 维度的个数
print('维度的个数',arr1.ndim)
1.1.2.2 维度的大小
print('维度的大小',arr1.shape)
1.1.2.3 数据类型
print('数据类型',arr1.dtype)
1.1.3 数组的随机抽样创建
arr1 = numpy.random.rand(3,4)
注意:
rand如果不指定任何参数,返回的是一个浮点数(小数),指定参数之后,其实指定的就是数组的大小
arr1 = numpy.random.uniform(size=3)
arr2 = numpy.random.uniform(size=(3,4))
arr3 = numpy.random.uniform(5,10,size=(3,4))
注意:
uniform如果不指定参数,默认的数据区间为0-1,返回的是一个浮点数
arr1 = numpy.random.randint(-1,20,(4,4))
注意:
randint返回的是整数,可以指定负数范围
1.1.4 数组的序列创建
arr1 = numpy.array()
numpy.zeros
全为0的数组
numpy.ones
全为1的数组
numpy.arange
创建的是一维数组
arr1.reshape()
对原有数组进行重组,将一维数组转变为多维数组,但是数据的数量要对应
1.2 索引与切片
1.2.1 一维数组
arr1 = np.arange(10)
arr1[0]
arr1[0:2]
#一维数组与列表类似,数组[起始位置:结束位置:步长]
1.2.2 多维数组
arr2 = np.arange(12).reshape(3,4)
arr2[0][2]
arr2[0,2]
#数组中间以逗号为分隔,数组[行索引,列索引]
1.2.3 取连续多列
arr2[:,1:3]
array([[ 1, 2],
[ 5, 6],
[ 9, 10]])
1.2.4 取连续多行
arr2[0:2]
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
1.2.5 取不连续多行
#取1,3行
arr2[[0,2],:]
array([[ 0, 1, 2, 3],
[ 8, 9, 10, 11]])
1.2.6 取不连续多列
#取1,3,4
arr2[:,[0,2,3]]
array([[ 0, 2, 3],
[ 4, 6, 7],
[ 8, 10, 11]])
1.2.7 条件筛选
#条件筛选
arr2>5
array([[False, False, False, False],
[False, False, True, True],
[ True, True, True, True]])
arr2[arr2>5]
array([ 6, 7, 8, 9, 10, 11])
#取出当前数组中所有大于5的偶数
arr2>5
array([[False, False, False, False],
[False, False, True, True],
[ True, True, True, True]])
arr2%2==0
array([[ True, False, True, False],
[ True, False, True, False],
[ True, False, True, False]])
arr2[(arr2>5) & (arr2%2==0)]
array([ 6, 8, 10])
1.3 元素计算函数
1.3.1 一元运算符
np.ceil() 参数可以是数组也可以是数字,向上取整
np.floor() 参数可以是数组也可以是数字,向下取整
np.rint() 四舍五入
np.abs 绝对值
np.square 平方
np.modf 将整数部分和整数部分分离作为单独的数组返回,返回形式是元组
np.isnan 判断是否有空值
1.3.2 二元运算符
add 数组相加,元素可以是数字或者数组,但是数组在相加的过程中,注意必须对应
subtract 数组相减,元素可以是数字或者数组,但是数组在相加的过程中,注意必须对应
multiply 元素相乘
divide 元素相除
floor_divide 元素相除取整数商,抛去余数
mod 取余
power 元素求次方
1.3.3 三元运算符
# where(条件,返回值1,返回值2) 如果满足条件,返回返回值1,否则返回返回值2
#创建浮点型数组,找到四舍五入后大于20或者小于15的数字,满足则返回0,否则返回正常值
arr5 = np.random.uniform(10,25,size=(3,4))
arr5
array([[20.49391706, 22.51440077, 18.00017271, 12.60778079],
[22.16917256, 22.04108387, 21.60469827, 17.1202335 ],
[19.68909432, 24.12315481, 15.2338755 , 20.79586799]])
np.where((np.rint(arr5)>20)|(np.rint(arr5)<15),0,arr5)
array([[20.49391706, 0. , 18.00017271, 0. ],
[ 0. , 0. , 0. , 17.1202335 ],
[19.68909432, 0. , 15.2338755 , 0. ]])