pandas中的loc和iloc

2024-06-19 23:44
文章标签 pandas iloc loc

本文主要是介绍pandas中的loc和iloc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

loc和iloc的比较

.loc.iloc 是 pandas 提供的两种不同的索引方法,它们的主要区别在于索引数据的依据:

  1. .loc
    • 基于标签的索引,使用 DataFrame 或 Series 的索引标签(即行名和列名)来获取数据。
    • 可以使用单个标签、标签列表、标签切片、布尔数组或者 callable 函数作为索引器。
    • 如果使用标签索引并且标签不存在,.loc 会抛出一个 KeyError
    • 对于切片,包括两端的标签。
  2. .iloc
    • 基于位置的索引,使用 DataFrame 或 Series 的整数索引位置来获取数据。
    • 可以使用单个整数、整数列表、整数切片、布尔数组或者 callable 函数作为索引器。
    • 如果使用整数索引并且位置超出范围,.iloc 会抛出一个 IndexError,但切片索引器允许超出范围的索引。
    • 对于切片,不包括结束位置的索引,这与 Python 的列表切片行为一致。
      简而言之,.loc 用于根据数据的实际标签(名称)进行索引,而 .iloc 用于根据数据的实际位置(整数索引)进行索引。选择哪一种方法取决于您是否知道数据的标签,或者是否需要按照数据的实际位置进行操作。

示例

下面为 .loc.iloc 提供一个例子,以说明它们在 DataFrame 中的使用。

.loc 示例

假设我们有一个 DataFrame,其中包含了某些水果的库存信息,包括它们的种类和数量。DataFrame 的索引是水果的名称,列是 ‘库存数量’。

import pandas as pd
# 创建一个示例 DataFrame
data = {'库存数量': [10, 20, 30, 40]}
df = pd.DataFrame(data, index=['苹果', '香蕉', '樱桃', '梨'])

现在,如果我们想要选择所有库存数量大于 20 的水果,我们可以使用 .loc 和一个布尔数组:

# 使用布尔索引选择库存数量大于 20 的行
selected_fruits = df.loc[df['库存数量'] > 20]
print(selected_fruits)

输出将是:

     库存数量
樱桃     30
梨       40

.iloc 示例

使用同一个 DataFrame,如果我们想要选择前两个水果的库存数量,我们可以使用 .iloc 和一个整数列表:

# 使用整数索引选择前两个行的数据
first_two_fruits = df.iloc[[0, 1]]
print(first_two_fruits)

输出将是:

     库存数量
苹果     10
香蕉     20

或者,如果我们想要选择前两个水果的库存数量,也可以使用切片:

# 使用切片选择前两个行的数据
first_two_fruits = df.iloc[0:2]
print(first_two_fruits)

输出将是:

     库存数量
苹果     10
香蕉     20

请注意,在 .iloc 中使用切片时,结束索引是不包含的,这与 Python 的列表切片和 .loc 的行为不同。


两个结合起来使用:
在这里插入图片描述

需要注意的一些问题

在使用 .loc.iloc 进行数据索引时,有些常见的错误需要避免,以确保正确地获取数据。以下是一些需要注意的问题:

  1. 使用错误的索引方法
    • 使用 .loc 时使用整数索引,而不是标签索引。
    • 使用 .iloc 时使用标签,而不是整数位置索引。
  2. 索引超出范围
    • 使用 .iloc 时,提供的整数索引超出 DataFrame 或 Series 的范围。
    • 使用 .loc 时,提供的标签不存在于 DataFrame 或 Series 的索引中。
  3. 切片包含性误解
    • 对于 .loc,切片包括两端的标签,而对于 .iloc,切片不包括结束位置的索引。混淆这一点可能导致意外的结果。
  4. 布尔索引的错误使用
    • .loc.iloc 中使用布尔索引时,错误地将条件表达式写错,导致选择错误的数据行。
  5. 对多级索引(MultiIndex)的不正确处理
    • 当 DataFrame 有多级索引时,没有正确地使用元组来指定各级索引,导致选择错误的数据。
  6. 使用 = 赋值而不是 == 进行比较
    • 在布尔索引时,错误地使用 = 进行赋值操作,而不是 == 进行比较。
  7. callable 索引器的错误使用
    • 使用 callable 作为索引器时,返回的索引不正确或者与 DataFrame 的形状不匹配。
  8. 在链式索引中不使用括号
    • 当进行链式索引操作时(即连续使用 .loc.iloc),没有使用括号将索引操作括起来,可能会导致解析错误。
  9. NoneNaN 的混淆
    • 在布尔索引中,错误地将 NoneNaN 混淆,这可能会导致意外的过滤结果。

为了避免这些错误,需要注意的东西:

  • 清楚 DataFrame 或 Series 的索引类型(整数索引或标签索引)。
  • 在使用索引之前,先检查 DataFrame 或 Series 的索引和列名。
  • 在进行索引操作时,确保使用了正确的符号和方法。
  • 对于复杂的索引操作,可以使用小范围的测试数据来验证您的索引逻辑是否正确。
  • 在进行链式索引时,使用括号来确保正确的执行顺序。

这篇关于pandas中的loc和iloc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076489

相关文章

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等

win7下安装Canopy(EPD) 及 Pandas进行python数据分析

先安装好canopy,具体安装版本看自己需要那种,我本来是打算安装win764位的,却发现下载总是出现错误,无奈只能下载了32位的! https://store.enthought.com/downloads/#default 安装好之后,参考如下连接,进行检验: 之后再根据下面提供的连接进行操作,一般是没问题的! http://jingyan.baidu.com/article/5d6

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能,但它与其他Python库(如Matplotlib和Seaborn)无缝集成,允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法: 1. 使用Matplotlib Pandas中的plot()方法实际上是基于Matplotlib的,你可以使用它来绘制各种基本图表,例如折线图、柱状图、散点图等。 import pandas

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

数据处理与数据填充在Pandas中的应用

在数据分析和机器学习项目中,数据处理是至关重要的一步。Pandas作为Python中用于数据分析和操作的一个强大库,提供了丰富的功能来处理和清洗数据。本文将深入探讨Pandas在数据处理,特别是数据填充方面的应用。 在实际的数据集中,缺失值(Missing Values)或异常值(Outliers)是常见的问题。这些不完整或错误的数据如果不加以处理,会严重影响数据分析的准确性和机器学习模型的性能

【python pandas】 Dataframe的数据print输出 显示为...省略号

pandas.set_option() 可以设置pandas相关的参数,从而改变默认参数。 打印pandas数据事,默认是输出100行,多的话会输出….省略号。 那么可以添加: pandas.set_option('display.max_rows',None) 这样就可以显示全部数据 同样,某一列比如url太长 显示省略号 也可以设置。 pd.set_option('display.

Python|玩转 Excel:Pandas、openpyxl、pywin32

文章目录 引言Pandas读取 Excel写入 Excel数据操作样式设置数据验证公式支持 openpyxl读取 Excel写入 Excel数据操作样式设置数据验证公式支持图表创建 xlrd / xlwt读取 Excel(xlrd)写入 Excel(xlwt) pyxlsb读取 Excel(pyxlsb) xlsxwriter写入 Excel样式设置公式支持图表创建 pywin32 (Win