实验题目:++++数据分析基础++++
实验目的:++++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 Falsel
print('数组比较结果为:',x > y)
数组比较结果为:[False False True]
print('数组比较结果为:',x=y)
数组比较结果为:[False True False]
print('数组比较结果为:',x >= y)
数组比较结果为:[False True True]
print ('数组比较结果为:',x <= y)
数组比较结果为:[True True Falsel
print('数组比较结果为:',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))#计算数组的和
数组的和为:190
print('数组横轴的和为:',arr.sum(axis= 0))#沿着纠轴计算求和
数组横轴的和为:[303438 42 46]
print(数组纵轴的和为:',arr.sum(axis = 1))#沿着横轴计算求和
数组纵轴的和为:[103560 85]
print(数组的均值为:',np.mean(arr)) #计算数组均值
数组的均值为:9.5
print(数组横轴的均值为:',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.76628129734
print(数组的方差为:',np.var(arr)) #计算数组方差
数组的方差为:33.25
print(数组的最小值为:',np.min(arr))#计算数组最小值
数组的最小值为:0
print('数组的最大值为:',np.max(arr))#计算数组最大值
数组的最大值为:19
print('数组的最小元素为:',np.argnin(arr))#返回数组最小元素的索引
数组的最小元素为:0
print(数组的最大元素为:',np.argmax(arr)) #返回数组最大元素的索引
数组的最大元素为:19
cumsum函数和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开始。