返回
Pandas groupby() 函数:按列求和,解锁数据分析中的聚合力量
python
2024-03-07 15:25:27
Pandas groupby():按列求和
概览
在数据分析中,经常需要对数据进行分组并计算聚合函数,例如求和。Pandas 的 groupby() 函数是一个强大的工具,可用于按一个或多个列对 DataFrame 进行分组,并执行各种聚合计算。
按单列分组求和
要按单个列(例如“名称”)对 DataFrame 进行分组并计算每组数据的总和,请使用以下语法:
df.groupby('Name')['Number'].sum()
此代码将返回一个 Series,其中包含每个唯一“名称”及其对应的“数字”总和。
按多列分组求和
要按多个列(例如“名称”和“水果”)对 DataFrame 进行分组并计算每组数据的总和,请使用以下语法:
df.groupby(['Name', 'Fruit'])['Number'].sum()
此代码将返回一个 DataFrame,其中包含每个唯一“名称”和“水果”组合及其对应的“数字”总和。
示例
假设我们有一个 DataFrame 如下:
| Fruit | Date | Name | Number |
|---|---|---|---|
| Apples | 10/6/2016 | Bob | 7 |
| Apples | 10/6/2016 | Bob | 8 |
| Apples | 10/6/2016 | Mike | 9 |
| Apples | 10/7/2016 | Steve | 10 |
| Apples | 10/7/2016 | Bob | 1 |
| Oranges | 10/7/2016 | Bob | 2 |
| Oranges | 10/6/2016 | Tom | 15 |
| Oranges | 10/6/2016 | Mike | 57 |
| Oranges | 10/6/2016 | Bob | 65 |
| Oranges | 10/7/2016 | Tony | 1 |
| Grapes | 10/7/2016 | Bob | 1 |
| Grapes | 10/7/2016 | Tom | 87 |
| Grapes | 10/7/2016 | Bob | 22 |
| Grapes | 10/7/2016 | Bob | 12 |
| Grapes | 10/7/2016 | Tony | 15 |
我们可以按“名称”和“水果”分组并计算每组数据的总和,如下所示:
result = df.groupby(['Name', 'Fruit'])['Number'].sum()
print(result)
输出:
| Name | Fruit | Number |
|---|---|---|
| Bob | Apples | 16 |
| Bob | Grapes | 35 |
| Bob | Oranges | 68 |
| Mike | Apples | 9 |
| Mike | Oranges | 57 |
| Steve | Apples | 10 |
| Tom | Grapes | 87 |
| Tom | Oranges | 15 |
| Tony | Grapes | 15 |
| Tony | Oranges | 1 |
常见问题解答
- 如何按多个列对 DataFrame 进行分组,但不计算聚合函数?
df.groupby(['Name', 'Fruit']).groups
- 如何对 DataFrame 的分组应用多个聚合函数?
df.groupby(['Name', 'Fruit']).agg({'Number': ['sum', 'mean']})
- 如何对 DataFrame 的分组执行自定义聚合计算?
def my_custom_agg(group):
return group.sum() * group.mean()
df.groupby(['Name', 'Fruit'])['Number'].agg(my_custom_agg)
- 如何在对 DataFrame 进行分组后对组进行排序?
df.groupby(['Name', 'Fruit']).sum().sort_values('Number', ascending=False)
- 如何访问 DataFrame 中分组的索引?
df.groupby(['Name', 'Fruit']).apply(lambda x: x.index)
结论
Pandas 的 groupby() 函数是一个强大的工具,可用于高效地对 DataFrame 进行分组并计算聚合函数。了解如何使用 groupby() 函数可以帮助你从数据中提取有意义的见解,并针对复杂的数据问题找到解决方案。