广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中分组函数groupby和分组运算函数agg的使用
  • 430
分享到

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

2024-04-02 19:04:59 430人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录groupby:agg:今天来介绍pandas中一个很有用的函数groupby,其实和Hive中的groupby的效果是一样的,区别在于两种语言的写法问题。groupby在pyt

今天来介绍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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python中分组函数groupby和分组运算函数agg的使用

本文链接: https://www.lsjlt.com/news/155596.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • python中分组函数groupby和分组运算函数agg的使用
    目录groupby:agg:今天来介绍pandas中一个很有用的函数groupby,其实和hive中的groupby的效果是一样的,区别在于两种语言的写法问题。groupby在Pyt...
    99+
    2022-11-12
  • 怎么使用python中分组函数groupby和分组运算函数agg
    这篇文章主要介绍“怎么使用python中分组函数groupby和分组运算函数agg”,在日常操作中,相信很多人在怎么使用python中分组函数groupby和分组运算函数agg问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-25
  • python DataFrame数据分组统计groupby()函数的使用
    目录groupby()函数1. groupby基本用法1.1 一级分类_分组求和1.2 二级分类_分组求和1.3 对DataFrameGroupBy对象列名索引(对指定列统计计算)2...
    99+
    2022-11-13
  • 怎么使用python groupby函数实现分组后选取最值
    这篇文章主要介绍“怎么使用python groupby函数实现分组后选取最值”,在日常操作中,相信很多人在怎么使用python groupby函数实现分组后选取最值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-07-02
  • python/pandas数据挖掘(十四)-groupby,聚合,分组级运算
    https://blog.csdn.net/youngbit007/article/details/54288603 groupbyimport pandas as pddf = pd.DataFrame({"key1":list...
    99+
    2016-09-15
    python/pandas数据挖掘(十四)-groupby 聚合,分组级运算
  • 100天精通Python(数据分析篇)——第64天:Pandas分组groupby函数案例
    文章目录 一、分组 (groupby) 1. GroupBy对象:DataFrameGroupBy,SeriesGroupBy 1)分组操作 ...
    99+
    2023-09-05
    pandas python 数据分析
  • Mariadb中聚合函数和分组函数怎么使用
    这篇文章主要讲解了“Mariadb中聚合函数和分组函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mariadb中聚合函数和分组函数怎么使用”吧!聚合函数当我们需要汇总表中的数据而...
    99+
    2023-06-28
  • python groupby函数实现分组选取最大值与最小值
    现在需要将course分组,然后选择出每一组里面的最大值和最小值,并保留下来 实现下面数据结果: 直接使用groupby函数,不能直接达到此效果,需要在groupby函数上添加a...
    99+
    2022-11-11
  • Hive内部函数中聚合函数和分组函数有哪些
    这篇文章给大家分享的是有关Hive内部函数中聚合函数和分组函数有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 常用的聚合函数:       max &nbs...
    99+
    2023-06-02
  • mysql中分组函数怎么用
    mysql中常见的分组函数有sum()求和函数、avg()求平均值函数、max()求最大值函数、min()求最小值函数、和count()计算个数函数几种,使用方法如下:sum() 求和select sum(salary) from...
    99+
    2022-10-05
  • Python数据分析之堆叠数组函数怎么使用
    今天小编给大家分享一下Python数据分析之堆叠数组函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。numpy 堆...
    99+
    2023-07-05
  • 如何在Oracle中使用ROLLUP分组函数
    这期内容当中小编将会给大家带来有关如何在Oracle中使用ROLLUP分组函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。环境准备create table&n...
    99+
    2022-10-18
  • Oracle中分析函数和集合运算的详解
    一.分析函数 RANK    相同的值排名相同,排名跳跃 DENSE_RANK   相同的值排名相同,排名连续 ROW_NUMBER   返回连续的排名,无论值是否相等 下图为三种排名方式的举例 --以下三个分...
    99+
    2019-10-21
    Oracle中分析函数和集合运算的详解
  • php分割数组用的函数是哪个
    这篇文章主要讲解了“php分割数组用的函数是哪个”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php分割数组用的函数是哪个”吧!php分割数组用“array_chunk()”函数。array...
    99+
    2023-06-30
  • 分享一些常用的PHP数组函数
    PHP是一种非常流行的服务器端编程语言。其强大的数组功能为程序员提供了很多便利。在 PHP 中,数组函数有很多,每个函数都有各自的用途和功能。在本文中,我们将介绍常用的PHP数组函数,以及它们的用法和示例。array() 函数该函数创建一个...
    99+
    2023-05-14
  • SQL中rollup和cube分组函数用法及示例分析
    SQL中rollup和cube分组函数用法及示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先,它计算GROUP BY子句中指定的...
    99+
    2022-10-19
  • 使用PHP8中的array_chunk()函数高效处理数组分块
    PHP是一种广泛使用的脚本语言,它的主要用途是开发Web应用程序。它支持面向对象编程,能够很好地与HTML和HTTP协议结合使用,可以创建功能强大的Web应用程序。在PHP8版本中,array_chunk()函数是一个非常有用的函数。这个函...
    99+
    2023-05-18
    PHP array_chunk() 数组分块
  • 简析Python函数式编程字符串和元组及函数分类与高阶函数
    目录函数式编程中的字符串不变类型元组普通元组的声明与访问函数式的分类any() 、all() 、len()、sum() 对比学习zip()、reversed()、enumerate(...
    99+
    2022-11-12
  • Python 函数中如何使用 Linux 数组?
    在 Linux 系统中,数组是一种非常常见的数据类型。它可以用来存储一系列相关的元素,并且可以轻松地对这些元素进行操作。在 Python 函数中,使用 Linux 数组可以让我们更方便地操作和处理数据。 在本文中,我们将探讨如何在 Pyt...
    99+
    2023-07-20
    函数 linux 数组
  • Vue中函数化组件的示例分析
    这篇文章将为大家详细讲解有关Vue中函数化组件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。介绍之前创建的锚点标题组件是比较简单,没有管理或者监听任何传递给他的...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作