在上一期中,我们简单介绍了 Series和 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']
table[['C','D']]
用 切片或者 布尔数组可以选取指定行:
table[1:4]
table[table['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]。
转载请标注作者和出处链接
Original: https://blog.csdn.net/weixin_51972995/article/details/122709550
Author: 少喝凉水G
Title: Pandas数据分析教程(2)-数据读取之普通索引、loc/iloc索引
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751323/
转载文章受原作者版权保护。转载请注明原作者出处!