在数据分析中,数据聚合是一项非常重要的操作。Pandas库提供了强大的groupby和agg功能,使得我们能够轻松地对数据进行分组和聚合计算。本文将从基础概念、常见问题、常见报错及解决方案等方面,由浅入深地介绍如何使用Pandas的groupby和agg方法,并通过代码案例进行详细解释。

groupby是Pandas中最常用的分组工具之一。它允许我们将DataFrame按照一个或多个列进行分组,从而可以对每个分组执行各种聚合操作。groupby返回的是一个GroupBy对象,该对象本身并不包含任何聚合结果,而是提供了一个接口来应用各种聚合函数。
agg(aggregate的缩写)用于对分组后的数据进行聚合计算。它可以接受多种类型的参数,如字符串表示的函数名、自定义函数、字典等。通过agg,我们可以一次性对多个列应用不同的聚合函数,极大地提高了数据处理的灵活性和效率。
对于单列数据的聚合,通常我们会先使用groupby方法指定分组依据,然后调用agg方法并传入具体的聚合函数。常见的聚合函数包括sum()、mean()、count()、min()、max()等。
groupby之前使用drop_duplicates()。groupby会忽略含有NaN值的行。可以通过设置dropna=False参数来保留这些行。groupby可能会导致性能瓶颈。此时可以考虑使用更高效的替代方案,如pivot_table或crosstab。import pandas as pd
# 创建示例数据
data = {'department': ['HR', 'Tech', 'HR', 'Tech'],
'salary': [6000, 8000, 7000, 9000],
'experience': [3, 5, 4, 6]}
df = pd.DataFrame(data)
# 按部门分组并计算薪水总和
grouped_salary_sum = df.groupby('department')['salary'].sum()
print("按部门分组并计算薪水总和:")
print(grouped_salary_sum)多列聚合是指同时对多个列进行分组和聚合计算。这在实际应用中非常有用,例如统计各部门员工的平均工资和最大工作经验。同样使用groupby和agg方法,只需传入一个包含多个列名的列表即可。
import pandas as pd
# 创建示例数据
data = {'department': ['HR', 'Tech', 'HR', 'Tech'],
'salary': [6000, 8000, 7000, 9000],
'experience': [3, 5, 4, 6]}
df = pd.DataFrame(data)
# 按部门分组并计算薪水总和和经验最大值
multi_agg_result = df.groupby('department').agg({'salary': 'sum', 'experience': 'max'})
print("按部门分组并计算薪水总和和经验最大值:")
print(multi_agg_result)除了内置的聚合函数外,agg还支持用户自定义函数。这对于实现特定业务逻辑非常有帮助。自定义函数需要接收一个Series作为输入,并返回一个标量值。
有时我们需要对同一列应用多个聚合函数。agg允许我们通过传递一个包含多个函数的列表来实现这一点。这样可以一次性获取多个聚合结果,而不需要多次调用agg。
import pandas as pd
# 创建示例数据
data = {'department': ['HR', 'Tech', 'HR', 'Tech'],
'salary': [6000, 8000, 7000, 9000],
'experience': [3, 5, 4, 6]}
df = pd.DataFrame(data)
# 定义自定义聚合函数
def custom_agg(series):
return series.max() - series.min()
# 按部门分组并应用自定义聚合函数
custom_agg_result = df.groupby('department')['salary'].agg(custom_agg)
print("按部门分组并应用自定义聚合函数:")
print(custom_agg_result)
# 对同一列应用多个聚合函数
multi_func_agg_result = df.groupby('department')['salary'].agg(['sum', 'mean'])
print("\n对同一列应用多个聚合函数:")
print(multi_func_agg_result)通过对Pandas groupby和agg的学习,我们可以更好地理解和运用这一强大工具来满足各种数据分析需求。无论是简单的单列聚合还是复杂的多列联合聚合,掌握其中的技巧和注意事项都能让我们更加高效准确地处理数据。希望本文能够帮助读者解决在实际工作中遇到的相关问题,并提高工作效率。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。