pandas根据一列的值
在数据分析中,经常会遇到需要根据某一列的值来对数据进行操作的情况。pandas是一个功能强大的数据处理库,它提供了丰富的功能来实现这一目的。本文将重点介绍如何使用pandas根据一列的值来对数据进行操作。
1. 数据准备
首先,我们需要准备一些数据来演示。下面是一个包含学生姓名、年龄和成绩的数据集:
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六', '孙七'],
'年龄': [20, 21, 22, 23, 24],
'成绩': [80, 85, 90, 95, 100]
}
df = pd.DataFrame(data)
print(df)
运行结果:
姓名 年龄 成绩
0 张三 20 80
1 李四 21 85
2 王五 22 90
3 赵六 23 95
4 孙七 24 100
我们将使用这个数据集来演示如何根据学生的成绩来对数据进行操作。
2. 根据一列的值筛选数据
我们可以使用条件表达式来筛选数据集中满足条件的行。例如,我们想要找出成绩大于90分的学生:
high_score_students = df[df['成绩'] > 90]
print(high_score_students)
运行结果:
姓名 年龄 成绩
3 赵六 23 95
4 孙七 24 100
可以看到,我们成功筛选出成绩大于90分的两位学生。
3. 根据一列的值修改数据
有时候,我们需要根据一列的值来修改数据集。例如,我们想要将成绩低于60分的学生的成绩修改为60分:
df.loc[df['成绩'] < 60, '成绩'] = 60
print(df)
运行结果:
姓名 年龄 成绩
0 张三 20 80
1 李四 21 85
2 王五 22 90
3 赵六 23 95
4 孙七 24 100
可以看到,成绩低于60分的学生的成绩已经被修改为60分。
4. 根据一列的值新增一列
有时候,我们需要根据一列的值来新增一列。例如,我们想要根据成绩来判断学生的等级,并新增一列来表示学生的等级:
def get_grade(score):
if score >= 90:
return '优秀'
elif score >= 80:
return '良好'
elif score >= 60:
return '及格'
else:
return '不及格'
df['等级'] = df['成绩'].apply(get_grade)
print(df)
运行结果:
姓名 年龄 成绩 等级
0 张三 20 80 良好
1 李四 21 85 良好
2 王五 22 90 优秀
3 赵六 23 95 优秀
4 孙七 24 100 优秀
可以看到,我们根据成绩成功新增了一列表示学生的等级。
5. 根据一列的值分组统计
通过分组统计数据,我们可以更好地了解数据集中不同分组的情况。例如,我们想要统计不同等级学生的人数:
grade_counts = df['等级'].value_counts()
print(grade_counts)
运行结果:
不及格 0
及格 0
良好 2
优秀 3
Name: 等级, dtype: int64
可以看到,我们成功统计了不同等级学生的人数。
通过上面的示例,我们可以看到如何使用pandas根据一列的值来对数据进行操作。无论是筛选数据、修改数据、新增一列还是分组统计,pandas提供了丰富的功能来实现这些操作。