Pandas 是 Python 中一个强大的数据分析工具库,它提供了多种数据访问和操作的方法。本文将对 iloc, loc, iat, at 四种访问数据的方式进行详细介绍。

1. iloc
iloc 是基于整数索引的访问方式,它允许你通过行和列的整数位置来访问数据。
import pandas as pd
# 创建一个简单的DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
# 使用iloc访问第一行第二列的数据
print(df.iloc[0, 1]) # 输出:5
注:iloc 通过行索引和列索引进行访问,索引从0开始。
2. loc
loc 是基于标签的访问方式,它允许你通过行和列的标签来访问数据。
# 假设DataFrame的索引和列名已经定义
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['row1', 'row2', 'row3'])
# 使用loc访问'row2'行的'B'列数据
print(df.loc['row2', 'B']) # 输出:5
注:loc 通过行标签和列标签进行访问,可以是单个标签或标签的切片。
3. iat
iat 是 iloc 的一个变体,用于访问单个元素,它使用整数索引。
# 使用iat访问第一行第二列的数据
print(df.iat[0, 1]) # 输出:5
注:iat 只用于访问单个元素,如果需要访问多个元素,请使用 iloc。
4. at
at 是 loc 的一个变体,用于访问单个元素,它使用标签索引。
# 使用at访问'row2'行的'B'列数据
print(df.at['row2', 'B']) # 输出:5
注:at 只用于访问单个元素,如果需要访问多个元素,请使用 loc。
使用 iloc 访问多个元素
# 继续使用之前定义的DataFrame
df.iloc[0:2, 1:3] # 输出:DataFrame的前两行,第二列和第三列的数据
注:iloc 可以接收一个切片作为参数,来访问一个连续的区域。这里的 [0:2, 1:3] 表示从第0行到第1行(不包括第2行),以及从第1列到第2列(不包括第3列)。
使用 loc 访问多个元素
# 假设DataFrame的索引和列名已经定义
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['row1', 'row2', 'row3'])
df.loc[['row1', 'row2'], ['B', 'C']] # 输出:'row1'和'row2'行的'B'和'C'列的数据
注:loc 可以使用列表来选择多行,同样使用列表来选择多列。这里的 [['row1', 'row2'], ['B', 'C']] 表示选择 'row1' 和 'row2' 这两行,以及 'B' 和 'C' 这两列。
扩展案例:布尔索引
除了使用切片和列表,loc 还可以使用布尔索引来选择行。
# 使用loc和布尔索引选择'A'列大于1的所有行
df.loc[df['A'] > 1, ['B', 'C']]
注:在这个例子中,df['A'] > 1 生成了一个布尔序列,loc 使用这个序列来选择对应的行,然后选择 'B' 和 'C' 这两列。
总结
iat和at用于访问单个元素,而iloc和loc可以访问多个元素。iloc主要用于基于整数的位置索引,可以很容易地进行切片操作来选择多个元素。loc主要用于基于标签的索引,可以结合列表或布尔索引来选择多个元素。在使用这些方法时,要确保索引或标签与你的数据结构相匹配,以避免错误或意外的数据访问。
通过这些访问方式,你可以灵活地操作和分析 Pandas 中的数据。记得在使用这些方法时,根据你的数据结构和需求选择合适的访问方式。