网络编程
位置:首页>> 网络编程>> Python编程>> 详解python中groupby函数通俗易懂

详解python中groupby函数通俗易懂

作者:The-Chosen-One  发布时间:2023-03-08 12:27:36 

标签:python,groupby

一、groupby 能做什么?

python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算!

对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下:

df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式——函数名称)

举例如下:


print(df["评分"].groupby([df["地区"],df["类型"]]).mean())
#上面语句的功能是输出表格所有数据中不同地区不同类型的评分数据平均值

二、单类分组


A.groupby("性别")

详解python中groupby函数通俗易懂

首先,我们有一个变量A,数据类型是DataFrame

想要按照【性别】进行分组

得到的结果是一个Groupby对象,还没有进行任何的运算。

describe()

描述组内数据的基本统计量


A.groupby("性别").describe().unstack()

详解python中groupby函数通俗易懂

* 只有数字类型的列数据才会计算统计

* 示例里面数字类型的数据有两列 【班级】和【身高】

但是,我们并不需要统计班级的均值等信息,只需要【身高】,所以做一下小的改动:


A.groupby("性别")["身高"].describe().unstack()

详解python中groupby函数通俗易懂

unstack()

索引重排

上面的例子里面用到了一个小的技巧,让运算结果更便于对比查看,感兴趣的同学可以自行去除unstack,比较一下显示的效果

三、多类分组


A.groupby( ["班级","性别"])

详解python中groupby函数通俗易懂

单独用groupby,我们得到的还是一个 Groupby 对象。

mean()

组内均值计算

DataFrame的很多函数可以直接运用到Groupby对象上。

详解python中groupby函数通俗易懂

上图截自 pandas 官网 document,这里就不一一细说。

我们还可以一次运用多个函数计算


A.groupby( ["班级","性别"]).agg([np.sum, np.mean, np.std]) # 一次计算了三个

详解python中groupby函数通俗易懂

agg()

分组多个运算

四、时间分组

时间序列可以直接作为index,或者有一列是时间序列,差别不是很大。

这里仅仅演示,某一列为时间序列。

为A 新增一列【生日】,由于分隔符 “/” 的问题,我们查看列属性,【生日】的属性并不是日期类型

详解python中groupby函数通俗易懂

我们想做的是:

1、按照【生日】的【年份】进行分组,看看有多少人是同龄?


A["生日"] = pd.to_datetime(A["生日"],format ="%Y/%m/%d") # 转化为时间格式
A.groupby(A["生日"].apply(lambda x:x.year)).count() # 按照【生日】的【年份】分组

进一步,我们想选拔:

2、同一年作为一个小组,小组内生日靠前的那一位作为小队长:


A.sort_values("生日", inplace=True) # 按时间排序
A.groupby(A["生日"].apply(lambda x:x.year),as_index=False).first()

详解python中groupby函数通俗易懂

as_index=False

保持原来的数据索引结果不变

first()

保留第一个数据

Tail(n=1)

保留最后n个数据

再进一步:

3、想要找到哪个月只有一个人过生日


A.groupby(A["生日"].apply(lambda x:x.month),as_index=False) # 到这里是按月分组
A.groupby(A["生日"].apply(lambda x:x.month),as_index=False).filter(lambda x: len(x)==1)

详解python中groupby函数通俗易懂

filter()

对分组进行过滤,保留满足()条件的分组

来源:https://www.cnblogs.com/Yanjy-OnlyOne/p/11217802.html

0
投稿

猜你喜欢

  • 之前折磨了很久,想在Mysql命令行下导出数据库,但就是每天提示不那个错误,后来才知道其实mysqldump不是mysql命令,因此不能在M
  • 图例如下1.先在detail.html中做好页面上下文链接;然后在view.py中进行数据绑定:2.访问验证以上来源:https://www
  • 交互设计就是研究人与物体之间如何互动的问题,比如按电梯时,按钮立即高亮,同时屏幕上显示电梯现在所在楼层数,这个过程就是交互设计,而电梯按钮用
  • 假设有这样一个需求,你需要从 Redis 中持续不断读取数据,并把这些数据写入到 MongoDB 中。你可能会这样写代码:import js
  • AICodeHelper是一款AI编程助手,旨在帮助程序员提高他们的编码技能。简单的像尝试的代码直接问就行,但是一些复杂的,就得需要写技巧;
  • vue项目页面空白但不报错产生的原因分析vue项目中我们请求一个路由,打开页面发现页面是空白的,产生的主要原因有四种:1.路由重复如果配置了
  • abs(number) 返回绝对值。 array(arglist) 创建一个数组。 asc(string) 返回字符串第一个字符的ansi码
  • 字符串是日常开发中用到最多的数据类型之一,了解字符串首先要明白定界符。定界符有4种,单引号、双引号、heredoc、nowdoc,常使用的单
  • sign签名是用于提供给外部(第三方)调用的接口,调用方需要提供正确的appkey钥匙才能调用,确保了接口的安全性。签名参数sign生成方法
  • 这个代码实现的是   手动点击起点 和 终点  ,程序自动判断距离、触屏时间  完成跳跃 原理(摘自
  • 最近用golang写了一个处理文件的脚本,由于其中涉及到了文件读写,开始使用golang中的 io 包,后来发现golang 中提供了一个b
  • 因为外贸网站,禁止同行抄袭,所以防止中国ip访问访问,访问的时候有密码提示,这样的代码如何写.请给一个提示.或者有好的代码,请分享下。 &n
  • 本文实例为大家分享了python实现ftp文件传输的具体代码,供大家参考,具体内容如下主要步骤可以分为以下几步:1.读取文件名2.检测文件是
  • arguments定义所有的函数都有一个自己的arguments对象,用来储存它实际接受到的参数,而不局限于函数声明时所定义的参数列表。它不
  • 介绍这道题是这样的,有一个二叉树,让求出这颗Bt树里面最大的宽度是有几个节点,同时还要求出最大宽度的这些节点在第几层?比如:下面这颗树,它每
  • 本文实例讲述了Laravel框架文件上传功能实现方法。分享给大家供大家参考,具体如下:以Laravel 5.2.45 框架为主,进行文件上传
  • Notepad++是一款不错的编辑器,很轻巧,我很喜欢它。再换个主题,加个代码高亮,看上去就更专业了。如果你是Mac用户,应该听说或使用过T
  • 因为前端课要交一个大作业,刚好工作室的项目需要一个后台管理界面,就自学了一下vue,今天做了一个选项卡切换,最开始的作为菜鸡是用的js做的,
  • SQL SERVER 2012中新增了CHOOSE,该函数可以从值列表返回指定索引处的项。例如:select CHOOSE(3,'A
  • 在本节中,我们将详细介绍 Python 标准库中的 json 模块。JSON(JavaScript Objec
手机版 网络编程 asp之家 www.aspxhome.com