pandas分割、应用和组合(groupby)

import numpy as np
import pandas as pd


groupby对象

df1 = pd.DataFrame({
   
   'key':['A','B','C','A','B','C'],'data':range(6)},columns=['key','data'])
df1.groupby('key').sum()
# 将所有的列都进行求和,所以生成的是DataFrame

结果1

按列取值

df1.groupby('key')['data'].sum()

在这里插入图片描述

df1.groupby('key')['data'].describe()
# 可以直接调用方法

在这里插入图片描述


groupby对象可以按组迭代

for (m,g) in df1.groupby('key'
### Pandas 中 `groupby` 函数的用法 #### 基本概念 `groupby` 是 Pandas 库中用于数据分聚合的强大功能之一。它允许用户根据某些标准将 DataFrame 划分成多个小,并对每个小执行特定操作[^1]。 #### 使用示例 以下是几个常见的 `groupby` 示例: ```python import pandas as pd # 创建一个简单的 DataFrame data = { 'Company': ['Google', 'Google', 'Microsoft', 'Microsoft', 'Facebook', 'Facebook'], 'Person': ['Anna', 'John', 'Smith', 'Alice', 'Mark', 'Sara'], 'Sales': [200, 120, 340, 124, 243, 350] } df = pd.DataFrame(data) print(df) ``` 运行结果如下: ``` Company Person Sales 0 Google Anna 200 1 Google John 120 2 Microsoft Smith 340 3 Microsoft Alice 124 4 Facebook Mark 243 5 Facebook Sara 350 ``` ##### 示例 1:按公司分并计算总销售额 可以使用 `sum()` 方法来计算每家公司的销售总额。 ```python grouped_sales = df.groupby('Company').sum() print(grouped_sales) ``` 输出结果为: ``` Sales Company Facebook 593 Google 320 Microsoft 464 ``` ##### 示例 2:获取每家公司对应的员工列表 如果希望查看每家公司有哪些员工,则可以通过 `apply(list)` 来实现。 ```python employees_per_company = df.groupby('Company')['Person'].apply(list) print(employees_per_company) ``` 输出结果为: ``` Company Facebook [Mark, Sara] Google [Anna, John] Microsoft [Smith, Alice] Name: Person, dtype: object ``` ##### 示例 3:应用自定义函数到各 假设我们想找到每家公司最高销售额的人及其金额,可编写一个自定义函数并通过 `apply` 调用。 ```python def top_seller(group): return group.loc[group['Sales'].idxmax()] top_sellers = df.groupby('Company').apply(top_seller).reset_index(drop=True) print(top_sellers) ``` 输出结果为: ``` Company Person Sales 0 Facebook Sara 350 1 Google Anna 200 2 Microsoft Smith 340 ``` #### 进阶技巧 - **多重聚合** 可以通过 `agg` 方法一次性完成多种统计运算。 ```python stats = df.groupby('Company').agg({ 'Sales': ['sum', 'mean', 'min', 'max'] }) print(stats) ``` 输出结果为: ``` Sales sum mean min max Company Facebook 593 296.5 243 350 Google 320 160.0 120 200 Microsoft 464 232.0 124 340 ``` - **组合索引与重置索引** 当使用 `groupby` 后,默认会创建一个多级索引结构。若需将其转换回普通的列形式,可通过 `.reset_index()` 实现。 ```python result = df.groupby(['Company']).sum().reset_index() print(result) ``` 输出结果为: ``` Company Sales 0 Facebook 593 1 Google 320 2 Microsoft 464 ``` --- ### 总结 通过对 `groupby` 的学习,我们可以轻松地对复杂的数据集进行分割、处理以及合并等操作。无论是基础的汇总还是高级的应用场景,`groupby` 都能提供灵活的支持[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值