用Pandas Groupby模块创建非层次化的列

  • Post category:Python

在Pandas中使用groupby模块,我们可以按照指定条件将数据分组,并对每个组进行聚合操作。在聚合后,我们可以根据所聚合的指标将其添加为新列。下面是使用groupby模块创建非层次化的列的几个步骤:

  1. 导入pandas库和数据集

我们首先需要导入Python的pandas库,并载入一个数据集。比如我们可以使用以下代码载入名为sales.csv的数据集:

import pandas as pd

data = pd.read_csv("sales.csv")
  1. 使用groupby方法创建分组对象

接下来,我们使用groupby方法根据需要分组,比如按照”Region”列进行分组:

grouped = data.groupby("Region")
  1. 对分组后的数据进行聚合操作

分组后,我们可以对所得到的每个组进行聚合操作,比如对其中的”Sales”值求和:

total_sales = grouped["Sales"].sum()
  1. 将聚合后的值添加为新列

最后,我们将聚合后的值添加为新列。比如将”total_sales”添加为”Region_Sales”列:

data["Region_Sales"] = grouped["Sales"].transform('sum')

当我们运行这段代码后,将得到一个新的数据集,其中每个地区的销售总额将以新的一列”Region_Sales”呈现出来。

下面举一个例子,假设我们有一个销售数据集,其中包含了每个城市在不同月份的销售额。现在我们需要统计每个城市在整个销售期内的销售总额,并将其添加为新列。我们可以使用以下代码:

import pandas as pd

# 载入数据集
data = pd.read_csv("sales.csv")

# 将数据按照城市分组
grouped = data.groupby("City")

# 统计每个城市的销售总额
city_sales = grouped["Sales"].sum()

# 将销售总额作为新列添加到源数据集中
data["City_Sales"] = grouped["Sales"].transform('sum')

print(data.head())

代码运行后,我们可以得到一个新的数据集,其中每个城市的销售总额以新的一列”City_Sales”呈现出来。