数据分析应用项目化教程(Python) 课件 项目4 使用pandas进行数据对象构建和数据运算_第1页
数据分析应用项目化教程(Python) 课件 项目4 使用pandas进行数据对象构建和数据运算_第2页
数据分析应用项目化教程(Python) 课件 项目4 使用pandas进行数据对象构建和数据运算_第3页
数据分析应用项目化教程(Python) 课件 项目4 使用pandas进行数据对象构建和数据运算_第4页
数据分析应用项目化教程(Python) 课件 项目4 使用pandas进行数据对象构建和数据运算_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章使用pandas进行数据对象构建和数据运算

任务4.1构建数据对象Pandas介绍Pandas的主要数据结构构建Series对象查看Series对象属性构建DataFrame对象查看DataFrame对象属性查看DataFrame和Series关系创建Index对象Pandas介绍NumPy是Python中科学计算的基础包,主要用于对多维数组执行计算,帮助我们轻松进行数值计算。pandas基于numpy,除了处理数值之外,还能够帮助我们处理字符串、时间序列等其他类型的数据。Pandas

Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。

Pandas的主要数据结构

Pandas的主要数据结构是

Series(一维数据)与

DataFrame(二维数据),数据分析相关的所有事务都是围绕这两种数据结构进行的。Series

是带标签的一维数组,可存储整数、浮点数、字符串、Python对象等类型的数据。Series主要由一组数据和与之相关的索引两部分构成,如图Series对象结构。索引可以是名字,默认是数据的下标。而numpy的多维数组一般是同质的,数组的索引只能是下标。Series对象是一维数组结构,操作上与NumPy中的一维数组ndarray类似。Series对象结构Pandas的主要数据结构DataFrame

是由多种类型的列构成的二维标签数据结构,类似于Excel、SQL表,或Series对象构成的字典。DataFrame类似numpy的二维数组,与二维数组的主要区别是,DataFrame既有行索引,也有列索引,不仅可以通过位置(下标)索引访问数据,还可以通过标签(名称)索引访问数据,也就是说可以通过行索引标签名和列索引标签名访问数据,而二维数组只能通过行位置索引和列位置索引访问数据。另外一个主要区别是DataFrame的各列可以是不同的数据类型,而二维数组各列是相同的数值型。DataFrame对象结构构建Series对象pd.Series(data=None,index=None,dtype=None)参数:data:传入的数据,可以是ndarray、list等index:索引,与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。dtype:数据的类型构建Series对象用一维ndarray数组创建Series对象。用字典创建Series对象。键值对中的“键”是用来作为Series对象的索引,键值对中的“值”作为Series对象的数据。构建Series对象用标量值创建Series对象,Series按索引长度重复该标量值用列表创建Series对象查看Series对象的属性s.shape:Series对象的形状。s.dtype:Series对象的数据数组中的数据类型。s.values:Series对象的数据数组s.index:Series对象的数据数组的索引:Series对象名:索引对象名构建DataFrame对象pd.DataFrame(data=None,index=None,columns=None)参数:index:行标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。通过已有数据创建构建DataFrame对象用多维数组创建DataFrame构建DataFrame对象用Series字典或字典创建DataFramedata={"name":{'one':"Jack",'two':"Mary",'three':"John",'four':"Alice"},"age":{'one':10,'two':20,'three':30,'four':40},"weight":{'one':30,'two':40,'three':50,'four':65}}构建DataFrame对象用一维数组字典创建DataFrame构建DataFrame对象用列表字典生成DataFrame查看DataFrame对象属性shape:DataFrame对象的形状index:DataFrame的行索引列表columns:DataFrame的列索引列表values:DataFrame对象中的数据,

NumPy二维数组查看DataFrame和Series关系DataFrame的每一列都是一个Series,DataFrame的每一行都是一个Series。创建Index对象存储轴标签的数据结构是IndexDataFrame,行标签(即行索引)和列名称(即列索引)都是Index对象Series,行索引是Index对象。小结Pandas介绍Pandas的主要数据结构构建Series对象查看Series对象属性构建DataFrame对象查看DataFrame对象属性查看DataFrame和Series关系创建Index对象第四章使用pandas进行数据对象构建和数据运算

