一、简介1.1 NumPy简介NumPy(Numerical Python)是Python数据分析必不可少的第三方库。Numpy的出现一定程度上解决了Python运算性能不佳的问题同时提供了更加精确的数据类型使其具备了构造复杂数据类型的能力。本身是由C语言开发是个很基础的扩展NumPy被Python其它科学计算包作为基础包因此理解np的数据类型对NumPy重在数值计算主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵比Python自身的嵌套列表结构要高效的多.NumPy重要功能如下1.高性能科学计算和数据分析的基础包多维数组具有矢量运算能力快速、节省空间2. ndarray,3.矩阵运算无需循环可完成类似Matlab中的矢量运算4.用于读写磁盘数据的工具以及用于操作内存映射文件的工具是一个运行速度非常快的数学库主要用于数组计算。包含:一个强大的N维数组对象ndarray广播功能函数整合 C/C/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能Numpy属性NumPy的数组类被称作ndarray通常被称作数组。ndarray对象属性有:ndarray. ndim纬度几层嵌套ndarray. shape形状ndarray. size大小元素个数ndarray. dtype元素类型ndarray.itemsize1.2 PandasPandas是一个强大的分析结构化数据的工具集它的使用基础是Numpy(提供高性能的矩阵运算)用于数据挖掘和数据分析同时也提供数据清洗功能Pandas利器之 Series是一种类似于一维数组的对象Pandas利器之 DataFrame是Pandas中的一个表格型的数据结构1.3 MatplotlibMatplotlib是一个功能强大的数据可视化开源Python库。Python中使用最多的图形绘图库可以创建静态动态和交互式的图表1.4 SeabornSeaborn是一个Python数据可视化开源库。建立在matplotlib之上并集成了pandas的数据结构Seaborn通过更简洁的API来绘制信息更丰富更具吸引力的图像面向数据集的API与Pandas配合使用起来比直接使用Matplotlib更方便1.5 Sklearnscikit-learn是基于 Python 语言的机器学习工具简单高效的数据挖掘和数据分析工具可供大家在各种环境中重复使用建立在 NumPy SciPy 和 matplotlib 上二、AnacondaAnaconda 是最流行的数据分析平台全球两千多万人在使用Anaconda 附带了一大批常用数据科学包Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的可以帮助你在计算机上安装和管理数据分析相关包包含了虚拟环境管理工具conda create-n虚拟环境名字pythonpython版本号#创建虚拟环境conda activate 虚拟环境名字#进入虚拟环境conda deactivate 虚拟环境名字#退出虚拟环境conda remove-n 虚拟环境名字--all#删除虚拟环境condaenvlist#列举所有环境conda search模块#检索可安装的包的所有版本conda list模块#检查当前环境是否存安装jupyter notebook#activate后打开jupter三、APINumpy数组是一个多维的数组对象(矩阵)称为ndarray具有矢量算术运算能力和复杂的广播能力并具有执行速度快和节省空间的特点。注意:ndarray的下标从0开始且数组里的所有元素必须是相同类型。arange()类似 python 的 range()创建一个一维 ndarrayy数组。importnumpyasnp# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]print(np.arange(15))anp.arange(15).reshape(3,5)print(a) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] print(数组的纬度,a.shape)#几行几列 (3, 5)print(数组轴的个数:,a.ndim)#数组纬度,几层, 2纬数组print(数组元素类型:,a.dtype)# int64print(数组中每个元素的字节大小:,a.itemsize)# int64占用8字节print(数组元素的总个数,a.size)# 所有元素个数 15print(类型:,type(a))# class numpy.ndarray# 范围 0~10, 步长2, 类型为int64# [0 2 4 6 8]arrnp.arange(0,10,2,dtypenp.int64)array()把Python列表 - ndarray对象bnp.array([6,7,8])print(数组b:,b)# [6 7 8]print(数组b类型:,type(b))# class numpy.ndarrayrand()、randint()、uniform()、randn()随机生成# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维)rand固定区间0.0 ~ 1.0 [[0.31691335 0.90146359 0.82516704 0.46770785] [0.29621857 0.51238154 0.74082077 0.60887821] [0.67011043 0.77226119 0.21435528 0.17993468]] arrnp.random.rand(3,4)print(arr)print(type(arr))# class numpy.ndarray# 生成指定维度大小(3行4列)的随机多维整型数据(二维)randint()可指定区间(-1,5) [[ 2 1 2 4] [ 0 -1 3 0] [ 1 -1 3 1]] arrnp.random.randint(-1,5,size(3,4))# 生成指定维度大小(3行4列)的随机多维小数数据(二维)randint()可指定区间(-1,5) [[ 2.66014273 1.47597597 3.03103291 4.66081343] [ 2.01176883 1.14651087 4.91733097 -0.85668461] [-0.25588651 1.11584233 0.56430666 2.36723165]] arrnp.random.uniform(-1,5,size(3,4))# 返回具有标准正态分布的序列 [[ 0.30547271 0.31586077 -1.13650364] [-0.36588039 -0.97770015 1.24721691]] arrnp.random.randn(2,3)astype()类型转换# 范围 0~10, 步长2, 类型为int64# [0 2 4 6 8]arrnp.arange(0,10,2,dtypenp.int64)print(arr)# [0. 2. 4. 6. 8.]arr2arr.astype(np.float32)print(arr2.dtype)# float32logspace()等比数列 logspace中开始点和结束点是底数为10的幂我们让开始点为10的0次方结束点为9次方元素个数为10# [ 1. 10. 100. 1000.]anp.logspace(0,3,4)# base2 底数为2, 默认为10# 0: 表示开始为2的0次方# 3: 表示结束为2的3次方# 4: 表示个数,生成4个# 包左包右# [1. 2. 4. 8.]anp.logspace(0,3,4,base2)linspace等差数列np.linspace是用于创建一个一维数组并且是等差数列构成的一维数组它最常用的有三个参数。第一个例子用到三个参数第一个参数表示起始点第二个参数表示终止点第三个参数表示数列的个数。# 1: start 起始# 10: stop 结束# 4: num 总个数# endpoint: 默认True,右闭# [ 1. 4. 7. 10.]anp.linspace(1,10,4,endpointTrue,dtypenp.int32)基础API对数组中的每个元素进行操作。np.ceil():向上最接近的整数参数是 number 或 arraynp.floor():向下最接近的整数参数是 number 或 arraynp.rint():四舍五入参数是 number 或 arraynp.isnan():判断元素是否为 NaN(Not a Number)参数是 number 或 arraynp.multiply():元素相乘参数是 number 或 arraynp. divide():元素相除参数是 number 或 arraynp.abs():元素的绝对值参数是 number 或 arraynp. where(condition,x,y):三元运算符xif condition else yprint(np.ceil(arr))print(np.floor(arr))print(np.rint(arr))print(np.abs(arr))# 相乘:行列数必须相同,等同于 arr * arrprint(np.multiply(arr,arr))print(np.divide(arr,arr))# arr中的每个元素是否大于0print(np.where(arr0,1,-1))统计函数np.mean()np.sum():所有元素的平均值所有元素的和参数是 number 或 arraynp. max()np.min():所有元素的最大值所有元素的最小值参数是 number 或 arraynp.std()np.var ():所有元素的标准差所有元素的方差参数是 number 或 arraynp. argmax()np.argmin():最大值的下标索引值最小值的下标索引值参数是 number 或 arraynp.cumsum()np.cumprod():返回一个一维数组每个元素都是之前所有元素的 累加和 和 累乘积参数是 number或 array多维数组默认统计全部维度axis参数可以按指定轴心统计值为0则按列统计值为1则按行统计。arrnp.arange(12).reshape(3,4) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(arr)# [ 0 1 3 6 10 15 21 28 36 45 55 66]print(np.cumsum(arr))# 累加和# 66print(np.sum(arr))# 求和# 列: [12 15 18 21]print(np.sum(arr,axis0))# 行: [ 6 22 38]print(np.sum(arr,axis1))去重函数np.unique():找到唯一值并返回排序结果类似于Python的set集合arrnp.array([[1,2,1],[2,3,4]]) [[1 2 1] [2 3 4]] print(arr)# [1 2 3 4]print(np.unique(arr))排序函数np.sort() 对数组元素进行排序# [ 1 2 34 5]arrnp.array([1,2,34,5])#np.sort()函数排序返回排序后的副本# [ 1 2 5 34]sortarrnp.sort(arr)# ndarray直接调用sort在原数据上进行修改# [ 1 2 5 34]arr.sort()基本运算减法、乘法(行列一致和行列不一致)。数组的算数运算是按照元素的。新的数组被创建并且被结果填充。# [20 30 40 50]anp.array([20,30,40,50])# [0 1 2 3]bnp.arange(4)# [20 29 38 47]ca-b矩阵乘法行列数一致anp.array([[1,2,3],[4,5,6]])bnp.array([[1,2,3],[4,5,6]]) 相同位置的元素互相相乘。如 a[0][0] * b[0][0] 1 * 1 1。 a[0][1] * b[0][1] 2 * 2 4。 a[0][2] * b[0][2] 3 * 3 9。 a[1][0] * b[1][0] 4 * 4 16。 a[1][1] * b[1][1] 5 * 5 25。 a[1][2] * b[1][2] 6 * 6 36。 [[ 1 4 9] [16 25 36]] # 行列数要一致print(a*b)# 必须要求行列数一致print(np.multiply(a,b))矩阵乘法行列数不一致 [[1 2 3] [4 5 6]] xnp.array([[1,2,3],[4,5,6]]) [[9 8] [6 5] [3 2]] ynp.array([[9,8],[6,5],[3,2]]) x[0][0] * y[0][0] x[0][1] * y[1][0] x[0][2] * y[2][0] [1, 2, 3] * [9, 6, 3] 1 * 9 2 * 6 3 * 3 9 12 9 30 [1, 2, 3] * [8, 5, 2] 1 * 8 2 * 5 3 * 2 8 10 6 24 [4, 5, 6] * [9, 6, 3] 4 * 9 5 * 6 6 * 3 36 30 18 84 [4, 5, 6] * [8, 5, 2] [[30 24] [84 69]] print(x.dot(y))#print(np.dot(x, y))print(x y)# 行列数不一致通过语法糖, A列 B行即可操作结果是:A行B列
数据分析:numpy
发布时间:2026/7/5 8:46:50
一、简介1.1 NumPy简介NumPy(Numerical Python)是Python数据分析必不可少的第三方库。Numpy的出现一定程度上解决了Python运算性能不佳的问题同时提供了更加精确的数据类型使其具备了构造复杂数据类型的能力。本身是由C语言开发是个很基础的扩展NumPy被Python其它科学计算包作为基础包因此理解np的数据类型对NumPy重在数值计算主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵比Python自身的嵌套列表结构要高效的多.NumPy重要功能如下1.高性能科学计算和数据分析的基础包多维数组具有矢量运算能力快速、节省空间2. ndarray,3.矩阵运算无需循环可完成类似Matlab中的矢量运算4.用于读写磁盘数据的工具以及用于操作内存映射文件的工具是一个运行速度非常快的数学库主要用于数组计算。包含:一个强大的N维数组对象ndarray广播功能函数整合 C/C/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能Numpy属性NumPy的数组类被称作ndarray通常被称作数组。ndarray对象属性有:ndarray. ndim纬度几层嵌套ndarray. shape形状ndarray. size大小元素个数ndarray. dtype元素类型ndarray.itemsize1.2 PandasPandas是一个强大的分析结构化数据的工具集它的使用基础是Numpy(提供高性能的矩阵运算)用于数据挖掘和数据分析同时也提供数据清洗功能Pandas利器之 Series是一种类似于一维数组的对象Pandas利器之 DataFrame是Pandas中的一个表格型的数据结构1.3 MatplotlibMatplotlib是一个功能强大的数据可视化开源Python库。Python中使用最多的图形绘图库可以创建静态动态和交互式的图表1.4 SeabornSeaborn是一个Python数据可视化开源库。建立在matplotlib之上并集成了pandas的数据结构Seaborn通过更简洁的API来绘制信息更丰富更具吸引力的图像面向数据集的API与Pandas配合使用起来比直接使用Matplotlib更方便1.5 Sklearnscikit-learn是基于 Python 语言的机器学习工具简单高效的数据挖掘和数据分析工具可供大家在各种环境中重复使用建立在 NumPy SciPy 和 matplotlib 上二、AnacondaAnaconda 是最流行的数据分析平台全球两千多万人在使用Anaconda 附带了一大批常用数据科学包Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的可以帮助你在计算机上安装和管理数据分析相关包包含了虚拟环境管理工具conda create-n虚拟环境名字pythonpython版本号#创建虚拟环境conda activate 虚拟环境名字#进入虚拟环境conda deactivate 虚拟环境名字#退出虚拟环境conda remove-n 虚拟环境名字--all#删除虚拟环境condaenvlist#列举所有环境conda search模块#检索可安装的包的所有版本conda list模块#检查当前环境是否存安装jupyter notebook#activate后打开jupter三、APINumpy数组是一个多维的数组对象(矩阵)称为ndarray具有矢量算术运算能力和复杂的广播能力并具有执行速度快和节省空间的特点。注意:ndarray的下标从0开始且数组里的所有元素必须是相同类型。arange()类似 python 的 range()创建一个一维 ndarrayy数组。importnumpyasnp# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]print(np.arange(15))anp.arange(15).reshape(3,5)print(a) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] print(数组的纬度,a.shape)#几行几列 (3, 5)print(数组轴的个数:,a.ndim)#数组纬度,几层, 2纬数组print(数组元素类型:,a.dtype)# int64print(数组中每个元素的字节大小:,a.itemsize)# int64占用8字节print(数组元素的总个数,a.size)# 所有元素个数 15print(类型:,type(a))# class numpy.ndarray# 范围 0~10, 步长2, 类型为int64# [0 2 4 6 8]arrnp.arange(0,10,2,dtypenp.int64)array()把Python列表 - ndarray对象bnp.array([6,7,8])print(数组b:,b)# [6 7 8]print(数组b类型:,type(b))# class numpy.ndarrayrand()、randint()、uniform()、randn()随机生成# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维)rand固定区间0.0 ~ 1.0 [[0.31691335 0.90146359 0.82516704 0.46770785] [0.29621857 0.51238154 0.74082077 0.60887821] [0.67011043 0.77226119 0.21435528 0.17993468]] arrnp.random.rand(3,4)print(arr)print(type(arr))# class numpy.ndarray# 生成指定维度大小(3行4列)的随机多维整型数据(二维)randint()可指定区间(-1,5) [[ 2 1 2 4] [ 0 -1 3 0] [ 1 -1 3 1]] arrnp.random.randint(-1,5,size(3,4))# 生成指定维度大小(3行4列)的随机多维小数数据(二维)randint()可指定区间(-1,5) [[ 2.66014273 1.47597597 3.03103291 4.66081343] [ 2.01176883 1.14651087 4.91733097 -0.85668461] [-0.25588651 1.11584233 0.56430666 2.36723165]] arrnp.random.uniform(-1,5,size(3,4))# 返回具有标准正态分布的序列 [[ 0.30547271 0.31586077 -1.13650364] [-0.36588039 -0.97770015 1.24721691]] arrnp.random.randn(2,3)astype()类型转换# 范围 0~10, 步长2, 类型为int64# [0 2 4 6 8]arrnp.arange(0,10,2,dtypenp.int64)print(arr)# [0. 2. 4. 6. 8.]arr2arr.astype(np.float32)print(arr2.dtype)# float32logspace()等比数列 logspace中开始点和结束点是底数为10的幂我们让开始点为10的0次方结束点为9次方元素个数为10# [ 1. 10. 100. 1000.]anp.logspace(0,3,4)# base2 底数为2, 默认为10# 0: 表示开始为2的0次方# 3: 表示结束为2的3次方# 4: 表示个数,生成4个# 包左包右# [1. 2. 4. 8.]anp.logspace(0,3,4,base2)linspace等差数列np.linspace是用于创建一个一维数组并且是等差数列构成的一维数组它最常用的有三个参数。第一个例子用到三个参数第一个参数表示起始点第二个参数表示终止点第三个参数表示数列的个数。# 1: start 起始# 10: stop 结束# 4: num 总个数# endpoint: 默认True,右闭# [ 1. 4. 7. 10.]anp.linspace(1,10,4,endpointTrue,dtypenp.int32)基础API对数组中的每个元素进行操作。np.ceil():向上最接近的整数参数是 number 或 arraynp.floor():向下最接近的整数参数是 number 或 arraynp.rint():四舍五入参数是 number 或 arraynp.isnan():判断元素是否为 NaN(Not a Number)参数是 number 或 arraynp.multiply():元素相乘参数是 number 或 arraynp. divide():元素相除参数是 number 或 arraynp.abs():元素的绝对值参数是 number 或 arraynp. where(condition,x,y):三元运算符xif condition else yprint(np.ceil(arr))print(np.floor(arr))print(np.rint(arr))print(np.abs(arr))# 相乘:行列数必须相同,等同于 arr * arrprint(np.multiply(arr,arr))print(np.divide(arr,arr))# arr中的每个元素是否大于0print(np.where(arr0,1,-1))统计函数np.mean()np.sum():所有元素的平均值所有元素的和参数是 number 或 arraynp. max()np.min():所有元素的最大值所有元素的最小值参数是 number 或 arraynp.std()np.var ():所有元素的标准差所有元素的方差参数是 number 或 arraynp. argmax()np.argmin():最大值的下标索引值最小值的下标索引值参数是 number 或 arraynp.cumsum()np.cumprod():返回一个一维数组每个元素都是之前所有元素的 累加和 和 累乘积参数是 number或 array多维数组默认统计全部维度axis参数可以按指定轴心统计值为0则按列统计值为1则按行统计。arrnp.arange(12).reshape(3,4) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(arr)# [ 0 1 3 6 10 15 21 28 36 45 55 66]print(np.cumsum(arr))# 累加和# 66print(np.sum(arr))# 求和# 列: [12 15 18 21]print(np.sum(arr,axis0))# 行: [ 6 22 38]print(np.sum(arr,axis1))去重函数np.unique():找到唯一值并返回排序结果类似于Python的set集合arrnp.array([[1,2,1],[2,3,4]]) [[1 2 1] [2 3 4]] print(arr)# [1 2 3 4]print(np.unique(arr))排序函数np.sort() 对数组元素进行排序# [ 1 2 34 5]arrnp.array([1,2,34,5])#np.sort()函数排序返回排序后的副本# [ 1 2 5 34]sortarrnp.sort(arr)# ndarray直接调用sort在原数据上进行修改# [ 1 2 5 34]arr.sort()基本运算减法、乘法(行列一致和行列不一致)。数组的算数运算是按照元素的。新的数组被创建并且被结果填充。# [20 30 40 50]anp.array([20,30,40,50])# [0 1 2 3]bnp.arange(4)# [20 29 38 47]ca-b矩阵乘法行列数一致anp.array([[1,2,3],[4,5,6]])bnp.array([[1,2,3],[4,5,6]]) 相同位置的元素互相相乘。如 a[0][0] * b[0][0] 1 * 1 1。 a[0][1] * b[0][1] 2 * 2 4。 a[0][2] * b[0][2] 3 * 3 9。 a[1][0] * b[1][0] 4 * 4 16。 a[1][1] * b[1][1] 5 * 5 25。 a[1][2] * b[1][2] 6 * 6 36。 [[ 1 4 9] [16 25 36]] # 行列数要一致print(a*b)# 必须要求行列数一致print(np.multiply(a,b))矩阵乘法行列数不一致 [[1 2 3] [4 5 6]] xnp.array([[1,2,3],[4,5,6]]) [[9 8] [6 5] [3 2]] ynp.array([[9,8],[6,5],[3,2]]) x[0][0] * y[0][0] x[0][1] * y[1][0] x[0][2] * y[2][0] [1, 2, 3] * [9, 6, 3] 1 * 9 2 * 6 3 * 3 9 12 9 30 [1, 2, 3] * [8, 5, 2] 1 * 8 2 * 5 3 * 2 8 10 6 24 [4, 5, 6] * [9, 6, 3] 4 * 9 5 * 6 6 * 3 36 30 18 84 [4, 5, 6] * [8, 5, 2] [[30 24] [84 69]] print(x.dot(y))#print(np.dot(x, y))print(x y)# 行列数不一致通过语法糖, A列 B行即可操作结果是:A行B列