收藏 分销(赏)

Python数据预处理全套课件.pptx

上传人:二*** 文档编号:5457296 上传时间:2024-11-06 格式:PPTX 页数:478 大小:10MB
下载 相关 举报
Python数据预处理全套课件.pptx_第1页
第1页 / 共478页
本文档共478页,全文阅读请下载到手机保存,查看更方便
资源描述
第1章数据预处理概述Python数据预处理学习目标/Target了解数据预处理的概念及意义熟悉常见的数据问题熟悉数据预处理的流程和常用工具掌握Jupyter的安装与使用掌握数据预处理库的安装章节概述/Summary在大数据环境的作用下,现实世界中充斥着海量的数据,这些数据一般是质量不高的“脏”数据,直接使用可能会导致分析结果或挖掘结果产生偏差。为提高数据的质量及分析或挖掘结果的准确度,数据预处理技术运用而生,数据预处理不仅可以清理“脏”数据,还可以将初始数据的内容与格式调整成符合分析或挖掘需求的内容与格式,以达到改进数据质量、提高分析与挖掘效率与准确率的目的。本章将针对数据预处理的相关知识进行讲解。目录/Contents01什么是数据预处理02常见的数据问题03数据预处理的流程04常用的数据预处理库05开发工具与环境1.1什么是数据预处理1.1什么是数据预处理先定一个小目标了解数据预处理的概念,理解预处理的作用了解数据预处理的意义,为后期预处理操作奠定基础1.1什么是数据预处理随着大数据技术掀起的计算机领域的新浪潮,无论是数据分析、数据挖掘还是机器学习、人工智能,都离不开数据这一主题。数据1.1什么是数据预处理在实际应用中,初始数据一般是多数据源且格式多样化的数据,这些数据的质量通常是良莠不齐的,或多或少存在问题,不能直接被使用到数据分析或数据挖掘工作中,直接使用会造成低质量的分析或挖掘结果。初始数据初始数据在进行分析或挖掘之前需要经过一定的处理,调整成符合分析或挖掘需求的数据。1.1什么是数据预处理什么是数据预处理从初始数据到得出分析或挖掘结果的整个过程中对数据经过的一系列操作称为数据预处理。1.1什么是数据预处理数据预处理是数据分析或数据挖掘前的准备工作,也是数据分析或数据挖掘中必不可少的一环,它主要通过一系列的方法来清理脏数据、抽取精准的数据、调整数据的格式,从而得到一组符合准确、完整、简洁等标准的高质量数据,保证该数据能更好地服务于数据分析或数据挖掘工作。据统计发现,数据预处理的工作量占据整个数据挖掘工作的60%,由此可见,数据预处理在数据挖掘中扮演着举足轻重的角色。1.1什么是数据预处理预处理前的摩拜单车数据预处理后的摩拜单车数据VS用户编号、单车编号、单车类型是一些冗余的属性,对分析目标而言没有任何意义;骑行时长是对分析目标起关键作用的属性,但该列中有若干个空缺。城市和骑行时长列的数据是比较完整的,也根据城市名称进行了归类,方便用户快速地得出各城市用户的平均骑行时长。1.1什么是数据预处理结论若使用预处理前的摩拜单车数据对各城市用户的平均骑行时长进行分析,会导致分析结果存在一些偏差,相反地,使用预处理后的摩拜单车数据进行分析,会得到一个较为准确的分析结果。1.2常见的数据问题1.2常见的数据问题先定一个小目标熟悉常见的数据问题,为后期有针对性地处理这些数据问题奠定基础1.2常见的数据问题常见数据问题数据缺失数据重复数据异常数据缺失是一类属性值为空的问题。数据重复是一类同一条数据多次出现数据异常是一类个别数据远离数据集的问题。的问题。数据冗余数据值冲突数据噪声数据冗余是指数据数据值冲突是一类同一属性存在不同数据噪声是一类属性值不符合常理的中存在一些多余的、无意义的属性。值的问题。问题。1.2常见的数据问题结论上述问题是数据分析或数据挖掘时期比较常见的一些数据问题,这些问题数据会对分析或挖掘结果产生一定的偏差影响,只要被处理成“干净“的数据之后,才可以直接应用到数据分析或数据挖掘中。1.3数据预处理的流程1.3数据预处理的流程先定一个小目标熟悉数据预处理的流程,为后期有次序地处理数据奠定基础1.3数据预处理的流程初始数据获取数据清理数据集成数据变换数据规约数据预处理的流程12345初始数据获取是预处理的第一步,该步骤主要负责从文件、数据库、网页等众多渠道中获取数据,以得到预处理的初始数据,为后续的处理工作做好数据准备。“数据清理主要是将脏”数据变成“干净”程,该过程中会通过一系列的方法对“脏”数据进行处理,以达到清除冗余数据、规范数据、纠正错误数据的目的。多个数据源合并成数据集成主要是把一个数据源的过程,以达到增大数据量的目的。数据变换主要是数据转换成适当形将式的过程,以降低数据的复杂度。数据规约指在尽可能保持数据原貌的前提下,最大限度地精简数据量,其方法包括降低数据的维度、删除与分析或挖掘主题无关的数据等。数据的过1.3数据预处理的流程数据清理示意图与左图表格相比,右图表格中空缺的位置被填充了指定的值。1.3数据预处理的流程数据集成示意图右图表格整合了从多个数据源获取的所有数据。1.3数据预处理的流程数据变换示意图右图表格中全部的值转换为01范围内的值。1.3数据预处理的流程数据规约示意图与左图表格相比,右图表格的行列数明显都减少了。1.3数据预处理的流程需要说明的是,数据清理、数据集成、数据变换、数据规约都是数据预处理的主要步骤,它们没有严格意义的先后顺序,在实际应用时并非全部会被使用,具体要视业务需求而定。1.4常用的数据预处理库1.4常用的数据预处理库先定一个小目标熟悉常用的数据预处理库,为后期深入学习numpy和pandas库的做好铺垫1.4常用的数据预处理库Python作为目前较为热门的编程语言,它已经渗入到数据分析、数据挖掘、机器学习等以数据支撑的多个领域,并分别为这些领域提供了功能强大的库,这些库中会涉及一些数据预处理的操作,以帮助开发人员解决各种各样的数据问题。Python中常见与数据预处理相关的库包括numpy、pandas、scipy、scikit-learn等。1.4常用的数据预处理库numpypandas常用的数据预处理库pandas是一个基于numpy的库,是专门为实现数据分析任务而创建的,它纳入了大量库和标准的数据模型,并提供了高效地操作大型数据集的函数和方法。numpy(来源于Numeric和Python)是一个Python开源的、高性能的基础科学计算库。scipyscikit-learnscipy库建立在numpy库之上,它拥有数以千计的开发包和超过150000个依赖存储库,包括线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。scikit-learn是一个基于Python的机器学习库,它包含各种分类、回归和聚类算法,支持向量机、随机森林、梯度提升、K均值。1.4常用的数据预处理库除了通过前面介绍的这些库之外,我们还可以使用一些图形化的工具来处理数据。OpenRefine是一款简单好用的数据清理工具,它与传统的Excel工具很像,但工作方式更像数据库,可以对数据进行预处理操作。1.5开发工具与环境1.5.1安装与使用Jupyter先定一个小目标掌握JupyterNotebook的安装,为后期学习准备好开发工具掌握JupyterNotebook的使用,可以熟练地创建Python文件、编辑与运行代码等1.5.1安装与使用Jupyter什么是JupyterJupyter(全称JupyterNotebook)是一个交互式编辑器,它支持运行40多种编程语言,便于创建和共享文档。Jupyter本质上是一个Web应用程序,与其他编辑器相比,它具有小巧灵活、支持实时代码、方便图表展示等优点。1.5.1安装与使用Jupyter安装Jupyter使用pip工具可以方便地安装Jupyter。pip工具是Python的包管理工具,Python3.4以上的解释器自带了pip管理工具。安装命令Installingcollectedpackages:jupyterpipinstalljupyternotebook输出以上输出如下信息表明Jupyter工具安装成功。1.5.1安装与使用Jupyter使用Jupyter步骤1步骤2以E:python目录为例,在该目录下打开命令行窗口,输入Jupyter的启动命令。步骤3步骤4步骤5步骤61.5.1安装与使用Jupyter使用Jupyter步骤1执行Jupyter的启动命令后,会在默认的浏览器中呈现Jupyter主界面。步骤2步骤3步骤4步骤5值得一提的是,主界面显示的文件默认会保存到E:python目录中。步骤61.5.1安装与使用Jupyter使用Jupyter步骤1单击文件列表右上方的“New”,在弹出的下拉列表中选择“Python3”,直接创建一个Python文件。步骤2步骤3步骤4步骤5步骤61.5.1安装与使用Jupyter使用Jupyter步骤1创建Python文件后,Jupyter会在浏览器中打开一个新的页面。步骤2步骤3文件名菜单栏工具栏步骤4步骤5步骤61.5.1安装与使用Jupyter使用Jupyter步骤1步骤2在Jupyter文件页面的“In:”后的文本框中输入如下代码:步骤3print(helloworld!)步骤4步骤5步骤61.5.1安装与使用Jupyter使用Jupyter步骤1单击文本框上方的“运行”按钮,程序执行结果将会在文本框下方直接输出,具体如下图所示。步骤2步骤3步骤4步骤5使用快捷键Ctrl+S(或修改文件页面的文件名)可以将当前页面中编辑的代码和代码的运行结果都保存在以“.ipynb”为后缀名的文件中,保存后的文件将会出现在Jupyter主界面的文件列表中,单击列表中的文件,可在浏览器中打开并继续使用文件。步骤61.5.2安装数据预处理库先定一个小目标掌握numpy、pandas库的安装,为后期学习准备好开发环境1.5.2安装数据预处理库利用Python内置的pip工具可以非常方便地安装Python第三方库,安装命令的格式如下:pipinstall模块/库名示例pipinstallnumpypandasInstallingcollectedpackages:numpy,pandas输出截至本书完稿时,numpy和pandas库的版本分别为1.19.0和1.1.0,后续章节均使用这两个版本的库进行开发。在Jupyter中导入numpy、pandas库,若运行后没有出现任何报错信息,说明库安装成功。本章小结第2章科学计算库numpyPython数据预处理学习目标/Target熟悉数组对象,可通过多种方式创建数组掌握数组元素的访问方式掌握数组的运算掌握数组元素的常见操作掌握数组的转置操作章节概述/Summarynumpy作为高性能科学计算和数据分析的基础包,它是众多数据分析、机器学习等工具的基础架构,掌握numpy的功能及其用法将有助于后续其他数据分析工具的学习。本章将针对numpy库的基础功能进行详细地讲解。目录/Contents01数组对象02创建数组03访问数组元素目录/Contents04数组运算05数组操作06数组的转置2.1数组对象2.1数组对象先定一个小目标了解什么是数组对象掌握数组对象的常用属性2.1数组对象numpy中提供了一个重要的数据结构是ndarray(又称为array)对象,该对象是一个N维数组对象,可以存储相同类型、以多种形式组织的数据。与Python中的数组相比,ndarray对象可以处理结构更复杂的数据。数组指由相同类型的数据按有序的形式组织而成的一个集合,组成数组的各个数据称为数组的元素。2.1数组对象ndarray属性说明ndim数组的维度对象的常用属性shape数组中各维度的大小size数组元素的总数目dtype数组元素的类型itemsize数组中各元素的字节大小2.1数组对象ndim一维数组只有一个轴,其内部的所有数据沿轴方向依次排列;二维数组的结构类似于表格,它一共有沿行方向和列方向的两个轴,其中沿行方向的轴对应编号为0的轴,沿列方向的轴对应编号为1的轴;三维数组的结构类似立方体,它一共有沿着长、宽、高方向的三个轴,这三个轴依次对应着编号为1、2、0的轴。属性表示数组的维度。在numpy中,维度称为轴,轴的个数称为秩。2.1数组对象shape属性表示数组的形状,也就是数组中各维度的大小,该属性的值为一个形如(行,列)的元组。二维数组11111111shape属性值为(m,n)11112.1数组对象数据类型说明bool布尔类型,值为True或Falsenumpyint8、uint8有符号和无符号的8位整数int16、uint16有符号和无符号的16位整数int32、uint32有符号和无符号的32位整数的常用数据类型int64、uint64有符号和无符号的64位整数float16半精度浮点数(16位)float32半精度浮点数(32位)float64半精度浮点数(64位)complex64复数,分别用两个32位浮点数表示实部和虚部complex128复数,分别用两个64位浮点数表示实部和虚部2.2创建数组2.2创建数组先定一个小目标掌握数组的创建方式,可以通过多种方式创建数组2.2创建数组1.根据现有数据类型创建数组numpy中使用array()函数创建一个数组,该函数需要接收一个列表或元组。创建一维数组创建二维数组创建三维数组list_a=1,2,3list_b=4,5,6array_3d=np.array(list_a,array_1d=np.array(1,2,3)print(array_1d)array_2d=np.array(1,2,3,4,5,6)print(array_2d)list_b,list_a,list_b)print(array_3d)1231231234564561234562.2创建数组2.根据指定数值创建数组numpy中使用zeros()、ones()、empty()函数创建一个基于指定数值的数组,其中zeros()函数用于创建一个元素值都为0的数组;ones()函数用于创建一个元素值都为1的数组;empty()函数用于创建一个元素值都为随机数的数组。语法格式zeros(shape,dtype=float,order=C)ones(shape,dtype=None,order=C)empty(shape,dtype=float,order=C)shape:表示数组的形状。dtype:(可选)表示数组中元素的类型,默认为float(浮点数)。order:表示按索引顺序读取数组的元素,默认为C,说明采用C语言风格,按行排列数组的元素。2.2创建数组2.根据指定数值创建数组示例使用zeros()函数创建数组使用ones()函数创建数组使用empty()函数创建数组array_demo=np.zeros(2,3)print(array_demo)array_demo=np.ones(2,3)print(array_demo)array_demo=np.empty(2,3)print(array_demo)0.0.0.1.1.1.7.6e-3220.0e+0000.0e+0000.0.0.1.1.1.0.0e+0000.0e+0000.0e+0002.2创建数组3.根据指定数值范围创建数组numpy中使用arange()函数创建一个基于指定区间均匀分布数值的数组,arange()函数的功能类似于Python中的range()函数,不同的是,arange()函数会返回一维数组而非列表。#创建一个元素位于1,30)区间、元素值间隔为5的数组array_demo=np.arange(1,30,5)print(array_demo)16111621262.2创建数组3.根据指定数值范围创建数组arange()函数可以搭配reshape()方法使用,以重塑一维数组的形状。reshape()方法用于改变数组的形状,但不会改变数组的元素。#重塑数组的形状new_arr=array_demo.reshape(2,3)print(new_arr)16111621262.3访问数组元素2.3.1使用整数索引访问元素先定一个小目标掌握整数索引的使用方式,可以灵活地使用整数索引访问一维数组和二维数组的元素2.3.1使用整数索引访问元素数组支持通过索引和切片访问元素。numpy中提供了多种形式的索引:整数索引、花式索引和布尔索引,通过这些索引可以访问数组的单个、多个或一行元素。此外,还可以使用切片访问数组的元素。整数索引花式索引布尔索引2.3.1使用整数索引访问元素numpy中可以使用整数索引访问数组,以获取该数组中的单个元素或一行元素。一维数组访问元素的方式与列表访问元素方式相似,它会根据指定的整数索引获取相应位置的元素。array_1d=np.arange(1,7)print(array_1d)#获取索引为2的元素print(array_1d2)示例12345632.3.1使用整数索引访问元素当使用整数索引访问二维数组时,二维数组会根据索引获取相应位置的一行元素,并将该行元素以一维数组的形式进行返回。importnumpyasnparray_2d=np.arange(1,7).reshape(2,3)print(array_2d)#获取索引为1的一行元素print(array_2d1)示例操作示意图1234564562.3.1使用整数索引访问元素若想获取二维数组的单个元素,需要通过“二维数组行索引,列索引”形式实现。示例#获取行索引为1、列索引为2的元素print(array_2d1,2)操作示意图62.3.2使用花式索引或布尔索引访问元素先定一个小目标掌握花式索引和布尔索引的使用方式,可以灵活地使用这些索引访问一维数组和二维数组的元素2.3.2使用花式索引或布尔索引访问元素什么是花式索引花式索引指以整数组成的数组或列表为索引。当使用花式索引访问一维数组时,会将花式索引对应的数组或列表的元素作为索引,依次根据各个索引获取对应位置的元素,并将这些元素以数组的形式进行返回;当使用花式索引访问二维数组时,会将花式索引对应的数组或列表的元素作为索引,依次根据各个索引获取对应位置的一行元素,并将这些行元素以数组的形式进行返回。2.3.2使用花式索引或布尔索引访问元素使用花式索引访问一维数组importnumpyasnparray_1d=np.arange(1,10)print(array_1d)#访问索引为2,5,8的元素print(array_1d2,5,8)示例1234567893692.3.2使用花式索引或布尔索引访问元素使用花式索引访问二维数组array_2d=np.arange(1,10).reshape(3,3)print(array_2d)#访问索引为0,2的元素print(array_2d0,2)示例操作示意图1231234567897892.3.2使用花式索引或布尔索引访问元素使用花式索引访问二维数组在使用两个花式索引,即通过“二维数组花式索引,花式索引”形式访问数组时,会将第一个花式索引对应列表的各元素作为行索引,将第二个花式索引对应列表的各元素作为列索引,再按照“二维数组行索引,列索引”的形式获取对应位置的元素。示例#使用两个花式索引访问元素print(array_2d0,2,1,1)操作示意图282.3.2使用花式索引或布尔索引访问元素什么是布尔索引布尔索引指以布尔值组成的数组或列表为索引。当使用布尔索引访问数组时,会将布尔索引对应的数组或列表的元素作为索引,以获取索引为True时对应位置的元素。2.3.2使用花式索引或布尔索引访问元素array_2d=np.arange(1,10).reshape(3,3)print(array_2d)#使用布尔索引访问数组print(array_2d5)print(array_2darray_2d5)示例123456FalseFalseFalseFalseFalseTrue6789789TrueTrueTrue操作示意图2.3.3使用切片访问元素先定一个小目标掌握切片的使用方式,可以灵活地使用切片访问一维数组和二维数组的元素2.3.3使用切片访问元素一维数组的切片操作array_1d=np.array(10,20,30,40,50,60)print(array_1d1:3)print(array_1d:3)print(array_1d:-1)print(array_1d:)print(array_1d:2)2030示例10203010203040501020304050601030502.3.3使用切片访问元素二维数组的切片操作与一维数组相比,二维数组支持更多的切片操作,不仅可以向中括号内传入一个切片,还可以传入两个切片,甚至可以混合传入索引和切片。2.3.3使用切片访问元素二维数组的切片操作创建二维数组arr_2d=np.array(1,2,3,4,5,6,7,8,9)示例print(arr_2d)1234567892.3.3使用切片访问元素二维数组的切片操作传入一个切片#使用切片访问前两行的元素print(arr_2d:2)示例123操作示意图4562.3.3使用切片访问元素二维数组的切片操作传入两个切片#使用切片访问前两行、第一列的元素print(arr_2d:2,0:1)示例14操作示意图2.3.3使用切片访问元素二维数组的切片操作混合传入整数索引与切片#使用切片访问前两行、第二列的元素print(arr_2d:2,1)示例25操作示意图2.4数组运算2.4.1形状相同的数组间运算先定一个小目标理解形状相同的数组之间的运算规则2.4.1形状相同的数组间运算无论是形状相同的数组,还是形状不同的数组,它们之间都可以执行算术运算。与Python列表不同,数组在参与算术运算时无需遍历每个元素,便可以对每个元素执行批量运算,效率更高。2.4.1形状相同的数组间运算形状相同的数组在执行算术运算时,会将位置相同的元素做算术运算,并将运算后所得的结果组成一个新数组。形状相同的数组间运算的示意图2.4.2形状不同的数组间运算先定一个小目标理解形状不同的数组之间的运算规则2.4.2形状不同的数组间运算形状不同的数组之间进行运算会触发广播机制。广播机制指对形状较小的数组进行扩展,以匹配另一个形状较大的数组的形状,进而变成执行形状相同的数组间运算。2.4.2形状不同的数组间运算广播机制并不适用于任何数组,需要求两个数组满足以下规则:数组形状的某一维度为1。数组的某一维度相等。若两个数组的形状在任一维度上都不匹配,且没有任一维度等于1,则会导致程序引发异常。2.4.2形状不同的数组间运算符合规则的扩展示例无法扩展的示例A(2darray):5x4B(1darray):1A(2darray):2x1#倒数第二个维度不匹配B(3darray):8x4x3Result(2darray):5x4A(4darray):8x1x6x1B(3darray):7x1x5Result(4darray):8x7x6x52.4.2形状不同的数组间运算现有两个形状分别为(3,1)和(3,0)的数组arr_one和arr_two,这两个数组相加后得到一个形状为(3,3)的新数组result。数组arr_one的形状沿行方向上扩展为(3,3),arr_two的形状沿列方向上扩展为(3,3),它们相加后得到的数组result的形状为(3,3)。形状不同的数组运算示意图2.4.3数组与常量的运算先定一个小目标理解数组与常量的运算规则2.4.3数组与常量的运算形状相同的数组之间的任何算术运算都会应用到各元素,同样地,数组与标量执行算术运算时也会将标量应用到各元素,以方便各元素与标量直接进行相加、相减、相乘、相除等基础操作。2.5数组操作2.5.1排序先定一个小目标掌握数组的排序操作,可以按不同的轴方向排列数组元素掌握数组的检索数组元素操作,可以检索数组的全部或部分元素是否满足条件掌握数组的元素唯一化操作,可以熟练地查找数组中的唯一元素2.5.1排序numpy中使用sort()方法实现数组排序功能,数组的每行元素默认会按照从小到大的顺序排列,返回排序后的数组。语法格式sort(axis=-1,kind=None,order=None)axis:表示排序的轴编号,默认为-1,代表沿着末尾的轴排序。kind:表示排序的算法,默认为quicksort(快速排序)。order:表示按哪个字段排序。2.5.2检索数组元素numpy中提供了all()和any()函数检索数组的元素。all()函数用于判断数组的所有元素是否any()函数用于判断数组的元素是否有一全部满足条件,满足条件则返回True,个满足条件,满足条件则返回True,否否则返回False。则就返回False。2.5.2检索数组元素元素唯一化操作是数组中比较常见的操作,它主要查找数组的唯一元素。numpy中使用uniuqe()函数实现元素唯一化功能,将查找的唯一元素进行排序后返回。importnumpyasnparr=np.array(12,11,34,23,12,8,11)#查找数组的唯一元素print(np.unique(arr)示例8111223342.6数组的转置2.6数组的转置先定一个小目标熟悉数组的转置,可以通过T属性、transpose()方法、swapaxes()方法实现数组转置操作2.6数组的转置数组的转置指数组中各元素按照一定的规则变换位置。numpy中提供了三种实现数组转置的方式,分别为T属性、transpose()方法、swapaxes()方法。T属性transposeswapaxes()方法()方法2.6数组的转置numpy中数组通过访问T属性可实现简单的转置操作,即互换两个轴方向的元素,并返回一个互换后的新数组。通过T属性转置数组的示意图2.6数组的转置与T属性的作用相似,swapaxes()方法也用于交换两个轴的元素,但该方法可以交换任意两个轴的元素。使用swapaxes()方法转置数组的示意图2.6数组的转置transpose()方法不仅可以交换两个轴方向的元素,还可以交换多个轴方向的元素。transpose()方法需要接收一个由轴编号构成的元组,返回一个按轴编号互换后的新数组。本章小结第3章pandas库基础Python数据预处理学习目标/Target认识pandas的数据结构,可以采用多种方式创建Series和DataFrame类对象认识pandas的索引对象,可以轻松地创建分层索引掌握pandas索引的相关操作,可熟练地使用单层索引与分层索引访问数据学习目标/Target掌握pandas的重新索引操作掌握pandas数据排序的方法,可以按索引与值排列数据掌握pandas统计计算与描述的方法章节概述/Summarypandas是一个基于numpy,专门为数据分析而设计的库,该库中不仅提供了大量的库及一些标准的数据模型,还提供了高效操作数据集的数据结构,被广泛地应用到众多领域中。pandas库是本书的重点内容,本章只为大家介绍一些pandas的基础功能。目录/Contents01数据结构02索引操作03数据排序04统计计算与描述05绘制图表3.1数据结构Series先定一个小目标了解Series类对象的结构,可以熟练地使用Series()方法创建Series类对象SeriesSeries是一个结构类似于一维数组的对象,该对象主要由索引数据和索引两部分组成,其中数据可以是任意类型,比如整数、字符串、浮点数等。Series类对象的索引样式比较丰富,默认是自动生成的整数索引(从0开始递增),也可以是自定义的标签索引(由自定义的标签构成的索引)、时间戳索引(由时间戳构成的索引)等。Series通过Series类的构造方法可以创建一维数据。语法格式pandas.Series(data=None,index=None,dtype=None,name=None,copy=False,fastpath=False)data:表示传入的数据,可以是ndarry、list、dict等。index:表示传入的索引,必须是唯一的,且与数据的长度相同。若没有传入索引,则创建的Series类对象会自动生成0N的整数索引。dtype:表示数据的类型。若未指定数据类型,pandas会根据传入的数据自动推断数据类型。Series示例根据列表创建Series类的对象根据字典创建Series类的对象data=one:Python,two:Java,ser_obj=pd.Series(Python,Java,PHP)ser_objthree:PHPser_obj2=pd.Series(data)ser_obj20Python12PHPdtype:objectonePythontwoJavathreePHPdtype:objectJavaSeries示例创建Series类的对象并指定索引importpandasaspdser_obj=pd.Series(Python,Java,PHP,index=one,two,three)ser_objonePythontwoJavathreePHPdtype:objectSeries多学一招:时间序列什么是时间序列时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列,比如某股票上半年的收盘价、某城市近十年的降雨量等。时间序列中的时间段可以一组固定频率和非固定频率的时间值,时间可以是年份、季度、月份或其他时间形式。Series多学一招:时间序列pandas中在创建Series类或DataFrame类对象时可以指定索引为时间戳索引,生成一个时间序列。示例date_index=pd.to_datetime(20180820,20180828,20180908)date_ser=pd.Series(11,22,33,index=date_index)print(date_ser)2018-08-20112018-08-28222018-09-0833dtype:int64先定一个小目标了解DataFrame类对象的结构,可以熟练地使用DataFrameDataFrame类对象()方法创建DataFrame是一个结构类似于二维数组或表格的对象,与Series类对象相比,DataFrame类对象也由索引和数据组成,但该对象有两组索引,分别是行索引和列索引。DataFrame类对象的行索引位于最左侧一列,列索引位于最上面一行,且每个列索引对应着一列数据。DataFrame类对象其实可以视为若干个公用行索引的Series类对象的组合。通过DataFrame()类的构造方法可以创建二维数据。语法格式pandas.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)data:表示传入的数据,可以是ndarray、dict、list或可迭代对象。index:表示行索引,默认生成0N的整数索引。columns:表示列索引,默认生成0N的整数索引。dtype:表示数据的类型。示例创建DataFrame类的对象创建DataFrame类的对象并指定索引demo_arr=np.array(a,b,c,df_obj=pd.DataFrame(demo_arr,d,e,f)index=row_01,row_02,columns=col_01,col_02,col_03)df_obj=pd.DataFrame(demo_arr)df_objdf_obj0120abc1defcol_01col_02col_03row_01abcrow_02def3.2索引操作3.2.1索引对象先定一个小目标了解Index类的常见子类,包括MultiIndex、Int64Index、DatetimeIndex等掌握分层索引,可以通过多种方式熟练地创建分层索引3.2.1索引对象在创建Series类对象或DataFrame类对象时,既可以使用自动生成的整数索引,也可以使用自定义的标签索引。无论哪种形式的索引,都是一个Index类的对象。Index是一个基类,它派生了许多子类。Index类说明Int64Index整数索引类的常见子类Float64Index浮点数索引DatetimeIndex纳秒级时间戳索引PeriodIndex时间间隔索引MultiIndex分层索引3.2.1索引对象Int64Index、Float64Index、DatetimeIndex和PeriodIndex只能被用于创建单层索引(轴方向上只有一层结构的索引),MultiIndex类代表分层索引,即轴方向上有两层或两层以上结构的索引。3.2.1索引对象基于分层索引的Series类对象基于分层索引的DataFrame类对象Series类对象和DataFrame类对象都有两层结构的索引,且第一层索引的每个值对应多个第二层索引值。3.2.1索引对象方法说明创建分层索引的方法from_tuples()根据元组列表创建分层索引from_arrays()根据数组列表创建分层索引from_product()从集合的笛卡尔乘积中创建分层索引from_frame()根据DataFrame类对象创建分层索引3.2.2使用单层索引访问数据先定一个小目标掌握单层索引的使用方式,可以通过、loc、iloc、at和iat访问Series类对象和DataFrame类对象的数据3.2.2使用单层索引访问数据无论是创建Series类对象还是创建DataFrame类对象,根本目的在于对Series类对象或DataFrame类对象中的数据进行处理,但在处理数据之前,需要先访问Series类对象或DataFrame类对象中的数据。3.2.2使用单层索引访问数据pandas中可以使用、loc、iloc、at和iat这几种方式访问Series类对象和DataFrame类对象的数据。locilocatiat3.2.2使用单层索引访问数据1.使用访问数据pandas中使用“”访问数据的方式与访问数组元素的方式类似。使用方式变量索引需要说明的是,若变量的值是一个Series类对象,则会根据索引获取该对象中对应的单个数据;若变量的值是一个DataFrame类对象,在使用“索引”访问数据时会将索引视为列索引,进而获取该列索引对应的一列数据。3.2.2使用单层索引访问数据2.使用loc和iloc访问数据pandas中也可以使用loc和iloc访问数据。使用方式变量.loc索引变量.iloc索引以上方式中,“loc索引”中的索引必须为自定义的标签索引,而“iloc索引”中的索引必须为自动生成的整数索引。需要说明的是,若变量是一个DataFrame类对象,它在使用“loc索引”或“iloc索引”访问数据时会将索引视为行索引,获取该索引对应的一行数据。3.2.2使用单层索引访问数据3.使用at和iat访问数据pandas中还可以使用at和iat访问数据,与前两种方式相比,这种方式可以访问DataFrame类对象的单个数据。使用方式变量.at行索引,列索引变量.iat行索引,列索引以上方式中,“at行索引,列索引”中的索引必须为自定义的标签索引,“iat行索引,列索引”中的索引必须为自动生成的整数索引。3.2.3使用分层索引访问数据先定一个小目标掌握分层索引的使用方式,可以通过、loc和iloc访问Series类对象和DataFrame类对象的数据3.2.3使用分层索引访问数据pandas中除了可以通过简单的单层索引访问数据外,还可以通过复杂的分层索引访问数据。与单层索引相比,分层索引只适用于、loc和iloc,且用法大致相同。3.2.3使用分层索引访问数据1.使用访问数据由于分层索引的索引层数比单层索引多,在使用方式访问数据时,需要根据不同的需求传入不同层级的索引。使用方式变量第一层索引变量第一层索引第二层索引以上方式中,使用“变量第一层索引”可以访问第一层索引嵌套的第二层索引及其对应的数据;使用“变量第一层索引第二层索引”可以访问第二层索引对应的数据。3.2.3使用分层索引访问数据2.使用loc和iloc访问数据使用iloc和loc也可以访问具有分层索引的Series类对象或DataFrame类对象。使用方式变量.loc第一层索引变量.loc第一层索引第二层索引#访问第二层索引对应的数据变量.iloc整数索引#访问第一层索引对应的数
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服