任务4.2索引操作Pandas索引操作概述使用位置索引和标签索引操作Series使用位置索引和标签索引操作DataFrame使用函数式索引操作Series和DataFrame使用常见查询方法查询数据索引用途索引变换Pandas索引操作概述Pandas有关索引的用法类似于NumPy数组的索引,只不过Pandas的索引既可以使用位置索引(下标),也可以使用标签索引(索引名)。另外,针对位置索引和标签索引专门提供了iloc和loc属性访问方法。无论是位置索引,还是标签索引,表达上都有4种索引方式,即基本索引、切片索引、花式索引和布尔索引。Pandas索引操作概述NumPy多维数组Ndarray访问索引的类别:位置(下标)索引索引的表达方式:四种,基本索引、切片索引、花式索引和布尔索引

索引的操作方式:索引运算符[]Pandas数据结构Series和DataFrame访问索引的类别:位置(下标)索引

、标签(名称)索引索引的表达方式:四种,基本索引、切片索引、花式索引和布尔索引索引的操作方式:索引运算符[]和属性运算符.,有一定局限性

数据结构对象的iloc和loc属性,灵活方便Pandas索引操作概述iloc:基于位置索引或布尔数组索引访问数据结构,也就是同样可以使用四种索引来访问数据结构。切片索引只包含起始位置索引,不包含结束位置索引。

loc:基于标签索引或布尔数组(或带标签的布尔数组)索引访问数据结构,也就是同样可以使用四种索引来访问数据结构。切片既包含起始标签索引,也包含结束标签索引。

使用位置索引和标签索引操作Series-概述

使用索引运算符[]和属性.运算符操作Series使用iloc或loc属性操作Seriess.iloc[行位置索引]、s.iloc[布尔数组索引]s.loc[行标签索引]、s.loc[带标签布尔数组索引或布尔数组索引]索引运算符、iloc或loc属性中使用四种索引使用位置索引和标签索引操作Series-基本索引使用基本索引,s表示Series对象。形如:s[下标]、s[标签]、s.标签、s.iloc[下标]、s.loc[标签]使用位置索引和标签索引操作Series-切片索引使用切片索引形如:s[下标i:下标j]、s[标签i:标签j]、s.iloc[下标i:下标j]、s.loc[标签i:标签j]使用位置索引和标签索引操作Series-花式索引使用花式索引形如:s[下标列表]、s[标签列表]、s.iloc[下标列表]、s.loc[标签列表]使用位置索引和标签索引操作Series-布尔索引使用布尔索引形如:s[带标签的布尔数组或布尔数组]、s.loc[带标签的布尔数组或布尔数组]、s.iloc[布尔数组]使用位置索引和标签索引操作DataFrame-概述使用索引运算符[]和.操作DataFrame使用iloc或loc属性操作DataFramedf.iloc[行位置索引]、df.iloc[布尔数组索引]df.loc[行标签索引]、df.loc[带标签布尔数组索引或布尔数组索引]df.iloc[行位置索引,列位置索引]df.loc[行标签索引,列标签索引]df[,]不支持索引运算符、iloc或loc属性中使用四种索引使用位置索引和标签索引操作DataFrame-基本索引通过[]和.直接使用基本索引,df表示DataFrame对象。注意:df的索引运算符操作是先列后行,先列必须得到是一个Series才能后行形如:df[列标签]或df.列标签,得到一个Series,后续按Series索引操作。使用位置索引和标签索引操作DataFrame-基本索引通过loc和iloc使用基本索引,注意,是始终是先行后列取数据df.loc方法,始终先行后列的标签索引查询df.iloc方法,始终先行后列的位置索引查询使用位置索引和标签索引操作DataFrame-切片索引直接使用切片索引,注意,切片索引只能使用行位置索引和行标签索引表达,不支持列索引表达形如:df[行下标i:行下标j]、df[行标签i:行标签j],即使i==j,结果也是DataFrame使用位置索引和标签索引操作DataFrame-切片索引iloc和loc使用切片索引,始终是先行获取数据形如:df.iloc[行下标i:行下标j]、df.loc[行标签i:行标签j]使用位置索引和标签索引操作DataFrame-花式索引直接使用花式索引,注意,也是先列方向,花式索引只能使用列标签索引表达形如:df[[列标签列表]]使用位置索引和标签索引操作DataFrame-花式索引iloc和loc使用花式索引,始终是先行获取数据形如:df.iloc[[下标列表]]、df.loc[[标签列表]]使用位置索引和标签索引操作DataFrame-布尔索引直接使用布尔数组索引形如:df[带标签的布尔数组]、df[布尔数组]使用位置索引和标签索引操作DataFrame-布尔索引df.iloc和df.loc使用布尔数组形如:df.iloc[布尔数组]、df.loc[带标签的布尔数组]、df.loc[布尔数组]使用位置索引和标签索引操作DataFrame-综合df.iloc和df.loc使用行列查询数据,行列位置索引和标签索引均可使用基本索引、切片索引、花式索引和布尔索引。df.iloc的布尔数组作为索引,不能直接使用Series或DataFrame类型的布尔数组(即带标签的布尔数组),需要将带标签的布尔数组取values转换成不带标签的布尔数组。形如:df.iloc[行位置索引,列位置索引]、df.loc[行标签索引,列标签索引]

