AI大模型开发第三阶段Day05【Python数据分析开源库和环境搭建、Jupyter Notebook、Numpy】本文配套讲义下载链接如下https://download.csdn.net/download/weixin_46411355/92960169本文配套代码下载链接如下https://download.csdn.net/download/weixin_46411355/92960173文章目录AI大模型开发第三阶段Day05【Python数据分析开源库和环境搭建、Jupyter Notebook、Numpy】本文配套讲义下载链接如下本文配套代码下载链接如下今日内容大纲1.Python数据处理分析简介2.常用Python数据分析开源库介绍3.Python数据分析环境搭建-本地环境4.Jupyter Lab初体验5.Jupyter NoteBook初体验6.Jupyter NoteBook的使用7.配置PyCharm连接Anaconda8.Numpy的ndarray的属性9.Numpy的ndarray的创建10.Numpy的内置函数11.Numpy运算今日内容大纲Python数据分析的优势Python数据分析环境搭建Jupyter Lab 和 Jupyter Notebook初体验配置PyCharm连接JupyterNumpy详解属性创建内置函数运算1.Python数据处理分析简介Python作为当下最为流行的编程语言之一可以独立完成数据分析的各种任务数据分析领域里有海量开源库机器学习/深度学习领域最热门的编程语言在爬虫Web开发等领域均有应用与ExcelPowerBITableau等软件比较Excel有百万行数据限制PowerBI Tableau在处理大数据的时候速度相对较慢ExcelPower BI 和Tableau 需要付费购买授权Python功能远比ExcelPowerBITableau等软件强大Python跨平台WindowsMacOSLinux都可以运行与R语言比较Python在处理海量数据的时候比R语言效率更高Python的工程化能力更强R专注于统计与数据分析领域Python在非结构化数据文本图像和深度学习领域比R更有优势在数据分析相关开源社区python相关的内容远多于R语言总结Python应用广泛, 且是当下最热门的编程语言之一.Python功能强大, 且开源, 免费.Python的社区活跃度相对较高.2.常用Python数据分析开源库介绍NumPy(Numerical Python)它是 Python 语言的一个扩展程序库。是一个运行速度非常快的数学库.主要用于数组计算包含一个强大的N维数组对象 ndarray广播功能函数整合 C/C/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能PandasPandas是一个强大的分析结构化数据的工具集它的使用基础是Numpy提供高性能的矩阵运算用于数据挖掘和数据分析同时也提供数据清洗功能Pandas利器之 Series是一种类似于一维数组的对象Pandas利器之 DataFrame是Pandas中的一个表格型的数据结构Matplotlib它是一个功能强大的数据可视化开源Python库Python中使用最多的图形绘图库可以创建静态, 动态和交互式的图表Seaborn它是一个Python数据可视化开源库, 建立在matplotlib之上并集成了pandas的数据结构Seaborn通过更简洁的API来绘制信息更丰富更具吸引力的图像面向数据集的API与Pandas配合使用起来比直接使用Matplotlib更方便Sklearnscikit-learn 是基于 Python 语言的机器学习工具简单高效的数据挖掘和数据分析工具可供大家在各种环境中重复使用建立在 NumPy SciPy 和 matplotlib 上jupyter notebook它不是开源库,它是一个开源Web应用程序, 可以创建和共享代码、公式、可视化图表、笔记文档是数据分析学习和开发的首选开发环境, 作用如下:数据清理和转换数值模拟统计分析数据可视化机器学习等3.Python数据分析环境搭建-本地环境主要有本地环境和虚拟机环境两种, 区别是: 看在哪里安装Anaconda软件.Anaconda介绍Anaconda 是最流行的数据分析平台全球两千多万人在使用Anaconda 附带了一大批常用数据科学包Anaconda 是在 conda一个包管理器和环境管理器上发展出来的可以帮助你在计算机上安装和管理数据分析相关包包含了虚拟环境管理工具Anaconda安装Anaconda 可用于多个平台 Windows、Mac OS X 和 Linux可以在官网上下载对应平台的安装包如果计算机上已经安装了 Python安装不会对你有任何影响下载链接为: https://www.anaconda.com/products/individual安装的过程很简单一路下一步即可检测是否安装成功Anaconda界面介绍Anaconda的命令操作安装包的命令# 安装包的命令conda install 包名字 pip install 报名字# 注意使用pip时最好指定安装源, 参考镜像地址,阿里云https://mirrors.aliyun.com/pypi/simple/豆瓣https://pypi.douban.com/simple/清华大学https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/# 完整格式如下pip install 包名-i https://mirrors.aliyun.com/pypi/simple/#通过阿里云镜像安装操作虚拟环境(沙箱)的命令通过命令行创建虚拟环境 conda create-n 虚拟环境名字 pythonpython版本#创建虚拟环境conda activate 虚拟环境名字#进入虚拟环境conda deactivate 虚拟环境名字#退出虚拟环境conda remove-n 虚拟环境名字--all#删除虚拟环境conda envlist# 查看所有虚拟环境(沙箱)以管理员的身份打开 Anaconda的命令窗口, 运行jupyter lab 或者 jupyter notebook即可4.Jupyter Lab初体验去Linux虚拟机中, 启动 jupyter环境即可打开浏览器, 输入上边的网址.5.Jupyter NoteBook初体验输入虚拟机的密码确保你的C盘hosts文件, 配置了域名映射-- 路径为: C:\Windows\System32\drivers\etc\hosts-- 内容如下:192.168.88.161node1.itcast.cn node1去Linux虚拟机中, 启动 jupyter环境即可打开浏览器, 输入上边的网址, 新建1个 numpy文件夹新建1个test1测试文件.输入测试代码, 测试执行即可.6.Jupyter NoteBook的使用菜单栏中相关按钮功能介绍Jupyter Notebook的代码的输入框和输出显示的结果都称之为cellcell行号前的 * 表示代码正在运行常用快捷键Jupyter Notebook中分为两种模式命令模式和编辑模式两种模式通用快捷键ShiftEnter执行本单元代码并跳转到下一单元CtrlEnter执行本单元代码留在本单元按ESC进入命令模式Ycell切换到Code模式Mcell切换到Markdown模式A在当前cell的上面添加cellB在当前cell的下面添加cell双击D删除当前cell编辑模式按Enter进入或鼠标点击代码编辑框体的输入区域撤销CtrlZMac:CMDZ反撤销:Ctrl YMac:CMDY补全代码变量、方法后跟Tab键为一行或多行代码添加/取消注释Ctrl/Mac:CMD/代码提示:shift Tab使用Markdown敲回车进入到编辑模式按一下Esc再按一下M 进入到Markdown编辑模式再按ShiftEnter在命令模式中按M即可进入到Markdown编辑模式使用Markdown语法可以在代码间穿插格式化的文本作为说明文字或笔记Markdown基本语法标题和缩进代码如下:效果图如下7.配置PyCharm连接Anaconda连接本地的Anaconda环境连接本地的Anaconda环境确保Linux的Jupyter环境开启了配置方式和上述步骤一样,只不过把URL地址换成 http://192.168.88.161:88888.Numpy的ndarray的属性Ctrl Shift Enter 向下换行Jupyter notebook快捷键Numpy简介NumPyNumerical Python是Python数据分析必不可少的第三方库NumPy的出现一定程度上解决了Python运算性能不佳的问题同时提供了更加精确的数据类型使其具备了构造复杂数据类型的能力。本身是由C语言开发是个很基础的扩展NumPy被Python其它科学计算包作为基础包因此理解np的数据类型对python数据分析十分重要。NumPy重在数值计算主要用于多维数组矩阵处理的库。用来存储和处理大型矩阵比Python自身的嵌套列表结构要高效的多重要功能如下高性能科学计算和数据分析的基础包ndarray多维数组具有矢量运算能力快速、节省空间矩阵运算无需循环可完成类似Matlab中的矢量运算用于读写磁盘数据的工具以及用于操作内存映射文件的工具Numpy的属性NumPy的数组类被称作ndarray通常被称作数组。ndarray.ndimndarray.shapendarray.sizendarray.dtypendarray.itemsize数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排 m列的矩阵它的shape属性将是(2,3),这个元组的长度显然是秩即维度或者ndim属性。代码演示# numpy属性介绍: shape, dtype, ndim, itemsize, size# 导包importnumpyasnp# 1. 创建numpy的数组.# arange(15) 等价于python的 range(15), 即: 获取 0 ~ 14的整数# reshape(3, 5) 把上述数据封装到 3个一维数组中, 每个一维数组的长度为: 5, 然后把三个一维数组封装成1个 二维数组.arrnp.arange(15).reshape(3,5)# 2. 打印数组, 查看内容print(arr)# 3. 演示numpy的 属性print(f数组的维度:{arr.shape})# (3, 5) 3个元素(一维数组), 每个元素(一维数组)又有5个元素(值)print(f数组轴的个数:{arr.ndim})# 几维数组, 轴就是几, 2print(f数组元素类型:{arr.dtype})# int64print(f数组每个元素的占用字节数:{arr.itemsize})# 8print(f数组元素个数:{arr.size})# 15print(f数组类型:{type(arr)})# class numpy.ndarray# 4. 上述的 shape, ndim, size属性 可以 函数写法 实现.# 格式: np.函数名(数组)print(f数组的维度:{np.shape(arr)})# (3, 5) 3个元素(一维数组), 每个元素(一维数组)又有5个元素(值)print(f数组轴的个数:{np.ndim(arr)})# 几维数组, 轴就是几, 2print(f数组元素个数:{np.size(arr)})# 15print(f数组类型:{type(arr)})# class numpy.ndarray9.Numpy的ndarray的创建ndarray介绍NumPy数组是一个多维的数组对象矩阵称为ndarray(N-Dimensional Array)具有矢量算术运算能力和复杂的广播能力并具有执行速度快和节省空间的特点注意ndarray的下标从0开始且数组里的所有元素必须是相同类型。数组形式importnumpyasnp anp.array([2,3,4])print(数组a元素类型: ,a)print(数组a类型:,a.dtype)bnp.array([1.2,3.5,5.1])print(数组b类型:,b.dtype)zeros() /ones()/empty()函数zeros创建一个全是0的数组函数ones创建一个全1的数组函数empty创建一个内容随机并且依赖于内存状态的数组。默认创建的数组类型(dtype)都是float64zero1np.zeros((3,4))# 3个一维数组, 每个长度为: 4print(数组zero1: ,zero1)ones1np.ones((2,3,4))# 2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中print(数组one1: ,ones1)empty1np.empty((2,3))print(数组empty1: ,empty1)print(zero1.dtype,ones1.dtype,empty1.dtype)arange(),类似 python 的 range() 创建一个一维 ndarray 数组。np_arangenp.arange(10,20,5,dtypeint)# 起始, 结束, 步长, 类型print(arange创建np_arange:,np_arange)print(arange创建np_arange的元素类型:,np_arange.dtype)print(arange创建np_arange的类型:,type(np_arange))matrix(), 是 ndarray 的子类只能生成 2 维的矩阵x1np.mat(1 2;3 4)print(x1)x2np.matrix(1,2;3,4)print(x2)x3np.matrix([[1,2,3,4],[5,6,7,8]])print(x3)创建随机数矩阵importnumpyasnp# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0arrnp.random.rand(3,4)print(arr)print(type(arr))# 生成指定维度大小(3行4列)的随机多维整型数据(二维), randint()可指定区间(-1, 5)arrnp.random.randint(-1,5,size(3,4))print(arr)print(type(arr))#生成指定维度大小(3行4列)的随机多维浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值arrnp.random.uniform(-1,5,size(3,4))print(arr)print(type(arr))ndarray的数据类型# 细节1.dtype参数指定数组的数据类型类型名位数如float64,int322.astype方法转换数组的数据类型# 初始化3行4列数组数据类型为f1oat64zeros_float_arrnp.zeros((3,4),dtypenp.float64)print(zeros_float_arr)print(zeros_float_arr.dtype)# float64# astype转换数据类型将已有的数组的数据类型转换为int32zeros_int_arrzeros_float_arr.astype(np.int32)print(zeros_int_arr)print(zeros_int_arr.dtype)#int32等比数列# np.logspace 等比数列, logspace中开始点和结束点是10的幂# 我们让开始点为0结束点为0元素个数为10看看输出结果。anp.logspace(0,0,10)# 输出结果a# 假如我们想要改变基数不让它以10为底数我们可以改变base参数将其设置为2# 假如我们想要改变基数不让它以10为底数我们可以改变base参数将其设置为2等差数列# np.linspace等差数列# np.linspace是用于创建一个一维数组并且是等差数列构成的一维数组它最常用的有三个参数。# 第一个例子用到三个参数第一个参数表示起始点第二个参数表示终止点第三个参数表示数列的个数。10.Numpy的内置函数基本函数# 基本函数如下np.ceil():向上最接近的整数参数是 number 或 array np.floor():向下最接近的整数参数是 number 或 array np.rint():四舍五入参数是 number 或 array np.isnan():判断元素是否为 NaN(Not a Number)参数是 number 或 array np.multiply():元素相乘参数是 number 或 array np.divide():元素相除参数是 number 或 array np.abs()元素的绝对值参数是 number 或 array np.where(condition,x,y):三元运算符xifconditionelsey# 注意: 需要注意multiply/divide 如果是两个ndarray进行运算 shape必须一致# 示例代码arrnp.random.randn(2,3)print(arr)print(np.ceil(arr))print(np.floor(arr))print(np.rint(arr))print(np.isnan(arr))print(np.multiply(arr,arr))print(np.divide(arr,arr))print(np.where(arr0,1,-1))统计函数np.mean(),np.sum()所有元素的平均值所有元素的和参数是 number 或 array np.max(),np.min()所有元素的最大值所有元素的最小值参数是 number 或 array np.std(),np.var()所有元素的标准差所有元素的方差参数是 number 或 array np.argmax(),np.argmin()最大值的下标索引值最小值的下标索引值参数是 number 或 array np.cumsum(),np.cumprod()返回一个一维数组每个元素都是之前所有元素的 累加和 和 累乘积参数是 number 或 array# 多维数组默认统计全部维度axis参数可以按指定轴心统计值为0则按列统计值为1则按行统计。# 实例代码arrnp.arange(12).reshape(3,4)print(arr)print(np.cumsum(arr))# 返回一个一维数组, 每个元素都是之前所有元素的 累加和print(np.sum(arr))# 所有元素的和print(np.sum(arr,axis0))#数组的按列统计和print(np.sum(arr,axis1))#数组的按行统计和比较函数假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等我们需要使用all方法 假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等我们需要使用any方法。# np.any(): 至少有一个元素满足指定条件返回True# np.all(): 所有的元素满足指定条件返回True# 实例代码arrnp.random.randn(2,3)print(arr)print(np.any(arr0))print(np.all(arr0))去重函数# np.unique():找到唯一值并返回排序结果类似于Python的set集合# 实例代码arrnp.array([[1,2,1],[2,3,4]])print(arr)print(np.unique(arr))排序函数arrnp.array([1,2,34,5])print(原数组arr:,arr)# np.sort()函数排序, 返回排序后的副本sortarr1np.sort(arr)print(numpy.sort()函数排序后的数组:,sortarr1)# ndarray直接调用sort, 在原数据上进行修改arr.sort()print(数组.sort()方法排序:,arr)11.Numpy运算基本运算# 数组的算数运算是按照元素的。新的数组被创建并且被结果填充。# 示例代码importnumpyasnp anp.array([20,30,40,50])bnp.arange(4)ca-bprint(数组a:,a)print(数组b:,b)print(数组运算a-b:,c)两个ndarray, 一个是arr_a 另一个是arr_b它们俩之间进行 arr_a arr_b 或 arr_a - arr_b 或 arr_a * arr_b 这样计算的前提是 shape相同计算的时候, 位置对应的元素 进行 加减乘除的计算, 计算之后得到的结果的shape 跟arr_a /arr_b 一样矩阵运算arr_a.dot(arr_b) 前提arr_a 列数 arr_b行数场景1importnumpyasnp anp.array([[1,2,3],[4,5,6]])bnp.array([[1,2,3],[4,5,6]])print(a*b)print(np.multiply(a,b))场景2​importnumpyasnp xnp.array([[1,2,3],[4,5,6]])ynp.array([[6,23],[-1,7],[8,9]])print(x)print(y)print(x.dot(y))print(np.dot(x,y))ape相同计算的时候, 位置对应的元素 进行 加减乘除的计算, 计算之后得到的结果的shape 跟arr_a /arr_b 一样矩阵运算arr_a.dot(arr_b) 前提arr_a 列数 arr_b行数场景1[外链图片转存中…(img-2QKxE5Im-1781017195061)]importnumpyasnp anp.array([[1,2,3],[4,5,6]])bnp.array([[1,2,3],[4,5,6]])print(a*b)print(np.multiply(a,b))[外链图片转存中…(img-nAjr0ReB-1781017195061)]场景2[外链图片转存中…(img-kIAnvuyu-1781017195061)]​ [外链图片转存中…(img-M2SM52c9-1781017195061)]importnumpyasnp xnp.array([[1,2,3],[4,5,6]])ynp.array([[6,23],[-1,7],[8,9]])print(x)print(y)print(x.dot(y))print(np.dot(x,y))