数据分析和可视化课程实验报告一(数据分析基础)

server/2025/3/11 4:27:25/

实验题目:               数据分析基础                      

实验目的: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开始。


http://www.ppmy.cn/server/174093.html

相关文章

C++ 滑动窗口

前言 C 中滑动窗口分两种&#xff0c;一种是给定窗口长度&#xff0c;还有一种是不定长窗口长度。 本篇文章主要讲解这两种状态的滑动窗口&#xff0c;结合例题让读者更好的理解 一、给定窗口长度K 一般的&#xff0c;对于给定窗口长度的题&#xff0c;通常要求我们对窗口内…

新型神经网络KAN:准确性高且易于解释

人工神经网络&#xff08;ANN&#xff09;是现代人工智能的核心技术&#xff0c;广泛应用于聊天机器人、图像生成器等领域。然而&#xff0c;传统的神经网络由于其复杂的结构和大量的神经元连接&#xff0c;往往被视为“黑匣子”&#xff0c;难以解释其内部工作原理。近年来&am…

nginx配置反向代理服务器,实现在https网站中请求http资源

文章目录 一、前言二、Nginx反向代理的工作原理三、Nginx反向代理的主要功能‌四、Nginx反向代理的配置和使用场景五、实战配置5.1 首先&#xff0c;修改宝塔面板配置5.2 接着配置代理服务器5.3 完成上面所有配置后5.4最后还要在原来的index.html文件里添加5.5 或者可以操作服务…

Map<String,Object>转换为XML报文的方法

1. 使用 JAXB (Java Architecture for XML Binding) JAXB 是 Java 标准库的一部分&#xff0c;支持将 Java 对象与 XML 相互转换。虽然 JAXB 主要用于将 Java 对象转换为 XML&#xff0c;但可以通过一些技巧将 Map<String, Object> 转换为 XML。 示例代码 import java…

firewalld富规则配置黑名单

1. 屏蔽指定 IP 地址 firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.100 reject"参数说明 --permanent:将规则永久保存,重启后仍然生效。--add-rich-rule:添加一条富规则。rule family=ipv4:指定规则适用于 IPv4 地址。…

可视化大屏出圈密码:地图组件深度解析

01 组件介绍 在数据可视化大屏搭建中&#xff0c;地图组件是使用最频繁且重要的组件之一。它不但能直观展现地理方位相关信息&#xff0c;还能通过与标记点、飞线、图表等各类组件巧妙搭配&#xff0c;达成更加多元、生动的数据呈现效果&#xff0c;在众多行业领域都得到了广泛…

音视频入门基础:RTP专题(16)——RTP封装音频时,音频的有效载荷结构

一、引言 《RFC 3640》和《RFC 6416》分别定义了两种对MPEG-4流的RTP封包方式&#xff0c;这两个文档都可以从RFC官网下载&#xff1a; RFC Editor 本文主要对《RFC 3640》中的音频打包方式进行简介。《RFC 3640》总共有43页&#xff0c;本文下面所说的“页数”是指在pdf阅读…

django中序列化器serializer 的高级使用和需要注意的点

在 Django REST framework(DRF)中,序列化器(Serializer)是一个强大的工具,用于将复杂的数据类型(如 Django 模型实例)转换为 Python 原生数据类型,以便将其渲染为 JSON、XML 等格式,同时也能将接收到的外部数据反序列化为 Django 模型实例。以下将介绍序列化器的高级…