8.Python科学计算与数据处理汇总

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1pandas—入门目录pandas的数据结构介绍SeriesDataFrame索引对象基本功能重新索引丢弃指定轴上的项索引、选取和过滤算术运算和数据对齐函数应用和映射排序和排名带有重复值的轴索引2目录汇总和计算描述统计相关系数与协方差唯一值、值计数以及成员资格处理缺失数据滤除缺失数据填充缺失数据层次化索引重排分级顺序根据级别汇总统计使用DataFrame的列其他有关pandas的话题34pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具。它是基于NumPy构建的,让以NumPy为中心的应用变得更加简单。因为Series和DataFrame用的次数非常多,所以将其引入本地命名空间中会更方便。frompandasimportSeries,DataFrameimportpandasaspdpandas的数据结构介绍SeriesSeries是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:5obj=Series([4,7,-5,3])obj04172-533dtype:int64pandas的数据结构介绍Series的字符串表现形式为:索引在左边,值在右边。由于没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表示形式和索引对象:6obj.valuesarray([4,7,-5,3],dtype=int64)obj.indexInt64Index([0,1,2,3],dtype='int64')pandas的数据结构介绍通常希望所创建的Series带有一个可以对各个数据点进行标记的索引:7obj2=Series([4,7,-5,3],index=['d','b','a','c'])obj2d4b7a-5c3dtype:int64obj2.indexIndex([u'd',u'b',u'a',u'c'],dtype='object')pandas的数据结构介绍与普通NumPy数组相比,可以通过索引的方式选取Series中的单个或一组值:8obj2['a']-5obj2['d']=6obj2[['c','a','d']]c3a-5d6dtype:int64pandas的数据结构介绍NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接:9obj2obj2[obj20]obj2*2np.exp(obj2)d403.428793b1096.633158a0.006738c20.085537dtype:float64pandas的数据结构介绍还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。它可以用在许多原本需要字典参数的函数中:10'b'inobj2True'e'inobj2Falsepandas的数据结构介绍11如果数据被存放在一个Python字典中,也可以直接通过这个字典来创建Series:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}obj3=Series(sdata)obj3Ohio35000Oregon16000Texas71000Utah5000dtype:int64pandas的数据结构介绍如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。在例子中,sdata跟states索引相匹配的那3个值会被找出来并放到相应的位置上,但由于“California”所对应的sdata值找不到,所以其结果就为NaN(即“非数字”(notanumber)).12states=['California','Ohio','Oregon','Texas']obj4=Series(sdata,index=states)obj4CaliforniaNaNOhio35000Oregon16000Texas71000dtype:float64pandas的数据结构介绍在pandas中使用NaN表示缺失(missing)或NA值。pandas的isnull和notnull函数可用于检测缺失数据:13pd.isnull(obj4)#Series也有类似的实例方法:CaliforniaTrue#obj4.isnull()OhioFalseOregonFalseTexasFalsedtype:boolpd.notnull(obj4)CaliforniaFalseOhioTrueOregonTrueTexasTruedtype:boolpandas的数据结构介绍对于许多应用而言,Series域重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。14obj3obj4obj3+obj4CaliforniaNaNOhio70000Oregon32000Texas142000UtahNaNdtype:float64pandas的数据结构介绍Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切:15obj4.name='population'obj4.index.name='state'obj4stateCaliforniaNaNOhio35000Oregon16000Texas71000Name:population,dtype:float64pandas的数据结构介绍16Series的索引可以通过赋值的方式就地修改:obj04172-533obj.index=['Bob','Steve','Jeff','Ryan']objBob4Steve7Jeff-5Ryan3dtype:int64pandas的数据结构介绍17DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或別的一维数据结构)。pandas的数据结构介绍构建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序悱列.18data={'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)framepandas的数据结构介绍如果指定了列序列,则DataFrame的列就会按照指定顺序迸行排列:跟Series一样,如果传入的列在数据中找不到,就会产生NA值:19DataFrame(data,columns=['year','state','pop'])frame2=DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])frame2frame2.columnsIndex([u'year',u'state',u'pop',u'debt'],dtype='object')pandas的数据结构介绍通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:20frame2['state']oneOhiotwoOhiothreeOhiofourNevadafiveNevadaName:state,dtype:objectframe2.yearone2000two2001three2002four2001five2002Name:year,dtype:int64pandas的数据结构介绍注意,返冋的Series拥有原DataFrame相同的索引,且其name属性也已经被相应地设置好了。行也可以通过位置或名称的方式进行获取,比如用索引字段ix:21frame2.ix['three']year2002stateOhiopop3.6debtNaNName:three,dtype:objectpandas的数据结构介绍列可以通过赋值的方式进行修改。例如,可以给那个空的“debt”列赋上一个标量值或一组值:22frame2['debt']=16.5frame2frame2['debt']=np.arange(5)frame2pandas的数据结构介绍23将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值:val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])frame2['debt']=valframe2pandas的数据结构介绍为不存在的列赋值会创建出一个新列。关键字del用于删除列:24frame2['eastern']=frame2.state=='Ohio'frame2delframe2['eastern']frame2.columnsIndex([u'year',u'state',u'pop',u'debt'],dtype='object‘)pandas的数据结构介绍另一种常见的数据形式是嵌套字典(也就是字典的字典):如果将它传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引:25pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}frame3=DataFrame(pop)frame3frame3.T#也可以对该结果进行转置pandas的数据结构介绍内层字典的键会被合并、排序以形成最终的索引。如果显式指定了索引,则不会这样:由Series组成的字典差不多也是一样的用法:26DataFrame(pop,index=[2001,2002,2003])frame3pdata={'Ohio':frame3['Ohio'][:-1],'Nevada':frame3['Nevada'][:2]}DataFrame(pdata)pandas的数据结构介绍27如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来:跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据:frame3.index.name='year';frame3.columns.name='state'frame3frame3.index.name='year';frame3.columns.name='state'frame3.valuesarray([[nan,1.5],[2.4,1.7],[2.9,3.6]])pandas的数据结构介绍28如果DataFrame各列的数据类型

1 / 115
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功