df由行、列同时定位数据,必须使用iloc或loc方式,不能使用df[,]df可以取值得到二维数组来使用索引运算符[,]索引操作数据小结以四种索引,基本索引、切片索引、花式索引、布尔索引为主线,每种索引可以用位置索引或标签索引来表达,同时以索引运算符[]和属性运算符.、iloc和loc属性两种访问方式来使用索引。在二种访问方式里面,都可以使用四种索引。操作索引的基本结构有[]、[,]、[][]、.和iloc[]、iloc[,]、loc[]、loc[,]注意点:df[]:df[]先列结果是Series才能后行df[0:4]:直接切片索引仅仅支持行索引方向,不支持列索引方向iloc和loc总是先行索引方向,iloc[,]和loc[,]中逗号左边是行索引,右边是列索引第四章使用pandas进行数据对象构建和数据运算

任务4.2索引操作Pandas索引操作概述使用位置索引和标签索引操作Series使用位置索引和标签索引操作DataFrame使用函数式索引操作Series和DataFrame使用常见查询方法查询数据索引用途索引变换使用函数式索引操作Series和DataFrame函数式索引:指带有一个Series或DataFrame参数的函数,并返回有效的索引输出,有效索引就是四种索引之一。df(或s).iloc属性有效索引包括:一个整数,例如5整数列表或数组,例如[4,3,0]带有整数的切片对象,例如1:7布尔数组df(或s).loc有效索引包括:单个标签,例如5或'a'(注意,它5被解释为索引的标签,此用法不是索引的整数位置)列表或标签数组,例如['a','b','c']带标签的切片对象'a':'f'(注意,标签切片的端点包括在内)布尔数组df[]、s[]有效索引有位置有效索引,也有标签有效索引,遵循df和s索引运算符[]操作要求函数返回位置索引函数返回标签索引使用常见查询方法查询数据—df.querydf.query方法:DataFrame对象的query()方法允许使用表达式查询DataFrame的数据,query也是类似于SQL中where关键字的语法逻辑。query有两个SQL中标志性的设计:其一是@引用自定义外部变量,其二是对于特殊的列名(例如包含空格的字符)可以用反引号``加以修饰引用。query特点:节省内存以及有时他们具有更简洁的语法形式,但只能查询数据,不能修改数据。

