8.Python科学计算与数据处理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《8.Python科学计算与数据处理课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 科学 计算 数据处理 课件
- 资源描述:
-
1、1pandas入门pandas的数据结构介绍SeriesDataFrame索引对象基本功能重新索引丢弃指定轴上的项索引、选取和过滤 算术运算和数据对齐函数应用和映射排序和排名带有重复值的轴索引2汇总和计算描述统计相关系数与协方差唯一值、值计数以及成员资格处理缺失数据滤除缺失数据填充缺失数据层次化索引重排分级顺序根据级别汇总统计使用DataFrame的列其他有关pandas的话题34 pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具。它是基于NumPy构建的,让以NumPy为中心的应用变得更加简单。 因为Series和DataFrame用的次数非常多,所以将其引入本地命名空间
2、中会更方便。from pandas import Series, DataFrame import pandas as pdSeries Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组 与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series: 5obj = Series(4, 7, -5, 3)obj0 41 72 -53 3dtype: int64 Series的字符串表现形式为:索引在左边,值在右边。由于没有为数据指定索引, 于是会自动创建一个0到N-1 (N为数据的长度)的整数型索引。可以通过Series的 values和ind
3、ex属性获取其数组表示形式和索引对象: 6obj.valuesarray( 4, 7, -5, 3, dtype=int64)obj.indexInt64Index(0, 1, 2, 3, dtype=int64) 通常希望所创建的Series带有一个可以对各个数据点进行标记的索引:7obj2 = Series(4, 7,-5,3, index=d,b,a,c)obj2d 4b 7a -5c 3dtype: int64 obj2.indexIndex(ud, ub, ua, uc, dtype=object) 与普通NumPy数组相比,可以通过索引的方式选取Series中的单个或一组值:8ob
4、j2a-5obj2d= 6obj2c,a,dc 3a -5d 6dtype: int64 NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接:9obj2obj2obj2 0obj2*2np.exp(obj2)d 403.428793b 1096.633158a 0.006738c 20.085537dtype: float64 还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。它 可以用在许多原本需要字典参数的函数中:10b in obj2Truee in obj2False11 如果数据被存放在一个Python字典
5、中,也可以直接通过这个字典来创建Series:sdata = Ohio: 35000, Texas: 71000, Oregon: 16000, Utah: 5000obj3 = Series(sdata)obj3Ohio 35000Oregon 16000Texas 71000Utah 5000dtype: int64 如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。 在例子中,sdata跟states索引相匹配的那3个值会被找出来并放到相应的位置上, 但由于“California”所对应的sdata值找不到,所以其结果就为NaN (即“非数字” (not a nu
6、mber). 12states = California, Ohio, Oregon, Texasobj4 = Series(sdata, index=states)obj4 California NaNOhio 35000Oregon 16000Texas 71000dtype: float64 在pandas中使用 NaN表示缺失(missing) 或NA值。 pandas的isnull和notnull函数可用于检测缺失数据: 13pd.isnull(obj4) # Series也有类似的实例方法:California True #obj4.isnull()Ohio FalseOregon
7、 FalseTexas Falsedtype: bool pd.notnull(obj4)California FalseOhio TrueOregon TrueTexas Truedtype: bool 对于许多应用而言,Series域重要的一个功能是:它在算术运算中会自动对齐不同索引 的数据。 14 obj3 obj4obj3 + obj4California NaNOhio 70000Oregon 32000Texas 142000Utah NaNdtype: float64 Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切: 15 obj
8、4.name = populationobj4.index.name = stateobj4stateCalifornia NaNOhio 35000Oregon 16000Texas 71000Name: population, dtype: float6416 Series的索引可以通过赋值的方式就地修改:obj0 41 72 -53 3obj.index = Bob, Steve, Jeff, RyanobjBob 4Steve 7Jeff -5Ryan 3dtype: int6417DataFrame DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类
9、型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data. frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的 数据是以一个或多个二维块存放的(而不是列表、字典或別的一维数据结构)。 构建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组 组成的字典: 结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序悱列.18data=state:Ohio,Ohio,Ohio,Nevada,N
10、evada, year:2000, 2001, 2002, 2001, 2002, pop:1.5, 1.7, 3.6, 2.4, 2.9frame = DataFrame(data)frame 如果指定了列序列,则DataFrame的列就会按照指定顺序迸行排列: 跟Series一样,如果传入的列在数据中找不到,就会产生NA值: 19DataFrame(data, columns=year, state, pop) frame2=DataFrame(data, columns=year, state, pop, debt, index=one, two, three, four, five)
11、frame2 frame2.columnsIndex(uyear, ustate, upop, udebt, dtype=object) 通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:20frame2stateone Ohiotwo Ohiothree Ohiofour Nevadafive NevadaName: state, dtype: objectframe2.yearone 2000two 2001three 2002four 2001five 2002Name: year, dtype: int64 注意,返冋的Series拥有原DataF
12、rame相同的索引,且其name属性也已经被相应地设置 好了。行也可以通过位置或名称的方式进行获取,比如用索引字段ix :21 frame2.ixthreeyear 2002state Ohiopop 3.6debt NaNName: three, dtype: object 列可以通过赋值的方式进行修改。例如,可以给那个空的“debt”列赋上一个标量值或一组值:22frame2debt = 16.5frame2frame2debt = np.arange(5)frame223 将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配D
13、ataFrame的索引,所有的空位都将被填上缺失值: val = Series(-1.2, -1.5, -1.7, index= two, four, five)frame2debt = valframe2 为不存在的列赋值会创建出一个新列。关键字del用于删除列:24 frame2eastern = frame2.state = Ohioframe2 del frame2easternframe2.columnsIndex(uyear, ustate, upop, udebt, dtype=object) 另一种常见的数据形式是嵌套字典(也就是字典的字典): 如果将它传给DataFrame,
14、它就会被解释为:外层字典的键作为列,内层键则作为行索引: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 #也可以对该结果进行转置 内层字典的键会被合并、排序以形成最终的索引。如果显式指定了索引,则不会这样: 由Series组成的字典差不多也是一样的用法: 26 DataFrame(pop, index=2001, 2002, 2003) frame3 pdata = Ohio: frame3Ohio:-1, Nev
15、ada: frame3Nevada:2DataFrame(pdata)27 如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来: 跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据: frame3.index.name = year; frame3.columns.name = stateframe3 frame3.index.name = year; frame3.columns.name = stateframe3.valuesarray( nan, 1.5, 2.4, 1.7, 2.9, 3.6)
16、28 如果DataFrame各列的数据类型不同,则值数组的数据类型就会选用能兼容所有列的数 据类型: frame2 frame2.valuesarray(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的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或 DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index
17、:29 obj = Series(range(3), index=a, b, c)index = obj.indexindexIndex(ua, ub, uc, dtype=object)index1:Index(ub, uc, dtype=object) Index对象是不可修改的(immutable),因此用户不能对其进行修改: 不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享:30 index1 = dTypeError: Indexes does not support mutable operations index = pd.Index(np.arange
18、(3)obj2 = Series(1.5, -2.5, 0, index=index)obj2.index is indexTrue 除了长得像数组,Index的功能也类似一个固定大小的集合: 每个索引都有一些方法和属性,它们可用于设置逻辑并回答有关该索引所包含的数据的 常见问题。 31 frame3Ohio in frame3.columnsTrue2003 in frame3.indexFalse 32方法说明append连接另一个Index对象,产生一个新的Indexdiff计算差集,并得到一个Indexintersection计算交集union计算并集isin计算一个指示各值是否都包含
19、在参数集合中的布尔型数组delete删除索引i处的元素,并得到新的Indexdrop删除传入的值,并得到新的Indexinsert将元素插入到索引i处,并得到新的Indexis_monotonic当各元素均大于等于前一个元素时,返回Trueis.unique当Index没有重复值时,返回Trueunique计算Index中唯一值的数组Index的方法和属性的方法和属性重新索引 pandas对象的一个重要方法是reindex,其作用是创建一个适应新索引的新对象。以之前 的一个简单示例来说:33obj = Series(4.5, 7.2, -5.3, 3.6, index=d, b, a, c)
20、objd 4.5b 7.2a -5.3c 3.6dtype: float6434 调用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值:obj2 = obj.reindex(a, b, c, d, e)obj2a -5.3b 7.2c 3.6d 4.5e NaNobj.reindex(a, b, c, d, e, fill_value=0)Out126: a -5.3b 7.2c 3.6d 4.5e 0.0 对于时间序列这样的有序数据,重新索引时可能需要做一些插值处理。method选项即可 达到此目的,例如,使用ffill可以实现前向值填充:35 o
21、bj3 = Series(blue, purple, yellow, index=0, 2, 4)obj3.reindex(range(6), method=ffill)0 blue1 blue2 purple3 purple4 yellow5 yellowdtype: object reindex的(插值)method选项 对于DataFrame,reindex可以修改(行)索引、列,或两个都修改。如果仅传入一个序列,则会重新索引行:36参数 说明ffill或pad 前向填充(或搬运)值bfill或backfill 后向填充(或搬运)值 frame = DataFrame(np.arange
22、(9).reshape(3, 3), index=a, c, d, columns= Ohio, Texas, California)frameframe2 = frame.reindex(a, b, c, d)frame237 使用columns关键字即可重新索引列: 也可以同时对行和列进行重新索引,而插值则只能按行应用(即轴0): 利用ix的标签索引功能,重新索引任务可以变得更简洁: states=Texas, Utah, Californiaframe.reindex(columns=states) frame.reindex(index=a, b, c, d, method=ffill
23、, columns=states) frame.ixa, b, c, d, states reindex函数的参数 38参数 说明index 用作索引的新序列。既可以是index实例,也 可以是其他序列型的Python数据结构。Index 会被完全使用,就像没有任何复制一样。method 插值(填充)方式。fill_value 在重新索引的过程中,需要引入缺失值时使用 的替代值 . limit 前向或后向填充时的最大填充量.level 在Multiindex的指定级别上匹配简单索引,否 则选取其子集copy 默认为True,无论如何都复制;如果为False, 则新旧相等就不复制丢弃指定轴上的项
24、 丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象:39obj = Series(np.arange(5,), index=a, b, c, d, e) new_obj = obj.drop(c)new_obja 0b 1d 3e 4obj.drop(d,c) 对于DataFrame,可以刪除任意轴上的索引值:40 data = DataFrame(np.arange(16).reshape(4, 4), index=Ohio, Colorado, Utah, New York, co
25、lumns=one, two, three, four)data.drop(Colorado, Ohio) data.drop(two, axis=1) data.drop(two, four, axis=1)41索引、选取和过滤 Series索引(obj.)的工作方式类似于NumPy数组的索引,只不过Series的索引值不只是整数。 obj = Series(np.arange(4,), index=a, b, c, d)objb1obj11obj2:4c 2d 3dtype: int32 42 objb, a, db 1a 0d 3dtype: int32obj1, 3b 1d 3dtyp
展开阅读全文