我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python中分组函数groupby和分组运算函数agg的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python中分组函数groupby和分组运算函数agg的使用

今天来介绍pandas中一个很有用的函数groupby,其实和hive中的groupby的效果是一样的,区别在于两种语言的写法问题。groupby在Python中的分组统计中很有用~

groupby:

首先创建数据:


import pandas as pd
import numpy as np
df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'], 
                       'B': [2, 7, 1, 3, 3, 2, 4, 8], 
                       'C': [100, 87, 96, 130, 105, 87, 96, 155]})
df
Out[2]: 
   A  B    C
0  a  2  100
1  b  7   87
2  a  1   96
3  c  3  130
4  a  3  105
5  c  2   87
6  b  4   96

pandas中groupby的基本操作:

1、按A列进行分组,求B、C两列的均值:


df.groupby('A').mean()
Out[6]: 
          B           C
A                      
a  2.000000  100.333333
b  5.500000   91.500000
c  4.333333  124.000000

当然也可以按照多列进行分组,获取其他列的均值:


df.groupby(['A','B']).mean()
Out[7]: 
       C
A B     
a 1   96
  2  100
  3  105
b 4   96
  7   87
c 2   87
  3  130
  8  155

2、分组后,选择列进行计算:


data=df.groupby('A')
data['B'].std()
Out[11]: 
A
a    1.00000
b    2.12132
c    3.21455
Name: B, dtype: float64
 
#选择B、C两列
data['B','C'].mean()
Out[12]: 
          B           C
A                      
a  2.000000  100.333333
b  5.500000   91.500000
c  4.333333  124.000000

3、按A进行分组后,可以对不同的列采用不同的聚合方法(ps:这一点就和hive很相像了)


data.agg({'B':'mean','C':'sum'})    #B列均值,C列汇总
Out[14]: 
     C         B
A               
a  301  2.000000
b  183  5.500000
c  372  4.333333

4、如果按照A进行分组后,对多列采用相同的聚合方法,我们可以借助apply函数:


df.groupby('A').apply(np.mean)
Out[25]: 
          B           C
A                      
a  2.000000  100.333333
b  5.500000   91.500000
c  4.333333  124.000000

5、将某列数据按数据值分成不同范围段进行分组运算

创建数据集:


np.random.seed(0)
df = pd.DataFrame({'Age': np.random.randint(20, 70, 100), 
                        'Sex': np.random.choice(['Male', 'Female'], 100), 
                        'number_of_foo': np.random.randint(1, 20, 100)})
Out[38]: 
   Age     Sex  number_of_foo
0   64  Female             14
1   67  Female             14
2   20  Female             12
3   23    Male             17
4   23  Female             15

目标:将age字段分成三组,有如下两种方法实现:


#第一种方法:
1、bins=4
pd.cut(df['Age'], bins=4)
0       (56.75, 69.0]
1       (56.75, 69.0]
2     (19.951, 32.25]
3     (19.951, 32.25]
4     (19.951, 32.25]...
 
#第二种方法
2、bins=[19, 40, 65, np.inf]
pd.cut(df['Age'], bins=[19,40,65,np.inf])
Out[40]: 
0     (40.0, 65.0]
1      (65.0, inf]
2     (19.0, 40.0]
3     (19.0, 40.0]
4     (19.0, 40.0]
 
#分组范围结果如下:
age_groups = pd.cut(df['Age'], bins=[19,40,65,np.inf])
df.groupby(age_groups).mean()
Out[43]: 
                    Age  number_of_foo
Age                                   
(19.0, 40.0]  29.840000       9.880000
(40.0, 65.0]  52.833333       9.452381
(65.0, inf]   67.375000       9.250000
 
#按‘Age'分组范围和性别(sex)进行制作交叉表
 
pd.crosstab(age_groups, df['Sex'])
Out[44]: 
Sex           Female  Male
Age                       
(19.0, 40.0]      22    28
(40.0, 65.0]      18    24
(65.0, inf]        3     5

agg:

1、使用groupby按照某列(A)进行分组后,需要对另外一列采用不同的聚合方法:


df.groupby('A')['B'].agg({'mean':np.mean, 'std': np.std})
 
Out[16]: 
       std      mean
A                   
a  1.00000  2.000000
b  2.12132  5.500000
c  3.21455  4.333333

2、按照某列进行分组后,对不同的列采用不同的聚合方法:


df.groupby('A').agg({'B':[np.mean,'sum'],'C':['count',np.std]})  #[]中对应的是两种方法
 
Out[17]: 
      C                    B    
  count        std      mean sum
A                               
a     3   4.509250  2.000000   6
b     2   6.363961  5.500000  11
c     3  34.394767  4.333333  13

transform:

前面两种方法得到的结果是以A列值为索引的结果,如果使用没有进行groupby分组的index的话,该怎么操作呢?此时就要用到transform函数了。transform(func, args, *kwargs) 方法简化了这个过程,: func 参数应用到所有分组,然后把结果放置到原数组的 index 上:


df
Out[31]: 
   A  B    C
0  a  2  100
1  b  7   87
2  a  1   96
3  c  3  130
4  a  3  105
5  c  2   87
6  b  4   96
7  c  8  155
 
df.groupby('A')['B','C'].transform('count')  #注:count函数在计算时,不计算nan值
Out[32]: 
   B  C
0  3  3
1  2  2
2  3  3
3  3  3
4  3  3
5  3  3
6  2  2
7  3  3

