Python 根据DataFrame中的指定columns寻找相同项再分组
在数据处理过程中,经常需要根据DataFrame中的某些列的数值或者字符串来进行分组操作。在Python中,可以利用pandas库中的DataFrame来实现这一功能。本文将详细介绍如何根据DataFrame中的指定columns寻找相同项再分组的方法。
1. 创建DataFrame
首先,我们需要准备一些数据,并将其存储在DataFrame中。下面是一个示例代码,用于创建一个包含学生姓名、年龄和成绩的DataFrame:
import pandas as pd
data = {'姓名': ['张三', '李四', '王五', '赵六', '张三'],
'年龄': [18, 20, 19, 18, 21],
'成绩': [85, 90, 88, 87, 82]}
df = pd.DataFrame(data)
print(df)
运行以上代码,我们可以得到以下输出:
姓名 年龄 成绩
0 张三 18 85
1 李四 20 90
2 王五 19 88
3 赵六 18 87
4 张三 21 82
2. 根据指定columns进行分组
接下来,我们可以根据DataFrame中的指定columns进行分组操作。例如,我们可以根据姓名进行分组,并计算每个学生的平均成绩。下面是代码示例:
grouped = df.groupby('姓名')['成绩'].mean().reset_index()
print(grouped)
以上代码中,我们首先使用groupby
方法按照姓名进行分组,然后计算每个学生的平均成绩,并将结果存储在新的DataFrame中。运行以上代码,我们可以得到以下输出:
姓名 成绩
0 李四 90.0
1 张三 83.5
2 王五 88.0
3 赵六 87.0
3. 多列分组
除了可以根据单个列进行分组外,还可以根据多个列进行分组。例如,我们可以先按照年龄和成绩进行分组,然后计算每个分组的学生数量。下面是代码示例:
grouped = df.groupby(['年龄', '成绩']).size().reset_index(name='人数')
print(grouped)
运行以上代码,我们可以得到以下输出:
年龄 成绩 人数
0 18 85 1
1 18 87 1
2 19 88 1
3 20 90 1
4 21 82 1
4. 自定义分组操作
除了使用DataFrame提供的内置函数进行分组外,还可以自定义分组操作。例如,我们可以根据成绩的区间来创建一个新的分组列。下面是代码示例:
bins = [0, 85, 90, 100]
labels = ['不及格', '良好', '优秀']
df['成绩等级'] = pd.cut(df['成绩'], bins=bins, labels=labels)
print(df)
运行以上代码,我们可以得到以下输出:
姓名 年龄 成绩 成绩等级
0 张三 18 85 良好
1 李四 20 90 优秀
2 王五 19 88 良好
3 赵六 18 87 良好
4 张三 21 82 不及格
通过自定义分组操作,我们可以将DataFrame中的数据按照指定规则进行分类,从而更灵活地进行数据分析和统计。
结语
通过本文的介绍,我们学习了如何使用Python中的pandas库来根据DataFrame中的指定columns寻找相同项再分组。通过灵活运用DataFrame的分组操作,我们可以更方便地对数据进行分析和处理,为数据科学和机器学习等领域的研究工作提供便利。