Pandas是Python中最流行的数据分析库之一,它提供了许多数据操作和处理的工具。其中一个重要的方法就是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, **kwargs)
需要注意的是,groupby()函数除了第一个参数之外,其他参数均有默认值。在使用groupby()函数时,第一个参数是必填项,它代表按照哪个或哪些列进行分组。以DataFrame为例,如下所示:
import pandas as pd
data = {'Name': ['Tom', 'Jack', 'Tom', 'Jack', 'Tom', 'Ava', 'Ava', 'Ava'],
'Dept': ['CS', 'PHYS', 'PHYS', 'CS', 'CS', 'PHYS', 'PRL', 'PRL'],
'Salary': [5000, 3500, 4500, 3250, 5500, 4200, 5800, 5200]}
df = pd.DataFrame(data)
其中,Name代表员工姓名,Dept代表所属部门,Salary代表薪水。假设我们需要按照部门来计算平均薪水,代码如下:
df.groupby(['Dept'])['Salary'].mean()
这样就完成了按照不同部门计算平均薪水的操作。需要注意的是,输出结果中,Dept列已经不再作为列名出现,而是作为了分组的名称。
groupby()函数的高级用法
在实际应用中,groupby()函数往往会配合其他函数进行使用,以完成多个操作之间的衔接。下面是两个groupby()函数的高级用法,即agg()和apply()的示例。
agg()
agg()函数可以对数据进行一些聚合操作,比如求和、平均、标准差等。常见的用法如下:
df.groupby(['Dept'])['Salary'].agg(['sum', 'mean'])
这样就可以计算出各个部门的总薪水和平均薪水两个值。
apply()
apply()函数则可以对分组后的数据进行自定义的聚合操作,比如计算多个指标,做复杂的统计分析等。示例如下:
def my_agg(x):
return pd.Series({'mean': x['Salary'].mean(),
'std': x['Salary'].std(),
'count': x['Dept'].count()})
df.groupby(['Dept']).apply(my_agg)
这样就可以计算出各个部门的薪水平均值、标准差和人数。
在实际应用中,groupby()函数可以与其他函数进行结合,比如filter()、transform()、pivot_table()等,进一步提高数据的分析效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas之groupby( )用法笔记小结 - Python技术站