pandas——groupby操作

本文详细介绍了Pandas的groupby操作,包括groupby函数的参数解析,分组操作的概念和流程,以及如何通过groupby进行数据的拆分、应用和汇总。文中列举了多种分组操作实例,如按列分组、自定义函数分组、多级索引分组、复合分组等,并展示了聚合函数如sum、mean、count等的使用方法,还涵盖了as_index、reset_index等参数的用法,以及transform和filter等高级操作。

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

相关知识

groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False)

参数说明:

by是指分组依据(列表、字典、函数,元组,Series)

axis:是作用维度(0为行,1为列)

level:根据索引级别分组

sort:对groupby分组后新的dataframe中索引进行排序,sort=True为升序,

as_index:在groupby中使用的键是否成为新的dataframe中的索引,默认as_index=True

group_keys:在调用apply时,将group键添加到索引中以识别片段

squeeze :如果可能的话,减少返回类型的维数,否则返回一个一致的类型

grouping操作(split-apply-combine)

数据的分组&聚合 -- 什么是groupby 技术?

在数据分析中,我们往往需要在将数据拆分,在每一个特定的组里进行运算。比如根据教育水平和年龄段计算某个城市的工作人口的平均收入。

pandas中的groupby提供了一个高效的数据的分组运算。

我们通过一个或者多个分类变量将数据拆分,然后分别在拆分以后的数据上进行需要的计算

我们可以把上述过程理解为三部:

1.拆分数据(split) 

2.应用某个函数(apply) 

3.汇总计算结果(aggregate)

下面这个演示图展示了“分拆-应用-汇总”的groupby思想

上图所示,分解步骤:

Step1 :数据分组—— groupby 方法

Step2 :数据聚合:

     使用内置函数——sum / mean / max / min / count等

     使用自定义函数—— agg ( aggregate ) 方法

     自定义更丰富的分组运算—— apply 方法

实操

1.打开终端模拟器,在命令行输入ipython notebook --ip='127.0.0.1',在浏览器中会打开界面点击New,在其下拉框中选择Python3.

2.新建一个ipynb文件,用于编写并执行代码。

3.创建一个数据帧df。

import numpy as np  
import pandas as pd  
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})  
print(df)  

 

4.通过A列对df进行分布操作。

5.通过A、B列对df进行分组操作。

6.使用自定义函数进行分组操作,自定义一个函数,使用groupby方法并使用自定义函数给定的条件,按列对df进行分组。

def get_letter_type(letter):  
    if letter.lower() in 'aeiou':  
    
### Pandas `groupby` 使用方法及示例 #### 基本概念 Pandas 提供了一个强大的工具——`groupby()` 方法,用于按照指定条件对数据集进行分组并执行聚合操作。该功能允许用户基于某些列的不同值来分割数据,并针对每一分组应用特定函数以生成新的汇总结果。 #### 数据准备 为了演示如何使用 `groupby()` 方法,在实际操作前通常会创建一些示例数据。例如: ```python import pandas as pd data = { '类别': ['A', 'B', 'A', 'C', 'B', 'A'], '数值1': [10, 20, 30, 40, 50, 60], '数值2': [7, 8, 9, 10, 11, 12] } df = pd.DataFrame(data) print(df) ``` 上述代码定义了一张表格型的数据结构,其中包含三列:'类别'、'数值1' 和 '数值2'[ ^1 ]。 #### 分组与聚合 通过调用 `groupby()` 函数可以选择按某一列或多列的唯一值划分数据子集。随后可对该分组施加各种统计运算(如求和、平均数等)。下面是一个基本的例子展示如何依据单个字段进行分组以及计算其总和: ```python result = df.groupby('类别').sum() print(result) ``` 此段脚本将返回一个新的 DataFrame 对象,它包含了原始表中每一类别的总计金额[ ^2 ]。 对于更复杂的场景,可能需要同时考虑多个维度或者不同的聚合方式,则可以通过传递字典形式给 `.agg()` 来实现自定义化处理逻辑。如下所示为多级索引情况下的实例说明: ```python aggregated_data = data.groupby( by=["股票代码", "日期"], as_index=False ).agg({ "开盘": ["max", "mean"], "收盘": ["min", "mean"] }) print(aggregated_data) ``` 这里展示了当希望保留原分组键作为常规列而非成为新索引时的操作技巧[ ^3 ]。 #### 总结 综上所述,利用 Pandas 库里的 `groupby` 功能可以帮助分析人员快速完成复杂的数据整理工作流程,极大地提高了工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值