解释
iloc
和 loc
方法都用于按照行标签或列标签来进行索引操作,但它们有一些关键的区别。
-
iloc 方法:
data.iloc[“行”:“列”]
iloc
是基于索引位置进行索引的,即它使用整数位置来选择数据。- 它接受整数、整数列表、整数切片、布尔数组等作为输入。
- 当使用整数作为参数时,
iloc
将按照整数位置来进行选择。这意味着它不考虑行或列的标签,而只考虑它们在 DataFrame 中的位置。 - 例如,
data.iloc[0]
将选择第一行,data.iloc[:, 0]
将选择第一列,data.iloc[1:3, :]
将选择第二行到第三行的数据等。
-
loc 方法:
data.loc[“行”:“列”]
loc
是基于标签进行索引的,即它使用行标签或列标签来选择数据。- 它接受标签、标签列表、标签切片、布尔数组等作为输入。
- 当使用标签作为参数时,
loc
将按照标签来进行选择。这意味着它根据行或列的标签来选择数据。 - 例如,
data.loc[0]
将选择标签为 0 的行,data.loc[:, 'column_name']
将选择名为 ‘column_name’ 的列,data.loc[1:3, :]
将选择标签为 1 到 3 的行等。
下面是一个更具体的示例,以说明 iloc
和 loc
方法的区别:
示例一
假设我们有以下 DataFrame:
A B C
0 1 4 7
1 2 5 8
2 3 6 9
使用 iloc
和 loc
方法来选择数据:
# 使用 iloc 方法选择第一行
print(df.iloc[0])
# 输出:
# A 1
# B 4
# C 7
# Name: 0, dtype: int64
# 使用 loc 方法选择标签为 0 的行
print(df.loc[0])
# 输出:
# A 1
# B 4
# C 7
# Name: 0, dtype: int64
# 使用 iloc 方法选择第一列
print(df.iloc[:, 0])
# 输出:
# 0 1
# 1 2
# 2 3
# Name: A, dtype: int64
# 使用 loc 方法选择列标签为 'A' 的列
print(df.loc[:, 'A'])
# 输出:
# 0 1
# 1 2
# 2 3
# Name: A, dtype: int64
在这个示例中,iloc
和 loc
方法都返回了相同的结果,因为 DataFrame 的索引标签与整数位置相对应。然而,在实际情况下,当索引标签不是整数时,它们的行为可能会有所不同。
示例二
(1)使用read_csv函数读取某地区房屋销售数据.csv 文件。
import pandas as pd
data = pd.read_csv('某地区房屋销售数据.csv',encoding='gbk')
data
(2)使用iloc()方法、1oc()方法对房屋类型为单身公寓的数据进行索引操作。
- 下面是使用
loc
方法对房屋类型为单身公寓的数据进行索引操作的示例:
unit_data = data.loc[data['房屋类型'] == 'unit']
print(unit_data)
这里我们使用 loc
方法,然后传入一个条件,即 data['房屋类型'] == 'unit'
,这将返回一个布尔 Series,表示是否满足条件。然后,我们将这个条件传递给 loc
方法,它将根据条件选择满足条件的行,并返回一个新的 DataFrame,其中包含了满足条件的所有数据。
- 如果使用
iloc
方法,您可以通过以下方式实现:
unit_data = data.iloc[(data['房屋类型'] == 'unit').values]
print(unit_data)
在这种情况下,我们首先使用 (data['房屋类型'] == 'unit').values
来获取一个布尔数组,然后将其传递给 iloc
方法,以按照布尔数组中的索引来选择行。请注意,这种方法只适用于数据没有被重新索引的情况下。