数据分析概述
数据分析技能,被认为是数据科学领域中数据从业人员需要具备的技能之一。下图为数据分析流程:
Numpy数值计算的基础
ndarry——存储单一数据类型的多维数组(属性:ndim,sahpe,size,dtype)
ufunc——对数组进行处理的函数
1、数组的创建
将Python序列,通过函数转为数组——numpy.array
numpy.array(object[, dtype, copy, order, subok, ndmin]))
python提供专门用于创建数组的函数——Array creation
numpy.arange([start,] stop[, step,][, dtype]) #一维数组,指定步长,不含终值
numpy.linspace(start, stop[, num, endpoint, ...]) #一维数组,指定元素个数,包含终止
numpy.logspace(start, stop[, num, endpoint, base, ...])
#一维数组,指定原始个数,等比数列stop
numpy.ones(shape[, dtype, order]) #全一数组
numpy.zeros(shape[, dtype, order]) #全零数组
numpy.eye(N[, M, k, dtype]) #主对角线为一,其他为零的二维数组
numpy.diag(v[, k]) #除主对角线上元素外,其他为零的二维数组
使用numpy生成随机数——numpy.random
numpy.random.random([size]) #生成[0.1-1.0)之间的随机数
numpy.random.rand(d0, d1, …, dn) #生成给定形状的服从均匀分布的随机数
numpy.random.randn(d0, d1, …, dn) #生成给定形状的服从正态分布的随机数
numpy.random.randint(low, high=None, size=None, dtype='l')
#生成给定上下限范围的随机数
2、数组的访问
import numpy as np
arr = np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6]])
arr[:-1,0::2] #这里2为步长,:-1包括开始不包括结束
#输出结果out: array([[1, 3],[2, 4]])
arr[[(0,1,0),(0,2,3)]] #这里取的为arr[0,0],arr[1,2],arr[0,3]
#输出结果out: array([1, 4, 4])
arr[1:,(0,1,3)] #整数函数索引,索引2,3行中第0,1,3列的元素
#输出结果out: array([[2, 3, 5],[3, 4, 6]])
arr[[True, False,True]] #布尔索引,索引0,2行中的元素
#输出结果out: array([[1, 2, 3, 4],[3, 4, 5, 6]])
3、数组形态变换
使用reshape函数改变数组维度,要求指定位数和数组的元素数目吻合——reshape
numpy.ndarray.reshape(shape, order='C')
numpy.reshape(arr,newshape,order ='C' )
eg:numpy.reshape(arr,(2,6))
arr.reshape(2,6) #两者等价,返回形状的数组,均不改变arr本身的形状
使用ravel和flatten展平数组——arrays.ndarray
arr.ravel() #横向展平,结果为[1,2,3,4,2,3,4,5,3,...]
arr.flatten() #横向展平,结果为[1,2,3,4,2,3,4,5,3,...]
arr.flatten('F') #纵向展平,结果为[1,2,3,2,3,4,3,4,5,...]
对数组进行组合和分割——numpy.hstack…
numpy.hstack(tup) #使用函数进行横向组合
numpy.vstack(tup) #使用函数进行横向组合
numpy.concatenate(tup,axis = 1) #使用函数进行横向组合
numpy.concatenate(tup,axis = 0) #使用函数进行横向组合
numpy.hsplit(ary, indices_or_sections) #使用函数进行横向切割
numpy.vsplit(ary, indices_or_sections) #使用函数进行纵向切割
numpy.split(ary, indices_or_sections, axis=0) #axis=0纵向切割 axis=1横向切割
3、矩阵
Numpy对于多维数组,默认不行进行矩阵运算