Pandas Groupby和Sum

  • Post category:Python

Pandas 是一个广泛应用于数据分析和处理的Python库。其中的Groupby和Sum是Pandas中用于数据聚合和汇总的两个重要方法。

一、Groupby

Groupby可以将数据集按照指定标准进行分组。具体用法如下:

grouped = df.groupby('column_name')

其中column_name表示要按照哪一列进行分组。

该方法返回一个GroupBy对象,可以使用该对象的agg()、sum()、mean()等方法对分组进行聚合计算。

下面是一个例子,假设我们有一个销售数据集,其中包含订单号、客户名称和订单金额三个字段:

订单号 客户名称 订单金额
001 张三 500
002 李四 300
003 张三 200
004 王五 100
005 李四 150

要按照客户名称进行分组,可以使用如下的代码:

import pandas as pd

data = {
    'order_id': ['001', '002', '003', '004', '005'],
    'customer': ['张三', '李四', '张三', '王五', '李四'],
    'amount': [500, 300, 200, 100, 150]
}

df = pd.DataFrame(data)

grouped = df.groupby('customer')

该代码将数据集按照客户名称进行分组,返回一个GroupBy对象。

二、Sum

sum()方法可以对分组后的数据进行求和。具体用法如下:

grouped.sum()

我们可以结合上面的例子来说明该方法的运用情况。

要计算每个客户的订单金额总和,可以使用如下的代码:

grouped = df.groupby('customer')
grouped_sum = grouped.sum()

运行后,grouped_sum的内容如下:

customer amount
李四 450
张三 700
王五 100

上面的结果表明,李四的订单总金额为450元,张三为700元,王五为100元。

三、完整的例子

现在我们结合具体的数据来进一步说明Groupby和Sum的使用。假设我们有一个酒店的订单数据集,其中包含订单ID、客户ID、酒店ID、订单日期和订单金额字段。

首先我们要导入Pandas库并读取数据:

import pandas as pd

df = pd.read_csv('hotel_orders.csv')

读取完成后,我们可以看一下数据样本:

order_id customer_id hotel_id order_date amount
001 001 101 2021-01-01 1500
002 001 102 2021-01-02 2000
003 002 103 2021-01-03 1000
004 003 101 2021-01-04 2500
005 002 102 2021-01-05 1500
006 002 103 2021-01-06 1800

现在我们要根据客户ID进行分组,然后计算每个客户的订单金额总和:

grouped = df.groupby('customer_id')

summed = grouped.sum()

summed的内容如下:

customer_id amount
001 3500
002 4300
003 2500

结果表明,客户001的订单总金额为3500元,客户002为4300元,客户003为2500元。

四、总结

  • Groupby和Sum是Pandas库中用于数据聚合和汇总的重要方法。
  • Groupby方法可以将数据集按照指定标准进行分组,返回一个GroupBy对象。
  • Sum方法可以对分组后的数据进行求和。
  • 使用Groupby和Sum方法可以轻松实现对数据进行聚合计算的过程。