使用常见查询方法查询数据—df.query使用常见查询方法查询数据—wherewhere方法:从具有布尔向量的Series中选择值通常会返回数据的子集。为了保证选择输出与原始数据具有相同的形状,您可以在Series和DataFrame中使用where方法。where接受的条件需要是布尔类型的,如果条件为真,保持原来的值,否则,就被赋值为默认的NaN或其他指定值。使用常见查询方法查询数据—wheredf1.where(m,df2)大致相当于np.where(m,df1,df2),比如:df.where(df<0,-df)==np.where(df<0,df,-df)。where对齐输入布尔条件,以便可以使用设置进行部分选择。小结函数式索引:函数带有一个Series或DataFrame参数,返回有效索引query方法:使用表达式优雅查询数据where方法:使用布尔数组作为条件查询,结果的shape和原数据结构shape一致,不满足条件的数据项,也可以按指定的axis方向广播修改数据。第四章使用pandas进行数据对象构建和数据运算

任务4.2索引操作Pandas索引操作概述使用位置索引和标签索引操作Series使用位置索引和标签索引操作DataFrame使用函数式索引操作Series和DataFrame使用常见查询方法查询数据索引用途索引变换索引用途把数据存储于普通的column列也能用于数据查询,那使用index的用途是什么呢?更方便的数据查询;使用index可以获得性能提升;自动的数据对齐功能;更多更强大的数据结构支持索引用途使用index查询数据索引用途使用index会提升查询性能如果index是唯一的,Pandas会使用哈希表优化,查询性能为O(1)如果index不是唯一的,但是有序,Pandas会使用二分查找算法,查询性能为O(logN)如果index是完全随机的,那么每次查询都要扫描全表,查询性能为O(N)完全随机的顺序查询将index排序后的查询将数据随机打散

索引用途

使用index能自动对齐数据(参考4.3)Series、DataFrame和多维数组的主要区别在于,Pandas数据结构之间的操作会自动基于标签对齐数据。因此,不用顾及执行计算操作的数据结构是否有相同的标签。Pandas数据结构集成的数据对齐功能,是Pandas区别于大多数标签型数据处理工具的重要特性性。index提供更多更强大的索引数据结构支持(参考4.4)CategoricalIndex,基于分类数据的Index,提升性能;MultiIndex,多维索引,用于groupby多维聚合后结果等;DatetimeIndex,时间类型索引,强大的日期和时间的方法支持;索引变换—reindex和renamereindex执行的是索引重组操作,接收一组标签序列作为新索引,既适用于行索引也适用于列标签名,重组之后索引数量可能发生变化,索引名为传入标签序列。当原DataFrame中存在新指定的索引时则提取相应行或列,不存在则舍弃。若新指定的索引在原来索引中不存在,则默认赋值为空或填充新值。索引变换—reindex和renamerename执行的是索引重命名操作,接收一个字典映射或一个变换函数,也均适用于行列索引,重命名之后索引数量不发生改变,索引名可能发生变化。二者均支持两种变换方式:一种是变换内容+axis指定作用轴(可选0/1或index/columns)另一种是直接用index/columns关键字指定作用轴索引变换—index.mapmap仅可用于Series,可接收字典或函数完成数据的变换索引变换—set_index与reset_indexset_index和reset_index是一对互逆的操作set_index用于置位索引——将DataFrame中列名或列名列表设置为行索引,默认丢弃原列索引,可选drop参数reset_index用于复位索引——将索引加入到数据中作为一列或直接丢弃,可选drop参数小结索引用途使用index查询数据使用index会提升查询性能使用index能自动对齐数据分层/多级索引在处理复杂的数据分析和数据操作方面为开发者奠定了基础,尤其是在处理高纬度数据处理上索引变换reindex和rename索引重组和索引重命名index.map索引处理set_index与reset_index置位索引和复位索引第四章使用pandas进行数据对象构建和数据运算

任务4.3数据运算

算术运算和自动对齐

布尔运算

关系运算

排序运算

汇总类统计

唯一去重和按值计数

