Python数据聚合和分组运算(1)-GroupBy Mechanics

前言

Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活。《Python for Data Analysis》这本书第9章详细的介绍了这方面的用法,但是有些细节不常用就容易忘记,遂打算把书中这部分内容总结在博客里,以便复习查看。根据书中的章节,这部分知识包括以下四部分:

1.GroupBy Mechanics(groupby技术)

2.Data Aggregation(数据聚合)

3.Group-wise Operation and Transformation(分组级运算和转换)

4.Pivot Tables and Cross-Tabulation(透视表和交叉表)

本文是第一部分,介绍groupby技术。

 

一、分组原理

核心:

1.不论分组键是数组、列表、字典、Series、函数,只要其与待分组变量的轴长度一致都可以传入groupby进行分组。

2.默认axis=0按行分组,可指定axis=1对列分组。

 

对数据进行分组操作的过程可以概括为:split-apply-combine三步:

1.按照键值(key)或者分组变量将数据分组。

2.对于每组应用我们的函数,这一步非常灵活,可以是python自带函数,可以是我们自己编写的函数。

3.将函数计算后的结果聚合。

figure1

图1:分组聚合原理(图片来自《Python for Data Analysis》page 252)

import pandas as pd
import numpy as np

df = pd.DataFrame({
   'key1' : ['a', 'a', 'b', 'b', 'a'],
    'key2' : ['one', 'two', 'one', 'two', 'one'],
    'data1' : np.random.randn(5),
    'data2' : np.random.randn(5)})

figure2

我们将key1当做我们的分组键值,对data1进行分组,再求每组的均值:

grouped = df['data1'].groupby(df['key1'])

语法很简单,但是这里需要注意grouped的数据类型,它不在是一个数据框,而是一个GroupBy对象。

grouped

  • 11
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Pythongroupby函数用于对数据进行分组操作。可以通过传递函数、字典、序列或数组来指定分组的方式。引用\[1\]的示例展示了如何定义一个标准化函数,并使用groupby函数对数据进行分组和标准化操作。引用\[2\]的示例展示了如何将函数、字典、序列和数组一起使用,将它们转化为数组后进行分组操作。引用\[3\]的示例展示了如何直接传递函数名来进行分组操作,以及如何按行分组分组的key是每个人名的字母长度。总的来说,groupby函数提供了灵活的方式来对数据进行分组操作,可以根据不同的需求选择合适的方式进行分组。 #### 引用[.reference_title] - *1* [【python groupby】分组聚合groupby的用法](https://blog.csdn.net/OnePiece_97/article/details/103255790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python数据聚合分组运算(1)-GroupBy Mechanics](https://blog.csdn.net/weixin_30482383/article/details/97084779)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值