【Python】 深入理解Pandas中的iloc和loc:数据选择的艺术

基本原理

在Python的Pandas库中,数据选择是数据分析和处理的基础。ilocloc是两种常用的数据选择方法,它们都允许用户根据索引位置或标签来选择数据。然而,它们在行为和用途上存在一些关键的差异。

iloc

iloc是基于整数索引的,它允许用户通过行和列的整数位置来选择数据。例如,如果你有一个DataFrame,iloc可以让你选择第n行和第m列的数据。iloc不关心数据的实际标签,它只关注数据的位置。

loc

iloc不同,loc是基于标签的。这意味着你可以使用行和列的标签来选择数据。loc在处理缺失的索引时也更为灵活,它允许你选择标签存在于DataFrame中的任何数据,即使这些标签不是连续的。

代码示例

示例1:使用iloc选择数据

假设我们有一个简单的DataFrame:

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, 0])  # 输出:1
示例2:使用loc选择数据

使用相同的DataFrame,我们使用loc来选择数据:

# 使用loc选择第一行和第一列的数据
print(df.loc[0, 'A'])  # 输出:1
示例3:选择多行多列

我们可以使用ilocloc来选择多行多列的数据:

# 使用iloc选择第一行和第二列到第三列的数据
print(df.iloc[0, 1:3])  # 输出:[4, 7]

# 使用loc选择第一行和第二列到第三列的数据
print(df.loc[0, 'B':'C'])  # 输出:{'B': 4, 'C': 7}
示例4:处理缺失索引

假设DataFrame中的索引不连续:

# 创建一个索引不连续的DataFrame
df2 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}, index=[1, 2, 4])

# 使用iloc选择第二行的数据会报错,因为索引2不存在
try:
    print(df2.iloc[1])
except IndexError as e:
    print(e)  # 输出:index 1 is out of bounds for axis 0 with size 3

# 使用loc选择第二行的数据,即使索引2不存在
print(df2.loc[2])  # 输出:{'A': 2, 'B': 5}

注意事项

  • 当使用iloc时,确保索引在范围内,否则会抛出IndexError
  • loc在选择数据时对索引的连续性要求不高,即使索引不连续,也可以正常工作。
  • 在选择数据时,lociloc都可以结合切片使用,但切片的含义不同。iloc的切片是基于整数位置的,而loc的切片是基于标签的。
  • 在使用loc时,如果指定的标签不存在,Pandas会返回一个空的DataFrame,而不会抛出错误。

结论

ilocloc是Pandas中两种非常强大的数据选择工具。iloc基于整数索引,适合于快速访问数据的位置,而loc基于标签索引,适合于处理索引不连续或缺失的情况。理解这两种方法的差异,可以帮助你更有效地进行数据操作和分析。在实际应用中,根据数据的特点和需求,选择合适的方法来选择数据,可以提高代码的效率和可读性。

>
> 【痕迹】QQ+微信朋友圈和聊天记录分析工具1.0.4 (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。
>
> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。
>
> (3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。
>
> 下载地址:https://www.alipan.com/s/x6fqXe1jVg1
>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值