Pandas的iloc, loc, iat, at的用法介绍

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

1. iloc

iloc 是基于整数索引的访问方式,它允许你通过行和列的整数位置来访问数据。

import pandas as pd

# 创建一个简单的DataFrame
df = pd.DataFrame({
    'A': [123],
    'B': [456],
    'C': [789]
})

# 使用iloc访问第一行第二列的数据
print(df.iloc[01])  # 输出:5

iloc 通过行索引和列索引进行访问,索引从0开始。

2. loc

loc 是基于标签的访问方式,它允许你通过行和列的标签来访问数据。

# 假设DataFrame的索引和列名已经定义
df = pd.DataFrame({
    'A': [123],
    'B': [456],
    'C': [789]
}, index=['row1''row2''row3'])
# 使用loc访问'row2'行的'B'列数据
print(df.loc['row2''B'])  # 输出:5

loc 通过行标签和列标签进行访问,可以是单个标签或标签的切片。

3. iat

iatiloc 的一个变体,用于访问单个元素,它使用整数索引。

# 使用iat访问第一行第二列的数据
print(df.iat[01])  # 输出:5

iat 只用于访问单个元素,如果需要访问多个元素,请使用 iloc

4. at

atloc 的一个变体,用于访问单个元素,它使用标签索引。

# 使用at访问'row2'行的'B'列数据
print(df.at['row2''B'])  # 输出:5

at 只用于访问单个元素,如果需要访问多个元素,请使用 loc

使用 iloc 访问多个元素

# 继续使用之前定义的DataFrame
df.iloc[0:21:3]  # 输出:DataFrame的前两行,第二列和第三列的数据

iloc 可以接收一个切片作为参数,来访问一个连续的区域。这里的 [0:2, 1:3] 表示从第0行到第1行(不包括第2行),以及从第1列到第2列(不包括第3列)。

使用 loc 访问多个元素

# 假设DataFrame的索引和列名已经定义
df = pd.DataFrame({
    'A': [123],
    'B': [456],
    'C': [789]
}, 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' 这两列。

总结

  • iatat 用于访问单个元素,而 ilocloc 可以访问多个元素。

  • iloc 主要用于基于整数的位置索引,可以很容易地进行切片操作来选择多个元素。

  • loc 主要用于基于标签的索引,可以结合列表或布尔索引来选择多个元素。

  • 在使用这些方法时,要确保索引或标签与你的数据结构相匹配,以避免错误或意外的数据访问。

通过这些访问方式,你可以灵活地操作和分析 Pandas 中的数据。记得在使用这些方法时,根据你的数据结构和需求选择合适的访问方式。


请使用浏览器的分享功能分享到微信等