我来为你详细讲解 “PythonPandas数据分析之iloc和loc的用法详解” 这个主题。
什么是pandas以及iloc和loc的作用?
pandas是一款提供数据结构和数据分析工具的Python软件包,它被广泛应用于数据预处理、数据清洗、数据分析和数据可视化等领域。pandas主要有两种数据结构:Series和DataFrame。其中,DataFrame是较为常用的数据结构,它是由多个Series通过共享索引(index)而联系在一起的二维表格。loc和iloc都是pandas中的索引器,用于从DataFrame中选择数据。
iloc的用法是通过行号和列号来选择数据,loc的用法则是通过行索引和列索引来选择数据。iloc和loc的主要区别在于传入的索引方式不同,在选择数据时需要注意。
iloc的使用方法
iloc是基于索引的方式选择数据,其完整的语法格式为:
DataFrame.iloc[rows, cols]
其中,rows和cols分别表示需要选择的行号和列号,可以是单个整数、切片对象、由整数组成的列表或数组、布尔值序列(True/False)等。
下面给出一个根据行号和列号选择数据的示例:
import pandas as pd
data = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
print('data:\n',data)
# 选择第2行第3列数据
res = data.iloc[1, 2]
print('选择第2行第3列数据:', res)
# 选择前2行的第2、3列数据
res = data.iloc[:2, 1:3]
print('选择前2行的第2、3列数据:\n', res)
# 选择第1、3行的第2列数据
res = data.iloc[[0,2], 1]
print('选择第1、3行的第2列数据:\n', res)
运行结果:
data:
A B C
0 1 4 7
1 2 5 8
2 3 6 9
选择第2行第3列数据: 8
选择前2行的第2、3列数据:
B C
0 4 7
1 5 8
选择第1、3行的第2列数据:
0 4
2 6
Name: B, dtype: int64
loc的使用方法
loc是基于标签的方式选择数据,其完整的语法格式为:
DataFrame.loc[rows, cols]
其中,rows和cols分别表示需要选择的行索引和列索引,可以是单个标签、标签切片、由标签组成的列表或数组、布尔值序列(True/False)等。
下面给出一个根据行索引和列索引选择数据的示例:
import pandas as pd
data = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
data.index = ['one', 'two', 'three']
print('data:\n',data)
# 选择'two'行'C'列数据
res = data.loc['two', 'C']
print('选择\'two\'行\'C\'列数据:', res)
# 选择第1、3行的'B'、'C'列数据
res = data.loc[['one','three'], ['B','C']]
print('选择第1、3行的\'B\'、\'C\'列数据:\n', res)
# 选择所有行的'A'、'C'列数据
res = data.loc[:, ['A','C']]
print('选择所有行的\'A\'、\'C\'列数据:\n', res)
运行结果:
data:
A B C
one 1 4 7
two 2 5 8
three 3 6 9
选择'two'行'C'列数据: 8
选择第1、3行的'B'、'C'列数据:
B C
one 4 7
three 6 9
选择所有行的'A'、'C'列数据:
A C
one 1 7
two 2 8
three 3 9
通过上述示例可以发现,iloc和loc的使用方法虽然不同,但是都可用于选取DataFrame中的数据,而且可以选择单个数据、一行或一列的数据,或多行和多列的数据。需要注意的是,在选择数据时需要正确传入行号和列号、行索引和列索引,否则会抛出异常。