Python科学计算与数据处理课件

上传人:风*** 文档编号:242686707 上传时间:2024-08-31 格式:PPT 页数:115 大小:869.52KB
返回 下载 相关 举报
Python科学计算与数据处理课件_第1页
第1页 / 共115页
Python科学计算与数据处理课件_第2页
第2页 / 共115页
Python科学计算与数据处理课件_第3页
第3页 / 共115页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,1,pandas,入门,1pandas入门,目录,pandas,的数据结构介绍,Series,DataFrame,索引对象,基本功能,重新索引,丢弃指定轴上的项,索引、选取和过滤,算术运算和数据对齐,函数应用和映射,排序和排名,带有重复值的轴索引,2,目录pandas的数据结构介绍2,目录,汇总和计算描述统计,相关系数与协方差,唯一值、值计数以及成员资格,处理缺失数据,滤除缺失数据,填充缺失数据,层次化索引,重排分级顺序,根据级别汇总统计,使用,DataFrame的列,其他有关,pandas,的话题,3,目录汇总和计算描述统计3,4,pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具。,它是基于,NumPy构建的,让以NumPy为中心的应用变得更加简单。,因为Series和DataFrame用的次数非常多,所以将其引入本地命名空间中会更方便。,from pandas import Series, DataFrame,import pandas as pd,4 pandas含有使数据分析工作变得更快,pandas,的数据结构介绍,Series,Series是,一种类似于一维数组的对象,它由一组数据(各种,NumPy数据类型)以及一组 与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:,5,obj = Series(4, 7, -5, 3),obj,0 4,1 7,2 -5,3 3,dtype: int64,pandas的数据结构介绍Series5obj = S,pandas,的数据结构介绍,Series的字符串表现形式为:索引在左边,值在右边。由于没有为数据指定索引, 于是会自动创建一个0到N-1 (N为数据的长度,)的整数型索引。可以通过,Series的 values和index属性获取其数组表示形式和索引对象:,6,obj.values,array( 4, 7, -5, 3, dtype=int64),obj.index,Int64Index(0, 1, 2, 3, dtype=int64),pandas的数据结构介绍 Series的,pandas,的数据结构介绍,通常希望所创建的,Series,带有一个可以对各个数据点进行标记的索引:,7,obj2 = Series(4, 7,-5,3, index=d,b,a,c),obj2,d 4,b 7,a -5,c 3,dtype: int64, obj2.index,Index(ud, ub, ua, uc, dtype=object),pandas的数据结构介绍 通常希望所创建,pandas,的数据结构介绍,与普通NumPy数组,相比,可以通过索引的方式选取,Series中的单个或一组值,:,8,obj2a,-5,obj2d= 6,obj2c,a,d,c 3,a -5,d 6,dtype: int64,pandas的数据结构介绍 与普通NumPy,pandas,的数据结构介绍,NumPy数组运算,(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接:,9,obj2,obj2obj2 0,obj2*2,np.exp(obj2),d 403.428793,b 1096.633158,a 0.006738,c 20.085537,dtype: float64,pandas的数据结构介绍 NumPy数组,pandas,的数据结构介绍,还可以将Series看成是一个定,长的有序字典,因为它是索引值到数据值的一个映射。它 可以用在许多原本需要字典参数的函数中:,10,b in obj2,True,e in obj2,False,pandas的数据结构介绍 还可以将Ser,pandas,的数据结构介绍,11,如果数据被存放在一个Python字典中,也可以直接通过这个字典来创建Series:,sdata = Ohio: 35000, Texas: 71000, Oregon: 16000, Utah: 5000,obj3 = Series(sdata),obj3,Ohio 35000,Oregon 16000,Texas 71000,Utah 5000,dtype: int64,pandas的数据结构介绍11 如果数据被存,pandas,的数据结构介绍,如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列,)。,在例子中,,sdata,跟,states,索引相匹配的那,3,个值会被找出来并放到相应的位,置,上, 但由于“,California”,所对应的,sdata,值找不到,所以其结果就为,NaN (,即“非数字”,(not a number).,12,states = California, Ohio, Oregon, Texas,obj4 = Series(sdata, index=states),obj4,California NaN,Ohio 35000,Oregon 16000,Texas 71000,dtype: float64,pandas的数据结构介绍 如果只传入一个字,pandas,的数据结构介绍,在,pandas,中,使用,NaN,表示缺失(,missing),或,NA,值,。,pandas,的,isnull,和,notnull,函数可用于检测缺失数据:,13,pd.isnull(obj4) # Series,也有类似的实例方法,:,California True #obj4.isnull(),Ohio False,Oregon False,Texas False,dtype: bool, pd.notnull(obj4),California False,Ohio True,Oregon True,Texas True,dtype: bool,pandas的数据结构介绍 在pandas中使用,pandas,的数据结构介绍,对于许多应用而言,Series域重要的一个功能是:它在算术运算中会,自动对齐不同索引 的数据。,14, obj3, obj4,obj3 + obj4,California NaN,Ohio 70000,Oregon 32000,Texas 142000,Utah NaN,dtype: float64,pandas的数据结构介绍 对于许多应用而,pandas,的数据结构介绍,Series对象,本身及其索引都有一个,name属性,该属性跟pandas其他的关键功能关系非常密切:,15, obj4.name = population,obj4.index.name = state,obj4,state,California NaN,Ohio 35000,Oregon 16000,Texas 71000,Name: population, dtype: float64,pandas的数据结构介绍 Series对,pandas,的数据结构介绍,16,Series的索引可以通过赋值的方式就地修改:,obj,0 4,1 7,2 -5,3 3,obj.index = Bob, Steve, Jeff, Ryan,obj,Bob 4,Steve 7,Jeff -5,Ryan 3,dtype: int64,pandas的数据结构介绍16 Series,pandas,的数据结构介绍,17,DataFrame,DataFrame,是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值,类,型(数值、字符串、布尔值等)。,DataFrame,既有行索引也有列索引,它可以被看做,由,Series,组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如,R,的,data. frame),,,DataFrame,中面向行和面向列的操作基本上是平衡的。其实,,DataFrame,中的 数据是以一个或多个二维块存放的(而不是列表、字典或別的一维数据结构)。,pandas的数据结构介绍17DataFrame,pandas,的数据结构介绍,构建,DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数,组,组成的字典:,结果DataFrame会自动加上索引(跟Series,一样,),且全部列会被有序悱列,.,18,data=state:Ohio,Ohio,Ohio,Nevada,Nevada,year:2000, 2001, 2002, 2001, 2002,pop:1.5, 1.7, 3.6, 2.4, 2.9,frame = DataFrame(data),frame,pandas的数据结构介绍 构建DataFr,pandas,的数据结构介绍,如果,指定了列序列,则,DataFrame的列就会按照指定顺序迸行排列,:,跟Series,一样,如果传入的列在数据中找不到,就会产生,NA值:,19,DataFrame(data, columns=year, state, pop), frame2=DataFrame(data, columns=year, state, pop, debt,index=one, two, three, four, five), frame2, frame2.columns,Index(uyear, ustate, upop, udebt, dtype=object),pandas的数据结构介绍 如果指定了列序,pandas,的数据结构介绍,通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:,20,frame2state,one Ohio,two Ohio,three Ohio,four Nevada,five Nevada,Name: state, dtype: object,frame2.year,one 2000,two 2001,three 2002,four 2001,five 2002,Name: year, dtype: int64,pandas的数据结构介绍 通过类似字典标记,pandas,的数据结构介绍,注意,返冋的,Series,拥有原,DataFrame,相同的索引,且其,name,属性也已经被相应地,设置,好了。行也可以通过位置或名称的方式进行获取,比如用索引字段,ix,:,21, frame2.ixthree,year 2002,state Ohio,pop 3.6,debt NaN,Name: three, dtype: object,pandas的数据结构介绍 注意,返冋的Se,pandas,的数据结构介绍,列可以通过赋值的方式进行修改。例如,可以给那个空的,“,debt”列赋上一个标量值或一组值:,22,frame2debt = 16.5,frame2,frame2debt = np.arange(5),frame2,pandas的数据结构介绍 列可以通过赋值,pandas,的数据结构介绍,23,将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,,就会精确匹配,DataFrame的索引,所有的空位都将被填上缺失值:, val = Series(-1.2, -1.5, -1.7, index= two, four, five),frame2debt = val,frame2,pandas的数据结构介绍23 将列表或数组,pandas,的数据结构介绍,为不存在的列赋值会创建出一个新列。关键字del用于删除列,:,24, frame2eastern = frame2.state = Ohio,frame2, del frame2eastern,frame2.columns,Index(uyear, ustate, upop, udebt, dtype=object),pandas的数据结构介绍 为不存在的列赋,pandas,的数据结构介绍,另一种常见的数据形式是嵌套字典(也就是字典的字典):,如果将它传给DataFrame,,它就会被解释为:外层字典的键作为列,内层键则作为行索引:,25, pop = Nevada: 2001: 2.4, 2002: 2.9,Ohio: 2000: 1.5, 2001: 1.7, 2002:3.6, frame3 = DataFrame(pop),frame3,frame3.T #,也可以,对该结果,进行转置,pandas的数据结构介绍 另一种常见的数据,pandas,的数据结构介绍,内层字典的键会被合并、排序以形成最终的索引。如果显式指定了索引,则不会这样,:,由,Series组成的字典,差不多也是一样的用法,:,26, DataFrame(pop, index=2001, 2002, 2003), frame3, pdata = Ohio: frame3Ohio:-1,Nevada: frame3Nevada:2,DataFrame(pdata),pandas的数据结构介绍 内层字典的键会被,pandas,的数据结构介绍,27,如果设置,了,DataFrame的index和columns的name属性,则这些,信息也会被显示出来:,跟Series,一样,,values属性也会以二维ndarray的形式返回DataFrame中的数据:, frame3.index.name = year; frame3.columns.name = state,frame3, frame3.index.name = year; frame3.columns.name = state,frame3.values,array( nan, 1.5, 2.4, 1.7, 2.9, 3.6),pandas的数据结构介绍27 如果设置,pandas,的数据结构介绍,28,如果DataFrame各列的数据类型不同,则值数组的数据类型就会选用能兼容所有列的数,据类型:, frame2, frame2.values,array(2000L, Ohio, 1.5, nan,2001L, Ohio, 1.7, -1.2,2002L, Ohio, 3.6, nan,2001L, Nevada, 2.4, -1.5,2002L, Nevada, 2.9, -1.7, dtype=object),pandas的数据结构介绍28 如果Data,pandas,的数据结构介绍,索引对象,pandas的索引对象负责管理轴标签和其他元数据,(比如轴名称等)。构建,Series或 DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index:,29, obj = Series(range(3), index=a, b, c),index = obj.index,index,Index(ua, ub, uc, dtype=object),index1:,Index(ub, uc, dtype=object),pandas的数据结构介绍索引对象29 obj = S,pandas,的数据结构介绍,Index对象是不可修改的(immutable,),因此用户不能对其进行修改:,不可修改性非常,重要,因为这样才能使,Index对象在多个数据结构之间安全共享:,30, index1 = d,TypeError: Indexes does not support mutable operations, index = pd.Index(np.arange(3),obj2 = Series(1.5, -2.5, 0, index=index),obj2.index is index,True,pandas的数据结构介绍 Index对象,pandas,的数据结构介绍,除了长得像数组,Index的功能也类似一个固定大小的集合:,每个索引都有,一些方法和属性,它们可用于设置逻辑并回答有关该索引所包含的数据的 常见问题。,31, frame3,Ohio in frame3.columns,True,2003 in frame3.index,False,pandas的数据结构介绍 除了长得像数组,pandas,的数据结构介绍,32,方法,说明,append,连接另一个,Index,对,象,产生一个新的,Index,diff,计算差集,并得到一个,Index,intersection,计算交集,union,计算并集,isin,计算一个指示各值是否都包含在参数集合中的布尔型数组,delete,删除索引,i,处的元素,并得到新的,Index,drop,删除传入的值,并得到新的,Index,insert,将元素插入到索引,i,处,并得到新的,Index,is_monotonic,当各元素均大于等于前一个元素时,返回,True,is.unique,当,Index,没有重复值时,返回,True,unique,计算,Index,中唯一值的数组,Index,的方法和属性,pandas的数据结构介绍 32方法说明ap,基本功能,重新索引,pandas对象的一个,重要方法是,reindex,其作用是创建一个适应新索引的新对象。以之前 的一个简单示例来说:,33,obj = Series(4.5, 7.2, -5.3, 3.6, index=d, b, a, c), obj,d 4.5,b 7.2,a -5.3,c 3.6,dtype: float64,基本功能重新索引33obj = Series(4.5,基本功能,34,调用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值:,obj2 = obj.reindex(a, b, c, d, e),obj2,a -5.3,b 7.2,c 3.6,d 4.5,e NaN,obj.reindex(a, b, c, d, e, fill_value=0),Out126:,a -5.3,b 7.2,c 3.6,d 4.5,e 0.0,基本功能34 调用该Series的reind,基本功能,对于时间序列这样的有序数据,重新索引时可能需要做一些插值处理。method选项即可 达到此目的,例如,使用ffill可以实现前向值填充:,35, obj3 = Series(blue, purple, yellow, index=0, 2, 4),obj3.reindex(range(6), method=ffill),0 blue,1 blue,2 purple,3 purple,4 yellow,5 yellow,dtype: object,基本功能 对于时间序列这样的有序数据,重新,基本功能,reindex,的(插值),method,选项,对于DataFrame,reindex,可以修改(行)索引、列,或两个都修改。如果仅传入一个序列,则会重新索引行:,36,参数 说明,ffill,或,pad,前向填充(或搬运)值,bfill,或,backfill,后向填充(或搬运)值, frame = DataFrame(np.arange(9).reshape(3, 3), index=a, c, d,columns= Ohio, Texas, California),frame,frame2 = frame.reindex(a, b, c, d),frame2,基本功能 reindex的(插值)method选,基本功能,37,使用,columns,关键字即可重新索引列:,也可以同时对行和列进行,重,新索引,,,而插值则只能按行应用,(,即轴,0,):,利用ix的标签索引功能,重新索引任务可以变得更简洁,:, states=Texas, Utah, California,frame.reindex(columns=states), frame.reindex(index=a, b, c, d,method=ffill, columns=states), frame.ixa, b, c, d, states,基本功能37 使用columns关键字即可,基本功能,reindex,函数的参数,38,参数 说明,index,用作索引的新序列。既可以是,index,实例,也,可以是其他序列型的,Python,数据结构。,Index,会被完全使用,就像没有任何复制一样。,method,插值(填充)方式。,fill_value,在重新索引的过程中,需要引入缺失值时使用,的替代值,.,limit,前向或后向填充时的最大填充量,.,level,在,Multiindex,的指定级别上匹配简单索引,否,则选取其子集,copy,默认为,True,,无论如何都复制;如果为,False,,,则新旧相等就不复制,基本功能 reindex函数的参数 38参数,基本功能,丢弃指定轴上的项,丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除,了指定值的新对象:,39,obj = Series(np.arange(5,), index=a, b, c, d, e), new_obj = obj.drop(c),new_obj,a 0,b 1,d 3,e 4,obj.drop(d,c),基本功能丢弃指定轴上的项39obj = Series(,基本功能,对于DataFrame,,可以刪除任意轴上的索引值:,40, data = DataFrame(np.arange(16).reshape(4, 4),index=Ohio, Colorado, Utah, New York,columns=one, two, three, four),data.drop(Colorado, Ohio), data.drop(two, axis=1), data.drop(two, four, axis=1),基本功能 对于DataFrame,可以刪除任意轴,基本功能,41,索引、选取和过滤,Series,索引(,obj.,),的工作方式类似于,NumPy,数组的索引,只不过,Series,的索引值不只是整数,。, obj = Series(np.arange(4,), index=a, b, c, d),objb,1,obj1,1,obj2:4,c 2,d 3,dtype: int32,基本功能41索引、选取和过滤 obj = Serie,基本功能,42, objb, a, d,b 1,a 0,d 3,dtype: int32,obj1, 3,b 1,d 3,dtype: int32,objobj objb,基本功能,利用标签的切片运算与普通的Python切片运算不同,,当使用,非整数,作为切片索引时,其末端是包含的,(,inclusive),设置的方式也很简单:,43, objb: c,b 1,c 2,dtype: int32, objb :c = 5,obj,a 0,b 5,c 5,d 3,基本功能 利用标签的切片运算与普通的Pyth,基本功能,对,DataFrame,进行索引其实就是获取一个或多个列,:,这种索引方式有几个特殊的情况。首先通过切片或布尔型数组选取行:,44, datatwo,Ohio 1,Colorado 5,Utah 9,New York 13,datathree, one, data:2,datadatathree 5,基本功能 对DataFrame进行索引其实,基本功能,45,另一种用法是通过布尔型DataFrame,(比如下面这个由标,量比较运算得出的)进行索引:,这段代码的目的是使,DataFrame,在语法上,更像,ndarray,。, data ,datadata data,基本功能45 另一种用法是通过布尔型Data,基本功能,为了在DataFrame的行上进行标签索引,引入了专门的索引字段ix,。它可以通过,NumPy式的标记法以及轴标签从DataFrame中选取行和列的子集。这也是一种重新索引的简单手段:,46,data.ixColorado, two, three,two 5,three 6,Name: Colorado, dtype: int32,data.ixColorado, Utah,3, 0, 1,基本功能 为了在DataFrame的行上进行,基本功能,47,data.ix2,one 8,two 9,three 10,four 11,Name: Utah, dtype: int32, data.ix:Utah, two,Ohio 0,Colorado 5,Utah 9,Name: two, dtype: int32, data.ixdata.three 5, :3, data.ixColorado, two, three,two 5,three 6,Name: Colorado, dtype: int32,基本功能47data.ix2,基本功能,48,DataFrame,的索引选项,:,类型 说明,objval,选取,DataFrame,的单个列或一组列。在一些特殊,情况下会比较便利:布尔型数组(过滤行)、切,片(行切片)、布尔型,DataFrame (,根据条件,设置值)。,obj.ixval,选取,DataFrame,的单个行或一组行。,obj.ix:, val,选取单个列或列子集。,obj.ixval1, val2,同时选取行和列。,reindex,方法 将一个或多个轴匹配到新索引。,xs,方法 根据标签选取单行或单列,并返回一个,Series,。,icol,、,irow,方法 根据整数位置选取单列或单行,并返回一个,Series,。,get.value, set_value,方法 根据行标签和列标签选取单个值。,基本功能48 DataFrame的索引选项:类,基本功能,49,算术运算和数据对齐,pandas,最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象,相,加时, 如果存在不同的索引对,则结果的索引就是该索引对的并集。,s1 = Series(7.3, -2.5, 3.4, 1.5,index=a, c, d, e),s2 = Series(-2.1, 3.6, -1.5, 4, 3.1, index=a, c, e, f, g),s1, s2,基本功能49算术运算和数据对齐s1 = Series(,基本功能,将它们相加就会产生:,自动的数据对齐操作在不重叠的索引处引入,NA值,。缺失值会在算术运算过程中传播。,50,s1+s2,Out201:,a 5.2,c 1.1,d NaN,e 0.0,f NaN,g NaN,dtype: float64,基本功能 将它们相加就会产生:50,基本功能,对于DataFrame,对齐操作会同时发生在行和列上,:,51,df1 = DataFrame(np.arange(9,).reshape(3, 3), columns=list(bcd),index=Ohio, Texas, Colorado),df2 = DataFrame(np.arange(12,).reshape(4, 3), columns=list(bde),index=Utah, Ohio, Texas, Oregon),df1,df2, df1+ df2,#,把它们相加后将会返回一个新的,DataFrame,,其索引和列为原来那两个,DataFrame,的并集,.,基本功能 对于DataFrame,对齐操作,基本功能,52,在算术方法中填充值,在对不同索引的对象进行算术运算时,可能希望当一个对象中某个轴标签在另一个对象中找不到时填充一个特殊值(比如0),:,df1 = DataFrame(np.arange(12).reshape(3, 4), columns=list(abcd),df2 = DataFrame(np.arange(20.).reshape(4, 5), columns=list(abcde),df1,df2, df1 + df2,#,将它们相加时,没有重叠的位置就会产生,NA,值,.,基本功能52在算术方法中填充值df1 = DataFr,基本功能,使用df1的add方法,传入df2以及一个fill_value参数,:,与此类似,在对Series或DataFrame重新索引时,也可以,指定一个填充值,:,53,df1.add(df2, fill_value=0), df1.reindex(columns=df2.columns, fill_value=0),灵活的算术方法,add,用于加法,(+ ),的方法,sub,用于减法,(-,)的方法,div,用于除法,(/),的方法,mul,用于乘法,(*),的方法,基本功能 使用df1的add方法,传入,基本功能,DataFrame和Series之间的运算,跟NumPy数组一样,DataFrame和Series之间算术运算也是有明确规定的。先来看一个具有启发性的例子,计算一个二维数组与其某行之间的差:,54, arr = np.arange(12.).reshape(3, 4),arr,array( 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.),arr0,array( 0., 1., 2., 3.),arr - arr0,array( 0., 0., 0., 0., 4., 4., 4., 4., 8., 8., 8., 8.),基本功能DataFrame和Series之间的运算54,基本功能,这就叫做广播,(,broadcasting)。DataFrame和Series之间的运算差不多也是如此:,默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播.,55, frame = DataFrame(np.arange(12.).reshape(4, 3), columns=list(bde),index=Utah, Ohio, Texas, Oregon), series = frame.ix0, frame, series,frame - series,基本功能 这就叫做广播(broadcasti,基本功能,如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的,两个对象就会被重新索引以形成并集:,如果希望匹配行且在列上广播,则必须使用算术运算方法。例如:,传入的轴号就是希望匹配的轴。在本例中目的是匹配DauFrame的行索引并进行广播。,56, series2 = Series(range(3), index=b, e, f),frame + series2, series3 = framed, series3, frame.sub(series3, axis=0),基本功能 如果某个索引值在DataFrame,基本功能,57,函数应用和映射,NumPy的ufuncs,(元素级数组方法)也,可用于操作,pandas对象,:,frame = DataFrame(np.random.randn(4, 3), columns=list(bde),index=Utah, Ohio, Texas, Oregon),frame,np.abs(frame),基本功能57函数应用和映射frame = DataFr,基本功能,另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的 apply方法即可实现此功能:,许多最为常见的数组统计功能都被实现成DataFrame的方法(如sum和mean),因此无需使用apply方法。,58,f = lambda x: x.max() - x.min(),frame.apply(f),frame.apply(f, axis=1),基本功能 另一个常见的操作是,将函数应用到,基本功能,59,除标,量值外,传递给,apply的函数还可以返回由多个值组成的Series,:,def f(x):,return Series(x.min(), x.max(), index=min, max),frame,frame.apply(f),基本功能59 除标量值外,传递给apply的,基本功能,60,此外,,元素级的,Python,函数也是可以用的。假如想得到,frame中各个浮点值的格式化字符串,使用applymap即可,:,之所以叫做applymap,,是因为,Series有一个用,于应用元素级函数的,map方法,:,format = lambda x: %.2f % x,frame.applymap(format),framee.map(format),基本功能60 此外,元素级的Python函,基本功能,排序和排名,根据条件对数据集排序(sorting)也是一种重要的,内置运算。要对行或列索引进行排序,(按字典顺序,),可使用,sort_index方法,它将返回一个已排序的新对象:,61,obj = Series(range(4), index=d, a, b, c),obj.sort_index(),a 1,b 2,c 3,d 0,dtype: int64,基本功能排序和排名61obj = Series(ran,基本功能,62,而对于,DataFrame,,则可以根据任意,一个轴上的索引进行排序,:,数据默认是按,升序排序的,但也可以降序排序,:,frame = DataFrame(np.arange(8).reshape(2, 4),index=three, one, columns=d,a,b,c),frame.sort_index(),frame.sort_index(axis=1),frame.sort_index(axis=1, ascending=False),基本功能62 而对于DataFrame,则,基本功能,若要按值对Series进行徘序,可使用其order方法:,63,obj = Series(4, 7, -3, 2),obj.order(),2 -3,3 2,0 4,1 7,obj = Series(4, np.nan, 1, np.nan, -3, 2),obj.order() #,在排序时,缺失值默认都会被放到,Series,的末尾,.,4 -3,2 1,5 2,0 4,1 NaN,NaN,基本功能 若要按值对Series进行徘序,可,基本功能,在DataFrame上,可能希望根据一个或多个列中的值进行排序。将一个或多个列的名字传递给by选项即可达到该,目的:,要根据多个列进行排序,传,入名称的列表即可,:,64,frame = DataFrame(b: 4,7,-3,2, a:0, 1, 0, 1),frame, frame.sort_index(by=b),frame.sort_index(by=a, b),基本功能 在DataFrame上,可能希望根,基本功能,65,排名,(,ranking)跟排序关系密切,且它会增设一个排名值(从1开始,一直到数组中有 效数据的数,量)。它跟,numpy.argsort产生的间接排序索引差不多,只不过它可以根据某种规则破坏平级关系。Series和DataFrame的rank方法:默,认情况下,,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的:, obj = Series(7,-5,7,4,2,0,4),obj,0 7,1 -5,2 7,3 4,4 2,5 0,6 4, print obj.rank(),0 6.5,1 1.0,2 6.5,3 4.5,4 3.0,5 2.0,6 4.5,基本功能65 排名(ranking)跟排序,基本功能,66, obj.rank(method=first) #,根据值在原数据中出现的顺序给出排名,:,0 6,1 1,2 7,3 4,4 3,5 2,5, obj.rank(ascending=False, method=max) #,按降序进行排名,:,0 2,1 7,2 2,3 4,4 5,5 6,6 4,基本功能 66 obj.rank(method=f,基本功能,DataFrame,可以在行或列上计算 排名:,67,排名时用于破坏平级关系的,method,选项,Method,说明,average,默认:在相等分组中,为各个值分配平均排名,min,使用整个分组的最小排名,max,使用整个分组的最大排名,first,按值在原始数据中的出现顺序分配排名, frame=DataFrame(b: 4.3, 7, -3, 2, a: 0, 1, 0, 1,c:-2, 5, 8, -2.5),frame, frame.rank(axis=1),基本功能67排名时用于破坏平级关系的method选项,基本功能,带有重复值的轴索引,带有重复索引值的Series:,索引的is_unique,属性验证是否是唯一的,:,68,obj = Series(range(5), index=a,a,b,b,c),obj,a 0,a 1,b 2,b 3,c 4,obj.index.is_unique,False,基本功能带有重复值的轴索引68obj = Series,基本功能,对,于带有重复值的索引,数据选取的行为将会有些不同。如果某个索引对应多个值,则 返回一个,Series;而对应单个值的,则返回一个标量值。,对DataFrame的行进行索引时也是如此:,69,obja,a 0,a 1,objc,4, df = DataFrame(np.random.randn(4, 3), index=a,a,b,b),df, df.ixb,基本功能 对于带有重复值的索引,数据选取的行,汇总和计算描述统计,pandas对象拥有一组常用的数学和统计方法。它们大部分都,属于约简和汇总统计,用于从,Series中提取的个值(如sum或mean)或从DataFrame的行或列中提取一个Series。跟 对应的NumPy数组方法相比,它们都是基于没有缺失数据的假设而构建的。接下来看一 个简,单的,DataFrame,:,70,df = DataFrame(1.4, np.nan, 7.1, -4.5,np.nan, np.nan, 0.75,-1.3,index=a,b,c,d,columns= one, two),df,汇总和计算描述统计 pandas对象拥有一,汇总和计算描述统计,调用DataFrame的sum方法将会返回一个含有列小计的Series:,71, df.sum(),one 9.25,two -5.80,dtype: float64,#,传入,axis=1,将会按行进行求和运算:, df.sum(axis=1),a 1.40,b 2.60,c NaN,d -0.55,dtype: float64,汇总和计算描述统计 调用DataFrame,汇总和计算描述统计,NA值会自动被排除,除非整个切片(这,里指的是行或列)都是,NA。通过skipna选项可 以禁用该功能:,72,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!