从中可以看出:按A列进行分组,对B、C两列进行计数时,B为a的索引有[0,2,4],所以结果列的中[0,2,4]索引的值都为3,相当于广播了。对于C列,同理。

到此这篇关于python中分组函数groupby和分组运算函数agg的使用的文章就介绍到这了,更多相关python 分组函数groupby和分组运算函数agg内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python中分组函数groupby和分组运算函数agg的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么使用python中分组函数groupby和分组运算函数agg

这篇文章主要介绍“怎么使用python中分组函数groupby和分组运算函数agg”,在日常操作中,相信很多人在怎么使用python中分组函数groupby和分组运算函数agg问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-06-25

怎么使用python groupby函数实现分组后选取最值

这篇文章主要介绍“怎么使用python groupby函数实现分组后选取最值”,在日常操作中,相信很多人在怎么使用python groupby函数实现分组后选取最值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-07-02

Mariadb中聚合函数和分组函数怎么使用

这篇文章主要讲解了“Mariadb中聚合函数和分组函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mariadb中聚合函数和分组函数怎么使用”吧!聚合函数当我们需要汇总表中的数据而
2023-06-28

python/pandas数据挖掘(十四)-groupby,聚合,分组级运算

https://blog.csdn.net/youngbit007/article/details/54288603groupbyimport pandas as pddf = pd.DataFrame({"key1":list("aabba"),
python/pandas数据挖掘(十四)-groupby,聚合,分组级运算
2016-09-15

PHP 数组分组函数在统计分析中的应用

使用 php 的 array_group_by() 函数可以对数组中的数据进行分组,从而方便进行统计分析,包括:分组后,可以通过 array_map() 函数计算每个组中的元素数量。还可以通过自定义回调函数找出每个组中具有最大值的元素。通过
PHP 数组分组函数在统计分析中的应用
2024-05-02

PHP 数组分组函数在金融分析中的应用

php 数组分组函数在金融分析中应用广泛,允许根据特定规则将数组元素分组:持股分组:根据股票代码分组持股,计算每种股票的总数量。交易分组:根据日期分组交易,汇总每日期的交易金额。这些函数为金融分析提供了强大的工具,以组织和汇总数据。PHP
PHP 数组分组函数在金融分析中的应用
2024-05-01

PHP 数组按键分组的函数和应用指南

php 数组按键分组函数可以按指定规则对数组按键分类,用于数据汇总、过滤和转换。内置函数包括 array_column()、array_combine() 和 array_group_by()。例如,可以按用户 id 分组订单或按后缀过滤密
PHP 数组按键分组的函数和应用指南
2024-04-30

Hive内部函数中聚合函数和分组函数有哪些

这篇文章给大家分享的是有关Hive内部函数中聚合函数和分组函数有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 常用的聚合函数: max 最大值 min
2023-06-02

PHP 数组分组函数在数据清洗中的作用

php 的分组函数在数据清洗中发挥着重要作用,包括 array_group_by()、array_column() 和 array_multisort()。这些函数可用于对数组进行分组,例如根据订单 id 或客户 id 分组订单数据,从而简
PHP 数组分组函数在数据清洗中的作用
2024-05-03

PHP 数组分组函数在数据整理中的应用

php 的 array_group_by 函数可根据键或闭包函数对数组中的元素分组,返回一个关联数组,其中键是组名,值是属于该组的元素数组。PHP 数组分组函数在数据整理中的应用引言数据分组是数据处理中的一项常见任务,它可以帮助我们整理
PHP 数组分组函数在数据整理中的应用
2024-05-04

PHP 数组分组函数在数据聚合中的应用

php array_group_by() 函数可根据指定键对数组元素进行分组,形成以键为索引、以数组为值的数组。实例如,根据产品字段分组销售记录后,分组后的数组中键为产品值,值为属于此产品的销售记录数组。PHP 数组分组函数在数据聚合中的应
PHP 数组分组函数在数据聚合中的应用
2024-05-01

PHP 数组分组函数在创建层级结构中的使用

php 数组分组函数可用于创建层级结构,通过将数组元素根据指定键分组,生成具有多个嵌套级别的数组。代码示例使用 array_group_by() 分组数据,然后通过递归函数 createhierarchy() 将其转换为层级结构。该函数遍历
PHP 数组分组函数在创建层级结构中的使用
2024-05-01

PHP 数组分组函数在 Web 开发中的应用

php 中的数组分组函数可以对数组元素进行分组和分类,在 web 开发中具有广泛应用。使用 group_by() 函数按给定键对数组进行分组。实战案例:按性别分组用户数据,方便用户管理系统中的分组操作。PHP 数组分组函数在 Web 开发中
PHP 数组分组函数在 Web 开发中的应用
2024-05-05

PHP 数组分组函数在制造业中的应用

在制造业中,php 数组分组函数可通过以下方式提高效率和准确性:使用 array_group_by() 函数按特定键值对数组元素进行分组。用于处理大量生产数据,如按产品 id 分组订单。除 array_group_by() 外,还有其他分组
PHP 数组分组函数在制造业中的应用
2024-05-01

PHP 函数中的组成部分

php函数组成部分包括:访问修饰符:指定函数访问权限,如public、protected、private。函数名称:由字母、数字和下划线组成,以字母开头。参数列表:指定函数接受的输入变量,可按值或按引用传递。函数体:包含函数执行的代码语句。
PHP 函数中的组成部分
2024-04-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录