4.2 基于位置的选择:iloc[]


文档摘要

4.2 基于位置的选择:iloc[] Pandas数据选择与过滤:4.2 基于位置的选择:iloc[] 的基本概念 是Pandas DataFrame对象的一个属性,它允许你使用整数位置(索引)来选择数据。与基于标签的 不同, 完全依赖于数据在DataFrame中的物理位置。这意味着你可以使用行号和列号来访问数据,而无需考虑行索引和列标签。 语法: : 指定要选择的行的整数位置或整数位置的切片。 : 指定要选择的列的整数位置或整数位置的切片。 关键点: 是基于 0 的索引,也就是说,第一行的索引是 0,第一列的索引也是 0。 在选择时遵循 Python 的切片规则,即左闭右开区间。例如, 会选择索引为 0、1 和 2 的行,但不包括索引为 3 的行。

4.2 基于位置的选择:iloc[]

Pandas数据选择与过滤:4.2 基于位置的选择:iloc[]

1. iloc[] 的基本概念

iloc[] 是Pandas DataFrame对象的一个属性,它允许你使用整数位置(索引)来选择数据。与基于标签的.loc[]不同,iloc[] 完全依赖于数据在DataFrame中的物理位置。这意味着你可以使用行号和列号来访问数据,而无需考虑行索引和列标签。

语法:

df.iloc[row_indexer, column_indexer]
  • row_indexer: 指定要选择的行的整数位置或整数位置的切片。

  • column_indexer: 指定要选择的列的整数位置或整数位置的切片。

关键点:

  • iloc[] 是基于 0 的索引,也就是说,第一行的索引是 0,第一列的索引也是 0。

  • iloc[] 在选择时遵循 Python 的切片规则,即左闭右开区间。例如,iloc[0:3] 会选择索引为 0、1 和 2 的行,但不包括索引为 3 的行。

  • 如果只提供一个索引器,iloc[] 默认将其解释为行索引。

2. iloc[] 的使用方法

2.1 选择单行或单列

import pandas as pd # 创建一个示例DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 28, 22], 'City': ['New York', 'London', 'Paris', 'Tokyo']} df = pd.DataFrame(data) print("原始DataFrame:\n", df) # 选择第一行 first_row = df.iloc[0] print("\n第一行:\n", first_row) # 选择第二列(Age列) second_column = df.iloc[:, 1] print("\n第二列(Age列):\n", second_column)

输出:

原始DataFrame: Name Age City 0 Alice 25 New York 1 Bob 30 London 2 Charlie 28 Paris 3 David 22 Tokyo 第一行: Name Alice Age 25 City New York Name: 0, dtype: object 第二列(Age列): 0 25 1 30 2 28 3 22 Name: Age, dtype: int64

2.2 选择多行或多列

可以使用切片来选择多行或多列。

# 选择前两行 first_two_rows = df.iloc[0:2] print("\n前两行:\n", first_two_rows) # 选择第二列和第三列(Age和City列) second_and_third_columns = df.iloc[:, 1:3] print("\n第二列和第三列(Age和City列):\n", second_and_third_columns) # 选择1,3行和0,2列 rows_1_3_cols_0_2 = df.iloc[[1,3],[0,2]] print("\n1,3行和0,2列:\n", rows_1_3_cols_0_2)

输出:

前两行: Name Age City 0 Alice 25 New York 1 Bob 30 London 第二列和第三列(Age和City列): Age City 0 25 New York 1 30 London 2 28 Paris 3 22 Tokyo 1,3行和0,2列: Name City 1 Bob London 3 David Tokyo

2.3 使用负索引

iloc[] 也支持负索引,这使得从DataFrame的末尾开始选择变得容易。

# 选择最后一行 last_row = df.iloc[-1] print("\n最后一行:\n", last_row) # 选择倒数第二行和最后一列 second_last_row_last_column = df.iloc[-2, -1] print("\n倒数第二行和最后一列:\n", second_last_row_last_column)

输出:

最后一行: Name David Age 22 City Tokyo Name: 3, dtype: object 倒数第二行和最后一列: Paris

2.4 使用列表或数组选择

除了切片,还可以使用整数列表或NumPy数组来选择特定的行或列。

import numpy as np # 使用列表选择第1行和第3行 rows_to_select = [0, 2] selected_rows = df.iloc[rows_to_select] print("\n第1行和第3行:\n", selected_rows) # 使用NumPy数组选择第0列和第2列 cols_to_select = np.array([0, 2]) selected_cols = df.iloc[:, cols_to_select] print("\n第0列和第2列:\n", selected_cols)

输出:

第1行和第3行: Name Age City 0 Alice 25 New York 2 Charlie 28 Paris 第0列和第2列: Name City 0 Alice New York 1 Bob London 2 Charlie Paris 3 David Tokyo

2.5 选择特定单元格

# 选择第2行第1列的元素 cell_value = df.iloc[1, 0] print("\n第2行第1列的元素:\n", cell_value)

输出:

第2行第1列的元素: Bob

3. iloc[] 的注意事项

  • IndexError: 如果尝试使用超出DataFrame范围的索引,iloc[] 会引发 IndexError

  • .loc[] 的区别: iloc[] 使用整数位置,而 .loc[] 使用标签。混淆两者会导致错误。

  • 性能: 对于大型DataFrame,使用切片通常比使用列表或数组选择更有效率。

4. iloc[] 的应用场景

  • 数据清洗和预处理: 根据行号或列号删除不需要的数据。

  • 特征工程: 选择特定的特征列进行分析。

  • 机器学习: 将数据集划分为训练集和测试集。

  • 数据可视化: 选择特定的数据子集进行可视化。

5. Mermaid图示

以下是一个使用Mermaid图示来总结 iloc[] 用法的例子:

图示说明:

  1. DataFrame: 代表Pandas DataFrame对象。

  2. iloc[]: 表示使用 iloc[] 进行选择。

  3. Row Indexer: 指定行索引,可以是整数位置、切片、列表或数组。

  4. Column Indexer: 指定列索引,可以是整数位置、切片、列表或数组。

  5. Select Rows: 根据行索引选择行。

  6. Select Columns: 根据列索引选择列。

  7. Resulting DataFrame: 最终选择的结果DataFrame。

6. 总结

iloc[] 是Pandas中基于位置选择数据的强大工具。通过理解其基本概念、使用方法和注意事项,可以高效地从DataFrame中提取所需的数据。掌握 iloc[] 对于数据分析和处理至关重要,能够帮助你更轻松地完成各种数据操作任务。希望本文能够帮助你更好地理解和使用 iloc[]


发布者: 作者: 转发
评论区 (0)
U