介绍
欢迎来到 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 文件来选择 name 和 score 列。
使用以下代码更新你的 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)是 包含在内的。
让我们选择索引标签从 1 到 3 的行,以及从 name 到 major 的列。
使用以下代码更新你的 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 的任何部分来进行检查、分析或修改。



