Pandas loc/iloc用法详解——《Python数据分析库Pandas》

本文详细介绍了Pandas中的loc和iloc用法,包括基于标签的loc索引和基于位置的iloc索引。loc用于选择指定标签的数据,而iloc则按位置选取。文章讨论了两者在处理数据时的注意事项、性能考虑,以及如何结合布尔索引、切片操作和高级用法进行数据选择。此外,还分享了在大型数据集上使用这两个工具的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas loc/iloc用法详解——《Python数据分析库Pandas》

Pandas loc/iloc用法详解

Pandas是Python中一个强大的数据处理库,它提供了丰富的数据结构和数据分析工具,使得数据处理变得简单而高效。在Pandas中,lociloc是两种常用的基于标签和基于位置的索引方式,用于选择和操作数据。

loc:基于标签的索引

loc是基于标签的索引方式,它使用行标签和列标签来选取数据。它的基本语法如下:

df.loc[row_labels, column_labels]

其中,row_labels是行标签的选择,可以是单个标签、标签列表、标签切片或布尔序列;column_labels是列标签的选择,规则与行标签相同。

例如,假设我们有一个名为df的DataFrame,其中包含以下数据:

import pandas as pd

data = {
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}

df = pd.DataFrame(data, index=['x', 'y', 'z'])

我们可以使用loc来选择特定的行和列:

# 选择单个元素
print(df.loc['x', 'A'])  # 输出:1

# 选择多行多列
print(df.loc[['x', 'z'], ['A', 'C'])

iloc:基于位置的索引

loc不同,iloc是基于位置的索引方式,它使用行号和列号来选取数据。它的基本语法如下:

df.iloc[row_positions, column_positions]

其中,row_positions是行号的选择,可以是整数、整数列表、整数切片或布尔序列;column_positions是列号的选择,规则与行号相同。

使用iloc时,需要注意的是,行号和列号都是从0开始的。

继续以上面的df为例,我们可以使用iloc来选择特定的行和列:

# 选择第一行第一列的元素
print(df.iloc[0, 0])  # 输出:1

# 选择前两行和后两列的数据
print(df.iloc[:2, [1, 2]])

注意事项

  1. 当使用loc时,如果标签不存在,Pandas会抛出一个错误。而使用iloc时,如果位置超出范围,Pandas会返回一个空序列或NaN值。
  2. lociloc可以与其他Pandas函数和方法结合使用,以实现更复杂的数据选择和操作。
  3. 在处理大型数据集时,使用iloc通常比使用loc更快,因为基于位置的索引不需要进行标签查找。

高级用法与实例

在前面的部分,我们介绍了Pandas中lociloc的基本用法。然而,这两个功能强大的索引工具还提供了更多高级的用法,可以满足更复杂的数据选择需求。

布尔索引

lociloc都可以与布尔序列结合使用,以根据条件选择数据。这提供了一种灵活的方式来筛选满足特定条件的行。

例如,假设我们想要选择df中所有值大于5的元素:

# 使用 loc 基于条件筛选
print(df.loc[df['A'] > 5])

# 使用 iloc 基于位置筛选需要结合 np.where 等函数
import numpy as np
condition = df.values[:, 0] > 5
print(df.iloc[np.where(condition)[0], :])

请注意,对于iloc,我们需要使用NumPy的where函数来获取满足条件的行位置索引。

切片操作

除了选择单个元素或列表中的多个元素外,lociloc还支持切片操作,用于选择连续的行或列。

# 使用 loc 进行切片
print(df.loc['x':'y', 'A':'B'])  # 选择从 'x' 到 'y' 的行,以及从 'A' 到 'B' 的列

# 使用 iloc 进行切片
print(df.iloc[0:2, 1:3])  # 选择前两行和后两列的数据(不包括索引2和3)

在切片操作中,loc使用的是标签的切片,而iloc使用的是位置的切片。切片操作是左闭右开的,即包含起始位置,不包含结束位置。

结合使用

在实际应用中,我们通常会结合使用多种索引方法来选择和操作数据。例如,我们可以先使用loc根据条件筛选行,然后再使用iloc选择这些行中的特定列。

# 结合使用 loc 和 iloc
filtered_rows = df.loc[df['A'] > 2]  # 选择 A 列大于 2 的行
selected_data = filtered_rows.iloc[:, 1]  # 选择这些行的第二列(即 B 列)
print(selected_data)

在这个例子中,我们首先使用loc根据A列的值筛选出行,然后使用iloc选择这些筛选后行的第二列数据。

性能考虑

当处理大型数据集时,了解lociloc的性能差异是非常重要的。由于loc是基于标签的索引,它需要进行标签的查找和匹配,这可能会比基于位置的索引慢一些。因此,在处理大型数据集时,如果标签不是有序的或频繁变化的,使用iloc可能会更加高效。然而,如果标签是有序的或经常用于索引,那么loc可能会提供更好的性能,因为它可以利用标签的排序和唯一性来加速查找过程。

总结与最佳实践

lociloc是Pandas中两个强大的工具,用于基于标签和位置选择和操作数据。它们提供了灵活且高效的方式来处理数据,特别是在数据分析和数据清洗等任务中。为了最大化性能并避免错误,以下是一些最佳实践:

  • 在知道确切位置时,优先使用iloc,因为它通常比loc更快。
  • 在使用loc时,确保提供的标签确实存在于DataFrame中,以避免错误。
  • 结合使用lociloc以及其他Pandas函数和方法,以实现复杂的数据选择和操作任务。
  • 在处理大型数据集时,根据标签的特点和索引的频繁程度选择合适的索引方式。

通过掌握这些最佳实践并灵活运用lociloc,您可以更加高效地处理和分析数据,从而加速数据科学项目的进展。




👨‍💻博主Python老吕说:如果您觉得本文有帮助,辛苦您🙏帮忙点赞、收藏、评论,您的举手之劳将对我提供了无限的写作动力!🤞


🔥精品付费专栏:《Python全栈工程师》《跟老吕学MySQL》《Python游戏开发实战讲解》


🌞精品免费专栏:《Python全栈工程师·附录资料》《Pillow库·附录资料》《Pygame·附录资料》《Tkinter·附录资料》《Django·附录资料》《NumPy·附录资料》《Pandas·附录资料》《Matplotlib·附录资料》《Python爬虫·附录资料》


🌐前端免费专栏:《HTML》《CSS》《JavaScript》《Vue》


💻后端免费专栏:《C语言》《C++语言》《Java语言》《R语言》《Ruby语言》《PHP语言》《Go语言》《C#语言》《Swift语言》《跟老吕学Python编程·附录资料》


💾数据库免费专栏:《Oracle》《MYSQL》《SQL》《PostgreSQL》《MongoDB》


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python老吕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值