返回顶部
首页 > 资讯 > 精选 >pandas中groupby操作如何实现
  • 814
分享到

pandas中groupby操作如何实现

2023-07-05 03:07:17 814人浏览 八月长安
摘要

本文小编为大家详细介绍“pandas中groupby操作如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“pandas中groupby操作如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、实验目的熟

本文小编为大家详细介绍“pandas中groupby操作如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“pandas中groupby操作如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、实验目的

熟练掌握pandas中的groupby操作

二、实验原理

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提供了一个高效的数据的分组运算。

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

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

拆分数据(split)

应用某个函数(apply)

汇总计算结果(aggregate)

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

pandas中groupby操作如何实现

上图所示,分解步骤:

Step1 :数据分组—— groupby 方法

Step2 :数据聚合:

使用内置函数——sum / mean / max / min / count等
使用自定义函数—— agg ( aggregate ) 方法
自定义更丰富的分组运算—— apply 方法

三、实验环境

python 3.6.1

Jupyter

四、实验内容

练习pandas中的groupby的操作案例

五、实验步骤

1.创建一个数据帧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)

pandas中groupby操作如何实现

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

df.groupby('A')

pandas中groupby操作如何实现

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

df.groupby(['A','B'])

pandas中groupby操作如何实现

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

def get_letter_type(letter):      if letter.lower() in 'aeiou':          return 'vowel'      else:          return 'consonant'    grouped = df.groupby(get_letter_type, axis=1)  for group in grouped:      print(group)

pandas中groupby操作如何实现

5.创建一个Series名为s,使用groupby根据s的索引对s进行分组,返回分组后的新Series,对新Series进行first、last、sum操作。

lst = [1, 2, 3, 1, 2, 3]  s = pd.Series([1, 2, 3, 10, 20, 30], lst)  grouped = s.groupby(level=0)  #查看分组后的第一行数据  grouped.first()  #查看分组后的最后一行数据  grouped.last()  #对分组的各组进行求和  grouped.sum()

pandas中groupby操作如何实现

6.分组排序,使用groupby进行分组时,默认是按分组后索引进行升序排列,在groupby方法中加入sort=False参数,可以进行降序排列。

df2=pd.DataFrame({'X':['B','B','A','A'],'Y':[1,2,3,4]})  #按X列对df2进行分组,并求每组的和  df2.groupby(['X']).sum()  #按X列对df2进行分组,分组时不对键进行排序,并求每组的和  df2.groupby(['X'],sort=False).sum()

pandas中groupby操作如何实现

7.使用get_group方法得到分组后某组的值。

df3 = pd.DataFrame({'X' : ['A', 'B', 'A', 'B'], 'Y' : [1, 4, 3, 2]})  #按X列df3进行分组,并得到A组的df3值  df3.groupby(['X']).get_group('A')  #按X列df3进行分组,并得到B组的df3值  df3.groupby(['X']).get_group('B')

pandas中groupby操作如何实现

8.使用groups方法得到分组后所有组的值。

df.groupby('A').groups  df.groupby(['A','B']).groups

pandas中groupby操作如何实现

9.多级索引分组,创建一个有两级索引的Series,并使用两个方法对Series进行分组并求和。

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]  index=pd.MultiIndex.from_arrays(arrays,names=['first','second'])  s=pd.Series(np.random.randn(8),index=index)  s.groupby(level=0).sum()  s.groupby(level='second').sum()

pandas中groupby操作如何实现

10.复合分组,对s按first、second进行分组并求和。

s.groupby(level=['first', 'second']).sum()

pandas中groupby操作如何实现

11.复合分组(按索引和列),创建数据帧df,使用索引级别和列对df进行分组。

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]  index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])  df = pd.DataFrame({'A': [1, 1, 1, 1, 2, 2, 3, 3], 'B': np.arange(8)},index=index)  print(df)  df.groupby([pd.Grouper(level=1),'A']).sum()

pandas中groupby操作如何实现

12.对df进行分组,将分组后C列的值赋值给grouped,统计grouped中每类的个数。

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)})  grouped=df.groupby(['A'])  grouped_C=grouped['C']  print(grouped_C.count())

pandas中groupby操作如何实现

13.对上面创建的df的C列,按A列值进行分组并求和。

df['C'].groupby(df['A']).sum()

pandas中groupby操作如何实现

14.遍历分组结果,通过A,B两列对df进行分组,分组结果的组名为元组。

for name, group in df.groupby(['A', 'B']):      print(name)      print(group)

pandas中groupby操作如何实现

15.通过A列对df进行分组,并查看分组对象的bar列。

df.groupby(['A']).get_group(('bar'))

pandas中groupby操作如何实现

16.按A,B两列对df进行分组,并查看分组对象中bar、one都存在的部分。

df.groupby(['A','B']).get_group(('bar','one'))

pandas中groupby操作如何实现

注意:当分组按两列来分时,查看分组对象也应该包含每列的一部分。

17.聚合操作,按A列对df进行分组,使用聚合函数aggregate求每组的和。

grouped=df.groupby(['A']) grouped.aggregate(np.sum)

pandas中groupby操作如何实现

按A、B两列对df进行分组,并使用聚合函数aggregate对每组求和。

grouped=df.groupby(['A'])  grouped.aggregate(np.sum)

pandas中groupby操作如何实现

注意:通过上面的结果可以看到。聚合完成后每组都有一个组名作为新的索引,使用as_index=False可以忽略组名。

18.当as_index=True时,在groupby中使用的键将成为新的dataframe中的索引。按A、B两列对df进行分组,这是使参数as_index=False,再使用聚合函数aggregate求每组的和.

grouped=df.groupby(['A','B'],as_index=False)  grouped.aggregate(np.sum)

pandas中groupby操作如何实现

