Pandas GroupBy是Pandas数据分析库中一个十分常用的功能,它常常和其他一些数据处理函数(比如agg、apply等)一同使用,在数据处理中起到了至关重要的作用。
什么是Pandas GroupBy
Pandas GroupBy是一种基于某个键对数据集进行切片、划分和分解的方法。数据集根据一个或多个键(可以是函数、数组、DataFrame列名等)进行分组,然后将数据集应用于每个组,最后将结果合并成单个数据集。可以看作是数据集的分组/聚合功能。
如何使用Pandas GroupBy
Pandas GroupBy的使用通常需要以下几个步骤:
- 将数据集加载到Pandas DataFrame中;
- 对数据集进行分组操作,得到一个GroupBy对象;
- 通过GroupBy对象使用聚合函数进行聚合操作,可以使用agg、apply、transform等方法。
下面我们用一个示例来具体讲解。
import pandas as pd
# 构造数据集
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric'],
'gender': ['F', 'M', 'M', 'M', 'M'],
'math': [90, 89, 78, 67, 87],
'physics': [85, 76, 90, 65, 92]}
df = pd.DataFrame(data)
# 按照性别对数据集进行分组
grouped = df.groupby('gender')
# 对每个分组计算平均值
result = grouped.mean()
# 输出结果
print(result)
在这个示例中,我们首先构造了一个包含学生姓名、性别、数学成绩、物理成绩的DataFrame。然后使用groupby
函数将数据集按照性别进行分组,得到一个GroupBy对象。最后使用mean
函数对每个分组进行平均值计算,得到一个包含每个性别平均数学成绩和平均物理成绩的DataFrame。
GroupBy常用的聚合操作
Pandas GroupBy常用的聚合操作,如下:
count()
:计算每个分组的元素个数;sum()
:计算每个分组的元素和;mean()
:计算每个分组的元素平均值;max()
:计算每个分组的最大值;min()
:计算每个分组的最小值;median()
:计算每个分组的中位数;var()
:计算每个分组的元素方差;std()
:计算每个分组的元素标准差。
Pandas GroupBy的高级用法
Pandas GroupBy提供了一些高级的聚合操作,比如agg、apply、transform等。
agg()
函数
agg()
函数用于对每个分组应用指定的聚合函数,可以同时使用多个聚合函数。下面是一个示例:
# 对每个分组计算平均值和最大值
result = grouped['math'].agg(['mean', 'max'])
# 输出结果
print(result)
这个示例中,我们使用agg
函数对每个分组计算数学成绩的平均值和最大值,得到一个包含每个性别数学成绩平均值和最大值的DataFrame。
apply()
函数
apply()
函数可以对每个分组应用特定的函数。这个特定的函数可以是定义在lambda表达式中的匿名函数、也可以是用户自定义的函数。下面是一个示例:
# 自定义求最大值减去最小值的函数
def range_func(x):
return x.max() - x.min()
# 对每个分组应用自定义函数
result = grouped['math'].apply(range_func)
# 输出结果
print(result)
这个示例中,我们首先定义了一个函数range_func
,这个函数的作用是求给定Series的最大值减去最小值。然后使用apply
函数对每个分组的数学成绩应用这个函数,计算每个分组数学成绩的范围。
transform()
函数
和apply()
函数不同,transform()
函数的输出结果的形状和输入数据的形状相同。可以使用transform()
函数对每个分组的数据进行规范化、标准化、缩放等处理。下面是一个示例:
# 对每个分组的数学成绩进行标准化
result = (df['math'] - grouped['math'].transform('mean')) / grouped['math'].transform('std')
# 输出结果
print(result)
这个示例中,我们使用transform()
函数将每个分组的数学成绩进行标准化,得到一个标准化后的数学成绩Series。
总结
通过这篇文章,我们详细讲解了Pandas GroupBy的使用和常用聚合操作,包括count()
、sum()
、mean()
、max()
、min()
、median()
、var()
和std()
。同时,我们也讲解了GroupBy的高级用法,包括agg()
、apply()
和transform()
函数。在实际工作中,掌握Pandas GroupBy的使用和常用聚合操作,能够提高我们的数据分析和处理效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas GroupBy - Python技术站