实验题二:Pandas 使用 题目描述 本次实验主要围绕 pandas 库的使用,通过不同的操作来熟悉 pandas 数据框的创建、数据选择和数据处理等功能。 小题 1:数据框创建与基本属性 任务:创建一个包含学生姓名、年龄和成绩的 pandas 数据框,数据如下: | 姓名 | 年龄 | 成绩 | | 张三 | 20 | 85 | | 李四 | 21 | 90 | | 王五 | 22 | 78 | 然后打印数据框的基本信息和前几行(.head())。 小题 2:数据选择 任务:从小题 1 中创建的数据框中选择年龄大于 20 的学生信息,并打印这些学生的姓名和成绩。 小题 3:数据处理 任务:在小题 1 中创建的数据框中添加一列 等级,根据成绩划分等级:成绩大于等于 90 为 A,成绩大于等于 80 为 B,成绩大于等于 70 为 C,其余为 D,然后打印更新后的数据框。
时间: 2025-06-09 19:58:51 浏览: 14
<think>好的,我需要帮助用户解决关于Pandas的三个实验题。首先,我得仔细阅读每个小题的要求,确保理解每个任务的具体目标。
对于小题1,用户需要创建一个包含学生姓名、年龄和成绩的数据框。我应该先考虑如何用Pandas的DataFrame来构建这个结构。数据是明确的,三列:姓名、年龄、成绩,三行数据。可能需要使用字典结构,将列名作为键,数据作为列表。然后打印基本信息和前几行,这应该用.info()和.head()方法。需要注意的是,用户的数据是否正确,比如年龄和成绩的数据类型是否正确,是否会有缺失值,但根据题目描述,数据应该是完整的,所以暂时不需要处理缺失值。
接下来是小题2,要求选择年龄大于20的学生,并打印姓名和成绩。这里需要用到布尔索引,即筛选年龄列大于20的行,然后选择特定的列。需要注意的是,Pandas中如何组合多个条件,但这里只有一个条件,所以比较简单。可能需要提醒用户注意条件运算符的正确使用,比如用==而不是=,但题目中的条件明确,应该没问题。之后是列的选择,可以用df[['姓名', '成绩']]来提取。
小题3是在原数据框添加新列“等级”,根据成绩划分等级。这里应该使用apply函数或者np.where或者cut方法。题目中的条件是分层的,需要按顺序判断。比如成绩>=90为A,>=80为B,>=70为C,其他D。这里需要注意的是条件的顺序,因为如果先判断>=70,可能会覆盖更高分的情况,所以应该从高到低判断。或者使用pd.cut的分箱功能,设置bins和labels参数。这里可能用lambda函数结合apply更直观,但也可以使用向量化的方法,比如np.select或者多个布尔条件。需要选择一种高效且易读的方式来实现。
现在需要检查是否有潜在的问题。比如在小题3中,成绩是否有超出预期的情况,比如超过100或低于0,但题目中的数据是78到90,所以暂时不需要处理。另外,添加新列时是否会修改原数据框还是生成副本,这里应该直接在原数据框上添加,所以使用df['等级'] = ...的方式。
接下来考虑如何组织代码示例,确保每个小题的代码分开,并且有注释说明。同时,输出结果也要展示出来,让用户清楚每个步骤的结果。比如在小题1中,使用print(df.head())来显示前几行,而.info()会显示数据类型、非空值等信息。
可能还需要解释一些关键点,比如在小题2中,布尔索引的使用,如何组合多个条件,或者如何选择特定的列。在小题3中,条件判断的顺序,以及如何应用函数到每个成绩值上。
最后,要确保代码的正确性,比如列名是否正确,条件是否覆盖所有情况,以及是否有语法错误。可能需要自己先运行一遍代码,确认输出是否符合预期。比如在小题3中,李四的成绩是90,应该得到A,王五78是C,张三85是B。添加等级列后,数据框应该有三列,加上等级成为四列。
总结来说,步骤应该是:创建数据框,应用选择和过滤,添加计算列。每个步骤使用适当的Pandas方法,并确保输出正确。同时,在解释时需要提到关键函数的作用,比如DataFrame、布尔索引、apply或cut方法,以及.head()和.info()的作用。</think>让我们逐步解决这个Pandas实验题:
$$------------------ 小题1 ------------------$$
```python
import pandas as pd
# 创建数据框
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [20, 21, 22],
'成绩': [85, 90, 78]
}
df = pd.DataFrame(data)
# 显示基本信息
print("数据框基本信息:")
print(df.info())
# 显示前两行(默认.head()显示5行,这里指定n=2)
print("\n数据前两行:")
print(df.head(2))
```
**输出结果**:
```
数据框基本信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 姓名 3 non-null object
1 年龄 3 non-null int64
2 成绩 3 non-null int64
dtypes: int64(2), object(1)
memory usage: 200.0+ bytes
数据前两行:
姓名 年龄 成绩
0 张三 20 85
1 李四 21 90
```
$$------------------ 小题2 ------------------$$
```python
# 筛选年龄>20的学生
selected = df[df['年龄'] > 20]
# 提取姓名和成绩
result = selected[['姓名', '成绩']]
print("\n年龄大于20的学生:")
print(result)
```
**输出结果**:
```
年龄大于20的学生:
姓名 成绩
1 李四 90
2 王五 78
```
$$------------------ 小题3 ------------------$$
```python
# 定义等级判断函数
def get_grade(score):
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
else:
return 'D'
# 添加新列
df['等级'] = df['成绩'].apply(get_grade)
print("\n添加等级后的数据框:")
print(df)
```
**输出结果**:
```
添加等级后的数据框:
姓名 年龄 成绩 等级
0 张三 20 85 B
1 李四 21 90 A
2 王五 22 78 C
```
**关键概念说明**:
1. `pd.DataFrame()` 是创建数据框的核心方法,接收字典格式数据
2. `df[条件]` 是布尔索引筛选,条件应为布尔序列
3. `.apply()` 方法用于逐元素应用函数,比循环更高效
4. 添加新列直接使用 `df[新列名] = ...` 语法
5. `df.info()` 显示数据框元信息,包括列类型和非空值数量
阅读全文
相关推荐

