19.聚合操作,按A、B列对df进行分组,使用size方法,求每组的大小。返回一个Series,索引是组名,值是每组的大小。

grouped=df.groupby(['A','B'])  grouped.size()

pandas中groupby操作如何实现

20.聚合操作,对分组grouped进行统计描述。

grouped.describe()

pandas中groupby操作如何实现

注意:聚合函数可以减少数据帧的维度,常用的聚合函数有:mean、sum、size、count、std、var、sem 、describe、first、last、nth、min、max。
执行多个函数在一个分组结果上:在分组返回的Series中我们可以通过一个聚合函数的列表或一个字典去操作series,返回一个DataFrame。

读到这里,这篇“pandas中groupby操作如何实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: pandas中groupby操作如何实现

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

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

猜你喜欢
  • pandas中groupby操作如何实现
    本文小编为大家详细介绍“pandas中groupby操作如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“pandas中groupby操作如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、实验目的熟...
    99+
    2023-07-05
  • pandas中groupby操作实现
    目录一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤一、实验目的 熟练掌握pandas中的groupby操作 二、实验原理 groupby(by=None, axis=0...
    99+
    2023-02-13
    pandas groupby操作 pandas groupby
  • pandas——groupby操作
    Pandas——groupby操作 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮...
    99+
    2023-09-16
    pandas python 开发语言
  • Pandas高级教程之Pandas中的GroupBy操作
    目录简介分割数据多indexget_groupdropnagroups属性index的层级group的遍历聚合操作通用聚合方法可以同时指定多个聚合方法:NamedAgg不同...
    99+
    2024-04-02
  • Pandas中GroupBy对象如何使用
    这篇“Pandas中GroupBy对象如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pandas中GroupBy对象...
    99+
    2023-07-02
  • Pandas实现groupby分组统计的实践
    目录1、创建数据和导入包2、分组使用聚合函数做数据统计3、遍历groupby的结果理解执行流程4、实例分组探索天气数据类似SQL:select city,max(tempe...
    99+
    2024-04-02
  • Pandas如何实现DataFrame运算、统计与排序操作
    这篇文章主要介绍Pandas如何实现DataFrame运算、统计与排序操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!由于DataFrame的数据结构中包含了多行、多列,所以DataFrame的计算与统计可以是用行...
    99+
    2023-06-29
  • Pandas中怎么实现SQL查询数据操作
    本篇文章给大家分享的是有关Pandas中怎么实现SQL查询数据操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 选择行SELECT...
    99+
    2024-04-02
  • python中pandas操作apply返回多列的实现
    目录apply 返回多列生成新列多行操作举例我们可以用DataFrame的apply函数实现对多列,多行的操作。 需要记住的是,参数axis设为1是对列进行操作,参数axis设为0是...
    99+
    2024-04-02
  • JavaScript中如何实现DOM操作
    这篇文章主要为大家展示了“JavaScript中如何实现DOM操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中如何实现DOM操作”这篇文...
    99+
    2024-04-02
  • docker中如何实现批量操作
    这篇文章给大家分享的是有关docker中如何实现批量操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。批量操作当服务器重启或者因故关机时,docker 容器可能需要全部重新启动,...
    99+
    2024-04-02
  • 如何在Android 中实现scp操作
    目录SSHSCPSFTPAndroid中使用SCPSFTP 删除文件本文简单介绍用SSH库ganymed-ssh2在Android中实现scp操作。 SSH SSH是专为远程登录会...
    99+
    2024-04-02
  • Python之如何使用pandas操作Excel表
    目录 1、前言 2、读取Excel 3、对Excel进行操作 3.1、获取行号、列名  3.2、获取单元格的值,并循环输出  3.3、对空值进行处理,替换  3.4、增加一列,并对新增列的第一行进行赋值 3.5、将修改后数据保存到原文档  ...
    99+
    2023-09-02
    pandas python 开发语言
  • pandas 使用merge实现百倍加速的操作
    对于非连续数据集,数据可视化时候需要每七天一个采样点。要求是选择此前最新的数据作为当日的数据展示,譬如今天是2019-06-18,而数据集里只有2019-06-15,那就用2019-...
    99+
    2024-04-02
  • pandas归一化与反归一化操作实现
    import numpy as np import pandas as pd import matplotlib.pylab as plt if __name__ == '__m...
    99+
    2023-01-28
    pandas归一化 pandas反归一化
  • ES6中javascript如何实现异步操作
    这篇文章主要为大家展示了“ES6中javascript如何实现异步操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中javascript如何实现异步操作...
    99+
    2024-04-02
  • C#中如何实现长任务操作
    今天就跟大家聊聊有关C#中如何实现长任务操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。许多种类的应用程序都需要长时间操作,比如:执行一个打印任务,请求一个 Web Service...
    99+
    2023-06-18
  • java中如何实现redis限流操作
    这篇文章给大家分享的是有关java中如何实现redis限流操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体操作如下。导入所需依赖<properties>   &nb...
    99+
    2023-06-21
  • 【MySQL】MySQL中如何实现分页操作
    MySQL中的分页操作 一、 背景 什么是分页,就是查询时候数据量太大,一次性返回所有查询结果既耗费网络资源、又降低了查询效率,用户也不可能一下子看完成千上万条数据。所以分页的技术就应运而生。分页可以...
    99+
    2023-09-17
    mysql 数据库 sql
  • 如何在 Spring 中实现同步操作?
    Spring 是一个非常流行的开源框架,它提供了许多功能来帮助开发人员构建优秀的应用程序。其中一个非常重要的功能是同步操作。在本文中,我们将探讨如何在 Spring 中实现同步操作。 一、Spring 中的同步操作 在 Spring 中,同...
    99+
    2023-09-22
    面试 同步 spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作