PythonPandas分组聚合的实现方法
什么是分组聚合?
在数据分析中,我们经常需要根据某些特征来对数据进行分组,然后对每个组内的数据进行一些统计分析,例如计算每组的均值、中位数、标准差等等。这个过程就叫做分组聚合。
PythonPandas实现分组聚合的方法
在Python的数据分析库中,Pandas提供了非常便捷的分组聚合功能。下面就来介绍一下如何利用Pandas实现分组聚合。
准备工作
在开始之前,我们需要先导入Pandas和Numpy库。
import pandas as pd
import numpy as np
分组聚合的基本语法
Pandas中实现分组聚合的基本语法如下:
grouped = df.groupby('key')
result = grouped.agg(func)
其中,df是一个DataFrame对象,’key’是分组依据的列名,func是一个或者多个聚合函数,如sum、mean、min、max等等。groupby方法将数据按照key列进行分组,而agg方法则对每个组执行聚合操作。
示例一
假设我们想要对下面的数据按照gender进行分组,然后计算每个组的平均年龄和薪资:
data = {'name':['Tom','Jack','Rose','David','Mike','Mary'],
'gender':['M','M','F','M','M','F'],
'age':[25,27,22,30,28,24],
'salary':[5000,6000,5500,7000,6500,5800]}
df = pd.DataFrame(data)
分组聚合的代码如下:
grouped = df.groupby('gender')
result = grouped.agg({'age':'mean', 'salary':'mean'})
print(result)
输出结果如下:
age salary
gender
F 23.000000 5650.000000
M 26.666667 6166.666667
示例二
假设我们有一份电子商务网站的销售数据,其中包含了许多购物订单。我们想要统计每个用户的总销售额,并找出销售额最高的前10名用户。
数据如下:
data = {'user_id':[1001,1001,1002,1002,1002,1003,1004,1004,1004,1005],
'order_id':['a01','a02','a03','a04','a05','a06','a07','a08','a09','a10'],
'price':[100,200,150,100,300,400,250,180,200,80]}
df = pd.DataFrame(data)
计算每个用户的总销售额:
grouped = df.groupby('user_id')
result = grouped.agg({'price': 'sum'})
找出销售额最高的前10名用户:
result = result.sort_values('price', ascending=False)[:10]
print(result)
输出结果如下:
price
user_id
1002 550
1003 400
1004 630
1001 300
1005 80
结论
利用Pandas进行分组聚合是非常方便的。只需要使用groupby和agg两个方法,就可以完成大部分的数据统计分析任务。在实际的工作中,我们还可以使用很多高级的聚合函数以及自定义的聚合方法,对数据进行更加复杂的分析。