当需要按照某些键(或者属性)将数据划分为不同的组,并在每个组内分别进行一些处理时,Python中的groupby函数是一个非常有用的工具。在本篇攻略中,我们将介绍如何使用Python中的groupby函数实现对数据的分组和选取最大值与最小值。
准备工作
在介绍groupby函数之前,我们先来准备一些数据。假设我们有一个包含姓名、性别和工资的列表,如下所示:
employee_list = [
{"name": "Alice", "gender": "female", "salary": 5000},
{"name": "Bob", "gender": "male", "salary": 6000},
{"name": "Charlie", "gender": "male", "salary": 5500},
{"name": "David", "gender": "male", "salary": 4500},
{"name": "Eva", "gender": "female", "salary": 6500},
{"name": "Frank", "gender": "male", "salary": 7000},
{"name": "Grace", "gender": "female", "salary": 8000},
{"name": "Henry", "gender": "male", "salary": 5000},
]
使用groupby函数
在Python中,groupby函数属于标准库的itertools模块。它的作用是将可迭代对象中相邻且相同的元素分组并返回一个生成器。因此,在使用groupby函数之前,需要对数据进行排序,以确保相邻且相同的元素在一起。比如,我们可以按照性别进行排序,代码如下所示:
from itertools import groupby
employee_list.sort(key=lambda x: x['gender'])
然后,我们就可以使用groupby函数对数据进行分组和处理。在下面的示例中,我们将根据性别对员工进行分组,并计算出各组中工资的最小值和最大值。
for gender, group in groupby(employee_list, key=lambda x: x['gender']):
print(f"Gender: {gender}")
print(f"Min Salary: {min([x['salary'] for x in group])}")
print(f"Max Salary: {max([x['salary'] for x in group])}")
输出结果如下所示:
Gender: female
Min Salary: 5000
Max Salary: 8000
Gender: male
Min Salary: 4500
Max Salary: 7000
另外,我们还可以根据姓名的首字母进行分组,并计算各组中工资的平均值和人数的总和。代码示例如下:
employee_list.sort(key=lambda x: x['name'][0])
for letter, group in groupby(employee_list, key=lambda x: x['name'][0]):
print(f"Letter: {letter}")
salaries = [x['salary'] for x in group]
employees_num = len(salaries)
salaries_sum = sum(salaries)
salaries_avg = salaries_sum / employees_num
print(f"Employees: {employees_num}")
print(f"Salaries Sum: {salaries_sum}")
print(f"Salaries Average: {salaries_avg}")
输出结果如下所示:
Letter: A
Employees: 1
Salaries Sum: 5000
Salaries Average: 5000.0
Letter: B
Employees: 1
Salaries Sum: 6000
Salaries Average: 6000.0
Letter: C
Employees: 1
Salaries Sum: 5500
Salaries Average: 5500.0
Letter: D
Employees: 1
Salaries Sum: 4500
Salaries Average: 4500.0
Letter: E
Employees: 1
Salaries Sum: 6500
Salaries Average: 6500.0
Letter: F
Employees: 1
Salaries Sum: 7000
Salaries Average: 7000.0
Letter: G
Employees: 1
Salaries Sum: 8000
Salaries Average: 8000.0
可以看到,通过使用groupby函数,我们可以轻松地对数据进行分组和处理,并进行各种统计操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python groupby函数实现分组选取最大值与最小值 - Python技术站