数据分析必备库:numpy
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
import numpy as np #导入 NumPy 库
numpy数组创建
arr1 = np.array([1, 2, 3, 4]) #创建一维数组
arr1 = np.array([0, 1, 2, 3, 4], dtype=np.int32) #创建浮点型一维数组 , bool/float/int/str/complex/np.int32/np.int64...
print(' 创建的数组为: ',arr1)
print('数组类型为:',arr1.dtype) #查看数组类型
arr2 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
print('创建的数组为:\n',arr2)
print('数组类型为:',arr2.dtype) #查看数组类型
print('数组元素个数为:',arr2.size) #查看数组元素个数
print('数组每个元素大小为:',arr2.itemsize) #查看数组每个元素大小
np.arange(0, 1, 0.1)) #0到1,步长为0.1
np.linspace(0, 1, 12)) #0到1,等差数列
np.logspace(1, 9, 10, base=2)) # 等比数列,(1, 9, 10)表示从1到9分为10个数,这十个数就是2的指数
2**np.linspace(1, 9, 10) # 效果同等比序列
# 无约束条件下生成10个随机数
print('生成的随机数组为:',np.random.random(10))
# 生成服从均匀分布的随机数:2行5列0-1的随机数
print('生成的随机数组为:\n',np.random.rand(2, 5))
# 生成服从正态分布的随机数:2行5列服从正态分布的随机数
print('生成的随机数组为:\n',np.random.randn(2,5))
# 生成给定上下范围的随机数,如创建一个最小值不低于 2、最大值不高于 10 的 2 行 5 列数组
print('生成的随机数组为:',np.random.randint(2, 10, size = [2,5]))
组合数组、切割数组
arr1 = np.arange(12).reshape(3,4)
print('创建的arr1为:\n',arr1)
arr2 = arr1*3
print('创建的arr2为:\n',arr2)
print('横向组合为:\n',np.hstack((arr1,arr2))) #hstack函数横向组合
print('纵向组合为:\n',np.vstack((arr1,arr2))) #vstack函数纵向组合
print('横向组合为:\n',np.concatenate((arr1,arr2),axis = 1)) #concatenate函数横向组合
print('纵向组合为:\n',np.concatenate((arr1,arr2),axis = 0)) #concatenate函数纵向组合
arr = np.arange(16).reshape(4,4)
print('创建的二维数组为:\n', arr)
print('横向分割为:\n', np.hsplit(arr, 2)) #hsplit函数横向分割
print('纵向分割为:\n', np.vsplit(arr, 2)) #vsplit函数纵向分割
print('横向分割为:\n',np.split(arr, 2, axis=1)) #split函数横向分割
print('纵向分割为:\n',np.split(arr, 2, axis=0)) #split函数纵向分割
numpy矩阵
import numpy as np
mat = np.matrix('1 2; 3 4') #矩阵
mat.T #转置
mat.H #共轭转置
mat.I #矩阵的逆
import numpy.matlib
import numpy as np
print (np.matlib.identity(5)) #单位矩阵
numpy统计分析
1、排序
arr = np.random.randint(1,10,size = 10)
arr.sort() #直接排序
arr.sort(axis = 1) #沿着横轴排序
arr.sort(axis = 0) #沿着纵轴排序
arr.argsort() #argsort函数返回值为重新排序值的下标
2、去重
names = np.array(['小明', '小黄', '小花', '小明', '小花', '小兰', '小白'])
print('创建的数组为:',names)
print('去重后的数组为:',np.unique(names))
3、数学统计
arr = np.arange(20).reshape(4,5)
print('创建的数组为:\n',arr)
print('数组的和为:',np.sum(arr)) #计算数组的和
print('数组横轴的和为:',arr.sum(axis = 0)) #沿着横轴计算求和
print('数组纵轴的和为:',arr.sum(axis = 1)) #沿着纵轴计算求和
print('数组的均值为:',np.mean(arr)) #计算数组均值
print('数组横轴的均值为:',arr.mean(axis = 0)) #沿着横轴计算数组均值
print('数组纵轴的均值为:',arr.mean(axis = 1)) #沿着纵轴计算数组均值
print('数组的标准差为:',np.std(arr)) #计算数组标准差
print('数组的方差为:',np.var(arr)) #计算数组方差
print('数组的最小值为:',np.min(arr)) #计算数组最小值
print('数组的最大值为:',np.max(arr)) #计算数组最大值
print('数组的最小元素为:',np.argmin(arr)) #返回数组最小元素的索引