Pandas数据分析教程(2)-数据读取之普通索引、lociloc索引

Pandas数据分析教程(2)-数据读取之普通索引、lociloc索引,第1张

Pandas数据分析教程(2)-数据读取之普通索引、loc/iloc索引

没看过往期的朋友可以先看看第一期哈~

Pandas数据分析教程(1)-Series和Dataframe


在上一期中,我们简单介绍了Series和Dataframe两种Pandas中常用的数据结构,那么问题来了,假设我已经有了这两种数据,如何从中提取我想要的部分?

这个问题对于后续读取Excel文件 *** 作至关重要,毕竟Excel文件内容跟Dataframe很像,本节我记录下了Pandas中读取、选择、过滤两种数据结构的方法


Dataframe类型从某种程度上来说,只不过是比Series多了一个维度,在读取时少填一个参数就可以了,读取方法本质上没啥区别,因此本文主要记录Dataframe的读取方法。

由于Pandas建立在Numpy的基础之上,Pandas的索引与Numpy数组索引的功能类似。但是,回忆一下,Numpy数组的索引必须是整数,而Pandas的索引可以是字符串,这就是最主要的区别。

本文记录两种主要方法:普通索引法和loc/iloc选择法。现建立一个Dataframe作为本文的例子:

>> table = pd.Dataframe(np.arange(16).reshape(4,4),
                     range(1,5),['A','B','C','D'])
>> table
    A   B   C   D
1   0   1   2   3
2   4   5   6   7
3   8   9  10  11
4  12  13  14  15
普通索引

普通索引主要用于选取指定列或列序列的数据,另外也可通过上一篇中所讲的布尔数组或者切片选取指定行:

table['C']         #选取'C'行,返回一个Series数据
table[['C','D']]   #选取'C'行和'D'行,返回一个Dataframe数据

用切片或者布尔数组可以选取指定行:

table[1:4]  #选取第2行到第4行,注意是按从0开始的索引计数的,而不是我们自己定的1-4,左闭右开
table[table['C']>7]  #选取C列大于7的行

注意:Series在切片时可有以下形式:obj [‘b’:‘d’],截取行b到行d间的行,包括b、d(假定索引从’a’到’d’),也即左闭右闭。

loc/iloc索引

loc和iloc是pandas的两种用于索引的函数,相较于普通索引,这种方法运用的更为广泛。loc方法称为轴标签索引,iloc方法被称为整数索引。

首先来看iloc方法:

>> table.iloc[[2,3],[3,0,1]]
    D   A   B
3  11   8   9
4  15  12  13

本段代码代表选择第3行(下标为2)和第4行(下标为3)对应第4列、第1列、第2列的部分,注意输出数据的排列顺序是依据给出的索引数据来的。

loc方法与iloc方法的功能是一致的,区别在于,loc方法给出的索引可以不是整数,该方法默认用户填入的参数为定义的标签,而不是从0 → {rightarrow} →N-1的下标。譬如在本例中,列标签为[‘A’,‘B’,‘C’,‘D’],那么可以做出如下示例:

>> table.loc[[2,3],['D','A','B']]
    D  A  B
2   7  4  5
3  11  8  9

这一次模块对索引的认定是用户自定义的索引了,不再是0→N-1的下标了

当然两种方法也是可以进行切片 *** 作的:

table.loc[1:3,:'C']
table.iloc[:,3:]

这些 *** 作都是很好理解的。同时,我们也可以传入布尔数组,进行条件筛选,来个复杂点的:

>> table.loc[2:4,['A','C','D']][(table.A>4) & (table.C>4)]  #思考该语句的意思
    A   C   D
3   8  10  11
4  12  14  15

其实还有一些其他的索引办法,例如at/iat索引、_get_value方法、ix方法(注意!最新版已弃用)等等,但总的来说,这些方法的功能loc/iloc索引可以做到,但loc/iloc索引能做到的这些方法做不到,所以一般都用的很少。at/iat索引、_get_value方法都是用于获取一个单元格的值的方法,其中at和iat的区别跟loc和iloc的区别是一样的。

下次?下次不知道会写啥了,写作内容随机 [狗头.jpg]。

转载请标注作者和出处链接

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5717399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存