实验题目: 数据分析基础
实验目的:1.掌握 Anaconda与 Jupyter Notebook的安装与使用方法 2.掌握 NumPy 创建数组、矩阵的方法以及常用的方法
3.掌握 NumPy 统计分析方法
实验环境(硬件和软件)1.硬件环境:普通PC机
2.软件环境:Windows操作系统、Jupyter Notebook
实验内容:(一)安装 Anaconda软件并使用 Jupyter Notebook
1、启动 Jupyter Notebook
2、新建一个 Notebook
3、使用 Markdown 功能,创建标题、列表、字体、表格、数学公式
(二)NumPy 数值计算
1、创建 NumPy数组对象ndarray,并生成随机数,通过索引访问数组,并
变换数组的形态。
2、创建 NumPy 矩阵,使用 ufunc 函数
3、利用 NumPy 进行统计分析
实验步骤:
①步骤 1:安装 Anaconda
访问 Anaconda 官网下载相应操作系统的安装包。
运行下载的安装包,并按照安装向导完成安装。
安装完成后,重启计算机。
步骤 2:启动 Jupyter Notebook
打开命令行或终端。
输入 jupyter notebook 命令并回车。
在默认浏览器中打开 Jupyter Notebook 的控制面板。
步骤 3:新建一个 Notebook
在 Jupyter Notebook 控制面板中,点击右上角的“New”按钮。
选择“Python 3”或你安装的其他 Python 版本来创建新的 Notebook。
步骤 4:使用 Markdown 功能
在新建的 Notebook 中,选择一个新的单元格(Cell),点击工具栏上的“Cell” > “Cell Type” > “Markdown”。
创建标题:输入 # 标题,## 子标题 等。
创建列表:输入 - 列表项 或 * 列表项。
改变字体样式:使用 **粗体** 或 *斜体*。
创建表格:使用 | 表头1 | 表头2 | 和 --- | --- | ---。
插入数学公式:使用 $x^2 + y^2 = z^2$ 来显示数学公式。
步骤 5:创建 NumPy 数组对象 ndarray
步骤 6:创建 NumPy 矩阵,使用 ufunc 函数
创建矩阵:使用 np.matrix([[1, 2], [3, 4]])。
使用 ufunc 函数:例如,使用 np.sin() 或 np.cos() 对矩阵进行运算。
步骤 7:利用 NumPy 进行统计分析
计算平均值:使用 np.mean(array)。
计算标准差:使用 np.std(array)。
计算最大值和最小值:使用 np.max(array) 和 np.min(array)。
实验数据记录:
创建数组代码numpy.array(object, dtype=None, copy=True, order='K',subok=False, ndmin=0)生成随机数代码rand函数用来生成(0,1)之间的随机数组numpy.random.rand(d0,d1,d2,d3...dn)randn函数用于从正态分布中返回随机生成的数组numpy.random.randn(d0,d1,d2,d3...dn)randint函数,生成给定上下范围的随机数Numpy.random.randint(low,high=None,size=None)normal用于正态分布生成的随机数numpy.random.normal(loc,scale,size)通过索引访问数组一维数组切片式索引import numpy as np n1=np.array([1,2,3]) #创建一维数组 print(n1[0]) #输出第1个元素 print(n1[1]) #输出第2个元素 print(n1[0:2]) #输出第1个元素至第3个元素(不包括第3个元素) print(n1[1:]) #输出从第2个元素开始以后的元素 print(n1[:2]) #输出第1个元素(0省略)至第3个元素(不包括第3个元素)二维数组索引import numpy as np #创建3行4列的二维数组n=np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]]) print(n[1]) #输出第2行的元素 print(n[1,2]) #输出第2行第3列的元素 print(n[-1]) #输出倒数第1行的元素变换数组的形态reshape改变数组维度import numpy as np n=np.arange(6) #创建一维数组 print(n) n1=n.reshape(2,3) #将数组重塑为2行3列的二维数组 print(n1)使用ravel函数展平数组 arr.ravel()与ravel函数的区别,flatten函数可以选择横向或纵向展平 arr.flatten() arr.flatten(‘F’)组合数组使用hstack函数实现数组横向组合:np.hstack((arr1,arr2))使用vstack函数实现数组纵向组合:np.vstack((arr1,arr2))使用concatenate函数实现数组横向组合:np.concatenate((arr1,arr2),axis = 1))使用concatenate函数实现数组纵向组合:np.concatenate((arr1,arr2),axis = 0))切割数组使用hsplit函数实现数组横向分割: np.hsplit(arr1, 2)使用vsplit函数实现数组纵向分割: np.vsplit(arr, 2)使用split函数实现数组横向分割: np.split(arr, 2, axis=1)使用split函数实现数组纵向分割: np.split(arr, 2, axis=0)数组转置(n,T),(n,transpose)数组的查询numpy.where(condition,x,y)创建矩阵使用 mat函数创建矩阵,程序代码如下:import numpy as np a = np.mat('5 6;7 8') b = np.mat([[1,2],[3,4]]) print(a) print(b) print(type(a)) print(type(b)) n1 = np.array([[1,2],[3,4]]) print(n1) print(type(n1))创建对角矩阵,程序代码如下:import numpy as np data1 = np.mat(np.eye(2,2,dtype=int))#2*2对角矩 阵 print(data1) data1 = np.mat(np.eye(4,4,dtype=int))#4*4对角矩 阵 print(data1)bmat函数创建矩阵,分块矩阵矩阵与数相乘:matr1*3矩阵相加减:matr1±matr2矩阵相乘:matr1*matr2矩阵对应元素相乘:np.multiply(matr1,matr2)T 返回自身的转置H 返回自身的共轭转置I 返回自身的逆矩阵A 返回自身数据的2维数组的一个视图ufunc函数代码全称通用函数(universal function),是一种能够对数组中所有元素进行操作的函数。四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同。比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”。运算结果返回布尔值。数组的四则运算x = np.array([1,2,3])y = np.array([4, 5,6])print(’数组相加结果为:’,x + y) #数组相加 数组相加结果为:[579]print('数组相减结果为:’,x - y) #数组相减 数组相减结果为:[-3-3 -3]print(’数组相乘结果为:’,x * y) #数组相乘 数组相乘结果为:[41018]print(’数组相除结果为:’,x / y) #数组相除 数组相除结果为:[0.250.40.5]print('数组幂运算结果为:’,x ** y)#数组幂运算数组幂运算结果为:[132729]数组的比较运算x = np.array([1, 3,5]) y = np.array([2,3,4])print('数组比较结果为:’,x<y)数组比较结果为:[True False Falselprint(’数组比较结果为:’,x > y)数组比较结果为:[False False True]print(’数组比较结果为:’,x=y)数组比较结果为:[False True False]print('数组比较结果为:’,x >= y) 数组比较结果为:[False True True]print ('数组比较结果为:’,x <= y) 数组比较结果为:[True True Falselprint(’数组比较结果为:’,x != y)数组比较结果为:[True False True]Numpy常用统计分析方法argsort函数返回值为重新排序值的下标。 arr.argsort()lexsort函数返回值是按照最后一个传入数据排序的。 np.lexsort((a,b,c))去重与重复数据、通过unique函数可以找出数组中的唯一值并返回已排序的结果。tile函数主要有两个参数,参数“A”指定重复的数组,参数“reps”指定重复的次数。np.tile(A,reps)repeat函数主要有三个参数,参数“a”是需要重复的数组元素,参数“repeats”是重复次数,参数“axis”指定沿着哪个轴进行重复,axis = 0表示按行进行元素重复;axis = 1表示按列进行元素重复。numpy.repeat(a, repeats, axis=None)这两个函数的主要区别在于,tile函数是对数组进行重复操作,repeat函数是对数组中的每个元素进行重复操作。NumPy中常用统计函数的使用arr np. arange(20).reshape(4,5) print(创建的数组为:\n’,arr)创建的数组为:[[01 234][56789][10 11 12 13 14][15 16171819]]print(数组的和为:’,np.sun(arr))#计算数组的和数组的和为:190print(’数组横轴的和为:’,arr.sum(axis= 0))#沿着纠轴计算求和数组横轴的和为:[303438 42 46]print(数组纵轴的和为:’,arr.sum(axis = 1))#沿着横轴计算求和数组纵轴的和为:[103560 85]print(数组的均值为:’,np.mean(arr)) #计算数组均值 数组的均值为:9.5print(数组横轴的均值为:’,arr.mean(axis = 0)) #沿着纵轴计算数组均值数组横轴的均值为:[7.58.5 9.5 10.5 11.5]print(数组纵轴的均值为:’,arr.mean(axis = 1)) #沿着横轴计算数组均值 数组纵轴的均值为:[2.7.12. 17.]print(’数组的标准差为:’,np.std(arr)) #计算数组标准差 数组的标准差为:5.76628129734print(数组的方差为:’,np.var(arr)) #计算数组方差数组的方差为:33.25print(数组的最小值为:’,np.min(arr))#计算数组最小值数组的最小值为:0print('数组的最大值为:’,np.max(arr))#计算数组最大值数组的最大值为:19print(’数组的最小元素为:’,np.argnin(arr))#返回数组最小元素的索引数组的最小元素为:0print(数组的最大元素为:’,np.argmax(arr)) #返回数组最大元素的索引 数组的最大元素为:19cumsum函数和cumprod函数的使用arr = np.arange (2,10) print ('创建的数组为:’,arr)创建的数组为:[23456789]print('数组元素的累计和为:’,np.cumsun(arr))#计算所有元素的累计和数组元素的累计和为:[259142027 35 44]print(’数组元素的累计积为:’,np.cumprod(arr)) #计算所有元素的累计积 数组元素的累计积为:[ 2 24 120 720 5040 40320 362880]
问题讨论:
问题一:安装Anaconda和Jupyter Notebook时遇到兼容性问题
问题描述: 在Windows操作系统上安装Anaconda时,可能会遇到与现有软件冲突或兼容性问题,导致安装失败或功能不正常。
解决方法:
检查系统要求: 确保你的Windows操作系统版本满足Anaconda的最低要求。
使用管理员权限安装: 在安装Anaconda时,右键点击安装程序,选择“以管理员身份运行”。
检查环境变量: 确保Anaconda的安装路径已经添加到系统的环境变量中,这样可以在任何地方调用Anaconda命令。
问题二:使用NumPy进行数组操作时出现错误
问题描述: 在使用NumPy创建数组或进行数组操作时,可能会遇到索引错误、维度不匹配等错误。
解决方法:
检查数组维度: 在进行数组操作前,使用.shape属性检查数组的维度,确保操作符合预期。
使用正确的索引: 确保使用正确的索引访问数组元素,NumPy的索引从0开始。