在Pandas中,groupby()用于对数据进行分组操作。通过groupby(),可以将数据按照指定的列或多个列进行分组,并对每个分组进行相应的操作,例如计算统计量、聚合、转换等。
groupby()的基本用法是:
df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, dropna=True)
参数说明:
by
:指定按照哪些列进行分组,可以是单个列名、多个列名的列表、Series、字典、函数等。默认为None,表示按照整个DataFrame分组。axis
:指定分组的轴,0表示按行分组,1表示按列分组,默认为0。level
:如果DataFrame有多级索引,可以指定按照哪一级索引进行分组,默认为None。as_index
:指定分组的结果是否以分组列作为索引,默认为True。sort
:指定分组后的结果是否按照分组列进行排序,默认为True。group_keys
:指定是否在分组后的结果中显示分组键,默认为True。squeeze
:指定分组后是否对单个分组的结果进行挤压,默认为False。observed
:指定是否使用观察到的分组的所有取值进行分组,默认为False。dropna
:指定是否将含有缺失值的分组键排除,默认为True。groupby()返回一个GroupBy对象,可以对该对象进行各种操作,如应用聚合函数(如sum、mean等)、筛选数据、转换数据等。
具体的操作可以通过GroupBy对象的方法来实现,例如:
agg()
: 使用聚合函数对每个分组进行聚合操作。apply()
: 对每个分组应用自定义函数。transform()
: 对每个分组应用转换函数。filter()
: 根据条件筛选数据。示例代码:
import pandas as pd
# 创建一个DataFrame
data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick', 'John'],
'Subject': ['Math', 'English', 'Math', 'English', 'Math', 'English'],
'Score': [85, 90, 92, 78, 82, 88]}
df = pd.DataFrame(data)
# 按照Name列进行分组,并计算每个分组的平均分数
result = df.groupby('Name')['Score'].mean()
print(result)
输出结果:
Name
John 90.0
Nick 86.0
Tom 81.5
Name: Score, dtype: float64
该示例中,首先根据Name列进行分组,然后计算每个分组的平均分数。结果是一个Series,其中索引是分组的唯一值(Name列的取值),值是每个分组的平均分数。