DataFrame 的 groupby()使用

本文详细介绍了Pandas库中的GroupBy功能,包括如何按列分组、查看分组信息、迭代遍历分组、选择特定分组以及执行聚合、转换和过滤操作。聚合允许计算汇总统计,如平均值和求和;转换则返回与原始数据大小相同的调整值;过滤则根据条件筛选数据。通过实例展示了如何运用这些功能进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@创建于:20210813
@修改于:20210813

1、【易百教程】Pandas分组(GroupBy)

# 语法顺序和逻辑执行顺序
df.groupby([Column1,Column2])[Condition1].agg({Column3: "mean",Column4:"sum"}).reset_index()
# https://blog.youkuaiyun.com/weixin_43618989/article/details/105585486

在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作:

聚合 - 计算汇总统计
转换 - 执行一些特定于组的操作
过滤 - 在某些情况下丢弃数据

将数据拆分成组Pandas对象可以分成任何对象。有多种方式来拆分对象,如:

obj.groupby(‘key’)
obj.groupby([‘key1’,’key2’])
obj.groupby(key,axis=1)

查看分组

df.groupby(‘Team’).groups

在这里插入图片描述

迭代遍历分组
使用groupby对象,可以遍历类似itertools.obj的对象。

for name,group in grouped:
    print (name)
    print (group)

选择一个分组

grouped.get_group(2014)

聚合:
聚合函数为每个组返回单个聚合值。当创建了分组(group by)对象,就可以对分组数据执行多个聚合操作。一个比较常用的是通过聚合或等效的agg方法聚合。
通过分组系列,还可以传递函数的列表或字典来进行聚合,并生成DataFrame作为输出 -

grouped[‘Points’].agg(np.mean)
grouped[‘Points’].agg([np.sum, np.mean, np.std]

在这里插入图片描述

转换:
分组或列上的转换返回索引大小与被分组的索引相同的对象。因此,转换应该返回与组块大小相同的结果。

grouped = df.groupby(‘Team’)
score = lambda x: (x - x.mean()) / x.std()*10
print (grouped.transform(score))

过滤:
过滤根据定义的标准过滤数据并返回数据的子集。filter()函数用于过滤数据。

df = pd.DataFrame(ipl_data)
filter = df.groupby(‘Team’).filter(lambda x: len(x) >= 3)

2、官网:pandas.DataFrame.groupby

3、其他网站

在Pandas库中,`DataFrame.groupby()`是一个非常强大的函数,用于将数据按照一个或多个键分组,并对每个分组应用聚合操作、转换或其他计算。通过 `groupby()`, 用户可以方便地实现数据分析中的“拆分-应用-合并”策略。 ### 基本用法: 假设我们有一个包含销售记录的数据框df: ```python import pandas as pd data = { '部门': ['A', 'B', 'A', 'B'], '销售额': [10, 20, 30, 40], } df = pd.DataFrame(data) ``` #### 按单列分组并求和: 如果你想按某个特定字段(如"部门")对所有值进行分类汇总,则可以直接指定该列为参数传递给 groupby 函数后再调用 sum(): ```python result = df.groupby('部门').sum() print(result) ``` 这会返回一个新的 DataFrame ,其中索引由 "部门" 列组成,而数值则是各部分别对应的总金额。 #### 对多列同时分组: 也可以一次性基于多个条件来进行更细致化的分段统计分析。例如,在上述基础上再加入日期信息作为另一维度参考点: ```python # 添加时间列 df['日期'] = ['2023-07-01', '2023-07-01', '2023-07-02', '2023-07-02'] multi_grouped_df = df.groupby(['部门','日期']).agg({ '销售额':'sum' }) print(multi_grouped_df) ``` 这里使用了 agg() 方法来明确指出对于每一列需要做什么样的聚集运算 (比如求和) 。请注意当涉及多层索引时输出结果的形式变化;另外还可以自定义更多复杂的规则! ### 其他常用功能包括但不限于: - **count():** 统计每组内非空元素的数量。 - **mean()/median()/min()/max():** 计算平均数/中位数/最小值/最大值等描述性统计数据。 - **size:** 返回各小组样本量大小而不是去重后的非NA项数目。 - 支持直接链式调用多种方法组合处理,以及自定义lambda表达式的灵活运用等等... 希望这个简单的介绍能帮助您理解如何开始利用 Pandas 的 groupby 功能完成基本的任务需求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值