Pandas是Python中一个强大的数据处理库,可以对各种形式的数据进行分组聚合。下面我们就详细讲解用Pandas进行分组和聚合。
分组(groupby)
groupby
是Pandas中常用的一个函数,用于按照一个或多个列的值进行分组。groupby
函数返回一个分组对象,可以对其进行聚合操作。
按单个列分组
下面是一个例子,我们按照“城市”这一列进行分组:
import pandas as pd
df = pd.DataFrame({
'城市': ['北京', '上海', '广州', '深圳', '北京', '上海'],
'销售额': [100, 200, 150, 120, 180, 300],
'利润': [20, 40, 30, 25, 30, 50]
})
grouped = df.groupby('城市')
我们可以对分组对象进行聚合操作,例如对每个城市的销售额求和:
grouped['销售额'].sum()
按多个列分组
我们也可以按照多个列进行分组,只需要在groupby
函数中传入多个列即可:
grouped = df.groupby(['城市', '利润'])
自定义分组函数
我们还可以自定义一个函数,将其传入groupby
函数中,实现自定义的分组方式。例如下面的例子,我们定义一个将销售额大于200的行归为一组,其他行归为一组的分组函数:
def group_sales(x):
if x['销售额'] > 200:
return '高销售额商品'
else:
return '低销售额商品'
df['销售额分组'] = df.apply(group_sales, axis=1)
grouped = df.groupby('销售额分组')
聚合(agg)
对于分组对象,我们还可以对其进行聚合操作。Pandas提供了许多聚合函数,例如对每个分组的销售额求和、平均值、最大值等等。
常用的聚合函数
下面是一些常用的聚合函数及其使用方法:
sum()
:求和
grouped['销售额'].sum()
mean()
:求均值
grouped['销售额'].mean()
max()
:求最大值
grouped['销售额'].max()
min()
:求最小值
grouped['销售额'].min()
count()
:计数
grouped['销售额'].count()
size()
:返回分组后每个组的大小
grouped.size()
对多个列进行聚合
我们可以对分组后的结果同时对多个列进行聚合:
grouped['销售额', '利润'].sum()
对分组后的结果进行二次分组
我们还可以对分组后的结果再进行二次分组。例如下面的例子,我们按照“城市”和“销售额分组”列进行分组:
grouped = df.groupby(['城市', '销售额分组'])
result = grouped['销售额'].sum()
总结
Pandas的分组和聚合功能可以帮助我们很方便地对数据进行整理和统计。在实际工作中,我们经常需要按照一定的规则分组并进行各种聚合操作,Pandas提供了丰富的功能,可以帮助我们轻松实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Pandas进行分组和聚合 - Python技术站