相关系数和协方差算术运算和自动对齐Series、DataFrame和NumPy数组一样,也是向量化运算,而且支持大多数NumPy多维数组的方法Series、DataFrame和多维数组运算的主要区别:Series、DataFrame之间的操作会自动基于标签对齐数据,包括行标签和列标签,生成的结果是列和行标签的并集。因此,不用顾及执行计算操作的Series、DataFrame是否有完全相同的标签。算术运算和自动对齐Series之间运算算术运算和自动对齐DataFrame之间运算算术运算和自动对齐DataFrame和Series之间运算shape不一致,广播布尔运算布尔运算可以通过'与'(&)、'或'(|)、'非'(~)、异或(^)进行组合运算,(每一个计算项一定要加括号,注意运算符的优先级)关系运算关系运算符(><==!=),常使用关系运算和逻辑运算结合选取数据根据关系运算选取的都是整行数据形如:df[限制条件1&限制条件2…]或df[限制条件1][限制条件2]在df中选择b和c同时大于0的那些行,等价df[(df.b>0)][(df.c>0)]左图根据关系运算选取指定列的数据形如:df[限制条件][列]、df[列][限制条件]在df中选择b列和c列同时大于0的a和b列右图

排序运算

Pandas支持三种排序方式,按索引标签排序,按列里的值排序,按两种方式混合排序。Series.sort_values()方法用于按值对Series排序。DataFrame.sort_values()方法用于按行列的值对DataFrame排序。DataFrame.sort_values()的可选参数by用于指定按哪列排序,该参数的值可以是一列或多列数据。Series.sort_index()与DataFrame.sort_index()方法用于按索引层级对Pandas对象排序。汇总类统计Series与DataFrame支持大量统计的方法,包括sum()、mean()等聚合函数,还包括输出结果与原始数据集同样大小的cumsum()、cumprod()等函数。这些方法基本上都接受axis参数,axis可以用名称或整数指定。Pandas的统计运算默认忽略缺失值,而Numpy的统计运算遇缺失值结果为nan。Series:无需axis参数DataFrame:index,即axis=0,默认值,按列统计columns,即axis=1,按行统计唯一值和值计数运算一般不用于数值列,而是枚举、分类列相关系数和协方差对于两个变量X、Y:协方差:衡量同向反向程度,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。协方差矩阵:df.cov()相关系数:衡量相似度程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大。相关系数矩阵:df.corr(两者关系:把协方差归一化,也就是相关系数。相关系数消除了协方差数值大小的影响。相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差,它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。相关系数和协方差y经由函数构造出来,x和y的相关系数应该为1。但从实验结果可知,相关系数方法默认值,针对非线性数据有一定的误差。小结算术运算和自动对齐

布尔运算

关系运算

排序运算

汇总类统计

唯一去重和按值计数

相关系数和协方差第四章使用pandas进行数据对象构建和数据运算

任务4.4层次化索引操作pandas的索引分层索引MultiIndex数据源小费数据集tipsSeries的多层索引MultiIndexSeries有多层索引怎样筛选数据DataFrame的多层索引MultiIndex

DataFrame有多层索引怎样筛选数据pandas的索引pandas的索引:负责管理轴标签和其他如轴名称等元数据。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。Pandas的数据处理:pandas作为python中非常重要的数据处理工具,它提供了很多灵活的数学和统计方法。在数据处理中,经常需要对数据进行索引的转换,以适应不同的统计和作图的需要。分层索引MultiIndexPandas高维数据结构:​Pandas库的名字来源于其中3种主要数据结构开头字母的缩写,Panel、Dataframe、Series,其中Series表示一维数据,Dataframe表示二维数据,Panel表示三维数据。当数据高于二维时,我们一般用包含多层级索引的Dataframe进行表示,而不是使用Panel。原因是使用多层级索引展示数据更加直观,操作数据更加灵活,并且可以表示3维,4维乃至任意维度的数据。MultiIndex:层次化索引对象,表示单个轴上的多层索引,可以看做由原数组组成的数组。MultiIndex可以理解为堆叠的一种索引结构,官方文档提及到它为一些相当复杂的数据分析和操作打开了大门,尤其是在处理高维数据的时候显得十分便利。从本质上讲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论