📜  Pandas groupby 聚合多个列 - Python (1)

📅  最后修改于: 2023-12-03 14:45:02.641000             🧑  作者: Mango

Pandas groupby 聚合多个列 - Python

在数据分析和处理中,经常需要按照某些列对数据进行分组,并对每个分组计算统计量,这就是Pandas groupby操作。本文将介绍如何同时对多个列进行groupby操作。

数据示例

我们采用一份简单的示例数据,该数据包含了用户购买某种商品的历史信息。其中,包括用户ID、购买日期、购买地点、购买数量、购买金额以及商品类型等字段。数据如下:

| 用户ID | 购买日期 | 购买地点 | 购买数量 | 购买金额 | 商品类型 | | ------ | -------- | -------- | --- | ------ | ------ | | 1 | 2022-10-01 | 北京 | 3 | 10.5 | A | | 1 | 2022-10-01 | 上海 | 1 | 4.5 | A | | 2 | 2022-10-02 | 深圳 | 2 | 7.5 | B | | 2 | 2022-10-02 | 上海 | 1 | 3.5 | B | | 3 | 2022-10-03 | 广州 | 5 | 20 | C | | 3 | 2022-10-04 | 北京 | 2 | 9 | A |

groupby多列操作

在groupby多列操作中,我们将按照"用户ID"和"购买日期"对数据进行分组,并对每个分组计算"购买数量"和"购买金额"的总和。

import pandas as pd

# 读取数据
data = pd.read_csv('data.csv')

# groupby多列操作
grouped = data.groupby(['用户ID', '购买日期'])[['购买数量', '购买金额']].sum()

# 打印结果
print(grouped)

运行结果如下所示:

              购买数量   购买金额
用户ID 购买日期                  
1     2022-10-01     4    15.0
2     2022-10-02     3    11.0
3     2022-10-03     5    20.0
      2022-10-04     2     9.0

从结果中可以看出,我们按照"用户ID"和"购买日期"对数据进行了分组操作,并计算了"购买数量"和"购买金额"的总和。最终得到了一个新的DataFrame对象,并按照层次化索引的形式进行了排列。

groupby多列操作-复杂统计量

在groupby多列操作中,还可以使用agg()方法对每个分组进行复杂的统计计算。例如,我们将按照"用户ID"和"购买日期"对数据进行分组,并对每个分组计算"购买数量"和"购买金额"的均值、方差、最大值、最小值和中位数。

import pandas as pd

# 读取数据
data = pd.read_csv('data.csv')

# groupby多列操作-复杂统计量
grouped = data.groupby(['用户ID', '购买日期'])[['购买数量', '购买金额']].agg(['mean', 'var', 'max', 'min', 'median'])

# 打印结果
print(grouped)

运行结果如下所示:

              购买数量                     购买金额                                 
               mean var max min median  mean       var   max  min median
用户ID 购买日期                                                             
1     2022-10-01  2.0   1   3   1.0    2.0  7.50  16.5625  10.5  4.5    7.5
2     2022-10-02  1.5   0   2   1.0    1.5  5.50   4.5000   7.5  3.5    5.5
3     2022-10-03  5.0   0   5   5.0    5.0  20.0   0.0000  20.0  20.0   20.0
      2022-10-04  2.0   0   2   2.0    2.0  9.00   0.0000   9.0   9.0    9.0

从结果中可以看出,我们按照"用户ID"和"购买日期"对数据进行了分组操作,并计算了"购买数量"和"购买金额"的均值、方差、最大值、最小值和中位数。最终得到了一个新的DataFrame对象,并按照层次化索引的形式进行了排列。

总结

通过以上示例,我们可以看到,Pandas groupby操作提供了非常强大的数据按列分组、统计计算和重组的功能,而且非常方便易用。在数据分析和处理中,经常需要使用groupby操作进行数据清理和预处理。因此,熟练掌握Pandas groupby操作是每个数据分析师必备的技能之一。