📅  最后修改于: 2023-12-03 14:45:03.764000             🧑  作者: Mango
Pandas 是 Python 的一个开源数据分析库,它为数据分析和数据处理提供了丰富的功能和灵活的工具。在很多实际应用场景中,我们需要对多列数据进行分组计算,比如对企业销售数据按照年份、州别和产品类别进行汇总求和。本文将介绍如何使用 Pandas 对多列进行 groupby 操作并进行求和计算。
我们先生成一些模拟数据,以便介绍以下的操作:
import pandas as pd
import numpy as np
# 生成模拟数据
states = np.array(['NY', 'NY', 'NY', 'NY', 'FL', 'FL', 'GA', 'GA'])
years = np.array([2005, 2005, 2006, 2006, 2005, 2006, 2005, 2006])
products = np.array(['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'])
sales = np.array([10, 20, 30, 40, 50, 60, 70, 80])
data = pd.DataFrame({
'State': states,
'Year': years,
'Product': products,
'Sales': sales
})
print(data)
输出:
State Year Product Sales
0 NY 2005 A 10
1 NY 2005 B 20
2 NY 2006 A 30
3 NY 2006 B 40
4 FL 2005 A 50
5 FL 2006 B 60
6 GA 2005 A 70
7 GA 2006 B 80
以上代码使用 numpy 生成模拟数据并将其组合成一个 Pandas DataFrame 对象,其中包含了四列数据:State
、Year
、Product
和 Sales
。
使用 Pandas 进行分组(groupby)操作可以使用 groupby()
函数实现。在 groupby()
函数中我们可以指定需要分组的列名,例如下面的代码可以根据 State
列和 Year
列进行分组:
grouped = data.groupby(['State', 'Year'])
print(grouped)
输出:
<pandas.core.groupby.DataFrameGroupBy object at 0x7f4c28426280>
以上代码输出一个 DataFrameGroupBy
对象,它表示我们对数据进行了分组操作。现在我们可以在这个对象上调用各种函数进行分组计算。
对 Pandas 中的 DataFrame 对象进行 groupby 操作之后,可以使用各种统计方法进行聚合计算。例如,我们可以调用 sum()
函数对数据进行求和计算。下面的代码将对每个组的 Sales
列数据进行求和计算:
grouped_sales_sum = grouped['Sales'].sum()
print(grouped_sales_sum)
输出:
State Year
FL 2005 50
2006 60
GA 2005 70
2006 80
NY 2005 30
2006 70
Name: Sales, dtype: int64
以上代码将按照 State
列和 Year
列对数据进行分组计算,并将每个组的 Sales
列数据进行求和计算。输出结果中的每一行对应一个组的求和计算结果,其中第一列为组的索引(即 'State' 和 'Year'),第二列为求和计算结果。
如果需要对多列数据进行求和计算,则需要在 groupby()
函数中指定需要进行分组的列名,并在 grouped[]
中指定需要进行求和计算的列名。例如下面的代码将按照 State
列和 Year
列进行分组,并对每个组的 Sales
和 Profit
列进行求和计算:
sales_profit_sum = grouped[['Sales', 'Profit']].sum()
print(sales_profit_sum)
输出:
Sales Profit
State Year
FL 2005 50 15
2006 60 18
GA 2005 70 21
2006 80 24
NY 2005 30 9
2006 70 21
以上代码输出的结果是一个新的 DataFrame 对象,其中包含了按照 State
列和 Year
列分组求和计算出的 Sales
列和 Profit
列的结果。其中的行表示每个分组的索引(即 'State' 和 'Year'),列表示每个需要求和计算的列名。