pandas的DataFrame对象,本质上是 二维矩阵 ,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的 名称 。这样内部数据抽取既可以用“ 行列名称(对应loc[]方法) ”,也可以用“矩阵下标( 对应iloc[]方法 )”两种方式进行。
下面具体说明:
(以下程序均在Jupyter notebook中进行,部分语句的print()函数省略)
首先生成一个DataFrame对象:
DataFrame对象生成时除了必须指定data参数外,用户还可以指定两个参数columns(列名)和index(行名,注意这里的index不仅可以是数字,也可以是用户指定的任何数据类型,如字母), 如果不指定,则行列名默认都采用0、1、2…… 。
下图说明了前面的情况:
loc[行标签名/[行标签名list],列标签名/[列标签名list]],即有两个输入参数,第一个指定行名,第二个指定列名。当只有一个参数时,默认是行名(即抽取整行),所有列都选中。
loc[行位置/[行位置list],列位置/[列位置list]],也有两个输入参数,第一个指定行位置,第二个指定列位置。当只有一个参数时,默认是行位置(即抽取整行),所有列都选中。
上述loc[]和iloc[]都只接收了1个参数“语文”或者“0”,因此默认都表示行信息,而列则全部被选中,即抽取'语文'这整一行数据。','表示将两个参数隔开(如果有两个参数的话),':'这里表示选择中所有列。当只有一个输入参数时,python默认','和':'既可写上也可省略。注意:参数['语文']或[0]中只有一个对象时(即只有一行),[]也可以省略,如果有多个对象(即多行)则必须加上[]。此外还需注意,加上[]表示抽取的结果无论是一个数据,一行数据,还是一列数据,他都是DataFrame对象;不加[]时,如果选中的是一行或者一列数据,则是Series对象,如果是一个单独的数据,则是该数据本身的类型。
例2和例1唯一的差别是,第一个参数指定了多行一起输出,此时必须用[]将各行名或者下标括起来,否则出错。后面的','和':'同例1,可省略。注意:原始数据的行顺序是:语文、数学、英语、政治,这里的提取顺序是['英语','语文','政治'],而输出也是'英语','语文','政治',可见输出顺序和参数指定顺序是一致的,而非按原始顺序输出。
例3依然是接受1个参数,列参数没有,后面的','和':'同例1,可省略。连续参数用‘start:end’的方式指定行范围。注意:这里不能用[]将其括起来,否则出错。此外用行列名连续取值时,比如['语文':'政治']会把'政治'所在行也取出来,而利用矩阵下标时,0:3只取0,1,2对应的三行,最后一行不会取出;但是如果行列标签名本身就是整数0,1,2……,而不是文字或者其他类型,那么在使用连续行列标签名取数据时,最后一行或者列是不会被取出的。
抽取整列的方式跟抽取整行在参数设置上完全一样。loc[]和iloc[]两个方法默认列为第二个参数, 因此抽取整列时,都必须带上':,'作为区分前面行参数的‘分隔符’,否则出错 。
同时抽取分部行和列的情况,就是把上述单独抽取行和列的方式合并起来用。抽取整个DataFrame对象则是loc[:,:]或iloc[:,:],虽然这么做没啥意义。
(1)DataFrame对象的loc[,]和iloc[,]方法用于抽取数据,loc[,]用行列的标签名作为参数,iloc[,]用二维矩阵元素的网格下标作为参数。
(2)两个方法都接受两个参数,第一个是“行标签”或者“矩阵行号”,第二个是“列标签”或者“矩阵列号”。
(3)两种方法当只指定一个输入参数时,都默是跟“行”相关,而“列”则全部被选中。如何行和列都需要指定时,中间用“逗号,”隔开,这非常重要,否则出错。
(4)当需要选中所有行的某几列时,行参数可以省略,列参数需要指定,此时列参数前面必须带上“,:”,形如loc[:,列参数],iloc[:,列参数]。
(5)loc[,]和iloc[,]设置了一个还是两个输入参数,关键看有没有“,”将两个参数分开,且要区分逗号是一个参数的内部逗号,还有用于分隔行列参数的逗号。
(6)对于两个参数的概念区分,loc['语文','数学']这表示输入了两个参数,行参数是‘语文’,列参数是‘数学’,对于上面的表格而言这是错的,因为没有叫‘数学’的列,应写为[['语文','数学']],即‘数学’也是行参数的一部分,['语文','数学']整体作为一个行参数,这里的逗号不是用以分隔行和列,仅仅是行list里面的逗号。[['语文','数学']]=[['语文','数学'],]=[['语文','数学'],:],都表示只有一个行参数,列全部选中。
import
xlrddata
=
xlrdopen_workbook('excelFilexls')table
=
datasheets()[0]
#通过索引顺序获取table
=
datasheet_by_index(0)
#通过索引顺序获取table
=
datasheet_by_name(u'Sheet1')#通过名称获取
鼠标选中a1格,按住左键,向下拖到最后一格,就选中一列。如果继续横向拖,就能选中一个区域。
鼠标选中a1格,按住左键,向左拖到最后一格,就选中了一行,继续向下拖,也可以选中一个区域。
楼上说的是键盘 *** 作法,我说的是鼠标 *** 作法。
首先把需要筛选的列转化为pandascorestringsStringMethods,然后再用contains函数来得到布尔值的 (因为直接取行/列为Series对象,而不能直接对Series对象使用contains)Series:
筛选可以直接利用[ ]来完成:
同理,可以使用str函数来对DataFrame的的行/列做对于字符串的 *** 作:
sstrlower()
sstrupper()
sstrlen()
sstrstrip()
sstrsplit(' ')
sstrreplace('@','$')
sstrcount()
sstrstartswith()
sstrendswith()
sstrfind()
sstrfindall()
sstrswapcase()
sstrisupper()
sstrislower()
sstrisnumeric()
上篇,我们讲了python使用openpyxl库来做 *** execl表。实际使用中,个人认为openpyxl适合读写某个单独或少量的表格比较合适。如果是数组类的数据和execl表格交互,就需要遍历了。
这篇,我们介绍另一个库——pandas
上干货;
参考链接:
>
pandas读取前100行用时半个小时。使用Python进行数据分析之前,需要预先导入相对应的功能库。数据分析最常用的库包括用于数值计算的numpy,基于numpy构建的用于科学计算的Pandas库,用于数据可视化的matplotlib和提供各种 *** 作系统功能接口的OS库。我们将这几个库导入到python中, import后是导入库的名称 as后是库的简称。例如pandas库的简称是pd,在后面的代码中看到pd就表示这个 *** 作使用了pandas库
以上就是关于pandas常用函数汇总全部的内容,包括:pandas常用函数汇总、Python pandas用法、Panadas 中利用DataFrame对象的.loc[,]、.iloc[,]方法抽取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)