基本原理
在Python的Pandas库中,数据选择是数据分析和处理的基础。iloc
和loc
是两种常用的数据选择方法,它们都允许用户根据索引位置或标签来选择数据。然而,它们在行为和用途上存在一些关键的差异。
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:选择多行多列
我们可以使用iloc
和loc
来选择多行多列的数据:
# 使用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
在选择数据时对索引的连续性要求不高,即使索引不连续,也可以正常工作。- 在选择数据时,
loc
和iloc
都可以结合切片使用,但切片的含义不同。iloc
的切片是基于整数位置的,而loc
的切片是基于标签的。 - 在使用
loc
时,如果指定的标签不存在,Pandas会返回一个空的DataFrame,而不会抛出错误。
结论
iloc
和loc
是Pandas中两种非常强大的数据选择工具。iloc
基于整数索引,适合于快速访问数据的位置,而loc
基于标签索引,适合于处理索引不连续或缺失的情况。理解这两种方法的差异,可以帮助你更有效地进行数据操作和分析。在实际应用中,根据数据的特点和需求,选择合适的方法来选择数据,可以提高代码的效率和可读性。
>
> 【痕迹】QQ+微信朋友圈和聊天记录分析工具1.0.4 (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。
>
> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。
>
> (3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。
>
> 下载地址:https://www.alipan.com/s/x6fqXe1jVg1
>