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

pandas——groupby操作

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

pandas——groupby操作

Pandas——groupby操作

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


文章目录


一、实验目的

熟练掌握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思想

在这里插入图片描述

上图所示,分解步骤:

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) 

在这里插入图片描述

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

df.groupby('A')  

在这里插入图片描述

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

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

在这里插入图片描述

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) 

在这里插入图片描述

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()  

在这里插入图片描述

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()  

在这里插入图片描述

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')  

在这里插入图片描述

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

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

在这里插入图片描述

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() 

在这里插入图片描述

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

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

在这里插入图片描述

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()  

在这里插入图片描述

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())  

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

注意:通过上面的结果可以看到。聚合完成后每组都有一个组名作为新的索引,使用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)  

在这里插入图片描述

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

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

在这里插入图片描述

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

grouped.describe()  

在这里插入图片描述

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


来源地址:https://blog.csdn.net/AOAIYI/article/details/128994426

免责声明:

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

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

pandas——groupby操作

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

下载Word文档

猜你喜欢

pandas中groupby操作实现

本文主要介绍了pandas中groupby操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-13

pandas中groupby操作如何实现

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

Python3 pandas 操作列表

1.首先需要安装pandas, 安装的时候可能由依赖的包需要安装,根据运行时候的提示,缺少哪个库,就pip 安装哪个库。 2.示例代码import pandas as pdfrom pandas import ExcelWriterEX_P
2023-01-31

Pandas中GroupBy对象如何使用

这篇“Pandas中GroupBy对象如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pandas中GroupBy对象
2023-07-02

pandas常规操作有哪些

这篇文章主要介绍了pandas常规操作有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 聚合函数1. numpy、pandas使用的统计方式在数组中经常使用的聚合方式d
2023-06-27

(新手)使用pandas操作EXCEL

import pandas as pdimport numpy as npfrom pandas import DataFrame,Series#path = r'C:\Users\tsl\Desktop\数据.xlsx'#一列数据前面添加
2023-01-30

sql中groupby的作用

sql group by 子句通过按列分组并聚合数据来组织数据集。它用于:将表按指定列分组应用聚合函数(如 sum、avg、count)计算组值SQL 中 GROUP BY 子句GROUP BY 子句是 SQL 中一个功能强大的工具,它允
sql中groupby的作用
2024-04-29

python之matplotlib和pandas绘图的操作

这篇文章主要介绍python之matplotlib和pandas绘图的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能
2023-06-07

pandas库Series类型与基本操作

pandas读取excel的类型是dataFrame,然后提取每一列是一个Series类型Series类型包括index和values两部分a = pd.Series({'a':1,'b':5})a.indexa.valuesIndex([
2023-01-31

编程热搜

  • 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动态编译

目录