Pandas 数据选择

PandasBeginner
立即练习

介绍

欢迎来到 Pandas 数据选择实验!Pandas 是 Python 中一个强大的数据处理和分析库。数据分析中最基本任务之一就是选择数据的特定子集。无论你需要检查单个列、几个特定行,还是数据集的复杂切片,Pandas 都提供了多种灵活高效的方法来完成这项工作。

在这个实验中,你将使用一个学生信息样本数据集。你将学习如何:

  • 使用方括号表示法选择单个和多个列。
  • 使用 .loc 访问器按标签选择行。
  • 使用 .iloc 访问器按整数位置选择行。
  • 组合行和列选择来提取精确的数据切片。

在本实验结束时,你将对 Pandas 的核心数据选择技术有扎实的理解,这些技术对于任何数据相关任务都至关重要。

使用方括号表示法选择单列

在本步骤中,你将学习从 Pandas DataFrame 中选择单列的最常用方法。这通过使用方括号表示法 [] 来完成,这与你在 Python 字典中访问值的方式类似。

首先,我们需要将 students.csv 文件中的数据加载到 DataFrame 中。然后,我们可以通过在方括号内传递列名作为字符串来选择一列。

请打开左侧文件浏览器中的 main.py 文件,并添加以下代码。

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the 'name' column
name_column = df['name']

## Print the selected column
print(name_column)

现在,让我们运行脚本。在 WebIDE 中打开一个终端,并执行以下命令:

python3 main.py

你将看到输出,这是一个 Pandas Series 对象,其中包含 'name' 列中的所有姓名。

0      Alice
1        Bob
2    Charlie
3      David
4        Eve
Name: name, dtype: object

如你所见,选择单列会返回一个 Series,它本质上是一个一维的带标签数组。

通过列表选择多列

在本步骤中,我们将扩展上一技术,一次选择多列。要做到这一点,你不需要传递单个字符串,而是将列名列表传递到选择方括号内。请注意双重方括号 [[]] 的使用:外层方括号用于选择本身,内层方括号创建列的列表。

让我们修改 main.py 文件来选择 namescore 列。

使用以下代码更新你的 main.py

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the 'name' and 'score' columns
subset = df[['name', 'score']]

## Print the resulting subset DataFrame
print(subset)

现在,再次从你的终端运行脚本:

python3 main.py

输出将是一个新的 DataFrame,其中只包含你指定的列。

      name  score
0    Alice     85
1      Bob     92
2  Charlie     95
3    David     88
4      Eve     90

与选择单列返回 Series 不同,选择多列会返回一个新的 DataFrame

使用 loc 按标签选择行

在本步骤中,你将学习如何使用 .loc 访问器根据标签选择数据。.loc 索引器主要基于标签,这意味着你使用索引 名称(或标签)来进行选择。默认情况下,当你加载 CSV 文件而不指定索引列时,Pandas 会分配一个从 0 开始的默认整数索引。这些整数充当行的标签。

让我们使用 .loc 来选择 DataFrame 的第三行,其索引标签为 2

使用以下代码更新你的 main.py 文件:

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the row with index label 2
charlie_data = df.loc[2]

## Print the selected row
print(charlie_data)

从你的终端运行脚本:

python3 main.py

输出将是一个 Series,其中包含索引标签为 2 的行的所有数据。

name        Charlie
age              21
major     Mathematics
score            95
Name: 2, dtype: object

这显示了学生 "Charlie" 的数据。当你知晓行的标签时,使用 .loc 是访问行的强大方法。

使用 iloc 按整数位置选择行

在本步骤中,我们将探讨另一种选择方法:.iloc.iloc 索引器主要基于整数位置。它的工作方式与 Python 列表切片类似,你使用整数索引来访问元素。这与使用标签的 .loc 不同。虽然我们的默认索引标签也是整数,但当你拥有非整数标签时,这种区别就变得至关重要。

让我们使用 .iloc 来选择 DataFrame 的第一行,它位于整数位置 0

使用以下代码更新你的 main.py 文件:

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select the first row (at integer position 0)
first_row = df.iloc[0]

## Print the selected row
print(first_row)

从你的终端运行脚本:

python3 main.py

输出将是一个 Series,其中包含第一位学生 "Alice" 的数据。

name       Alice
age           20
major    Physics
score         85
Name: 0, dtype: object

请记住关键区别:.loc 用于标签,.iloc 用于整数位置。

使用 loc 切片行和列

在最后一步中,你将结合所学知识执行更强大的选择。.loc.iloc 都可以使用 df.loc[row_selector, column_selector] 语法同时选择行和列。

我们将使用 .loc 来选择一个行切片和一个列切片。.loc 的一个关键特性是,当你使用标签进行切片时(例如 1:3),结束标签(3)是 包含在内的

让我们选择索引标签从 13 的行,以及从 namemajor 的列。

使用以下代码更新你的 main.py 文件:

import pandas as pd

## Load the CSV file into a DataFrame
df = pd.read_csv('students.csv')

## Select rows with index labels 1 through 3 (inclusive)
## and columns from 'name' to 'major' (inclusive)
data_slice = df.loc[1:3, 'name':'major']

## Print the resulting slice
print(data_slice)

从你的终端运行脚本:

python3 main.py

输出是一个新的 DataFrame,它是原始数据的特定“切片”。

      name  age           major
1      Bob   22  Computer Science
2  Charlie   21       Mathematics
3    David   23       Engineering

这种技术对于隔离数据集的特定区域进行分析非常有用。

总结

恭喜你完成了本次实验!你已成功掌握了 Pandas 中选择数据的基本方法。

在本次实验中,你练习了:

  • 使用方括号表示法 df['column'] 选择单个列,这将返回一个 Series
  • 使用方括号表示法中的列表 df[['col1', 'col2']] 选择多个列,这将返回一个 DataFrame
  • 使用 .loc 按标签选择行,这对于基于标签的索引非常强大。
  • 使用 .iloc 按整数位置选择行,它遵循标准的 Python 切片规则。
  • 结合使用 .loc 的行和列选择器,以提取数据的特定二维切片。

掌握这些选择技术是熟练使用 Pandas 进行数据分析和操作的关键第一步。你现在可以自信地访问 DataFrame 的任何部分来进行检查、分析或修改。