python的groupby中函数详解_详解python中groupby函数通俗易懂-程序员宅基地

技术标签: python的groupby中函数详解  

一、groupby 能做什么?

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

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

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

举例如下:

print(df["评分"].groupby([df["地区"],df["类型"]]).mean())

#上面语句的功能是输出表格所有数据中不同地区不同类型的评分数据平均值

二、单类分组

A.groupby("性别")

202005140954591.png

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

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

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

describe()

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

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

202005140954592.png

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

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

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

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

202005140954593.png

unstack()

索引重排

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

三、多类分组

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

202005140955004.png

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

mean()

组内均值计算

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

202005140955005.png

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

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

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

202005140955006.png

agg()

分组多个运算

四、时间分组

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

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

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

202005140955005.png

我们想做的是:

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

A["生日"] = pd.to_datetime(A["生日"],format ="%Y/%m/%d") # 转化为时间格式

A.groupby(A["生日"].apply(lambda x:x.year)).count() # 按照【生日】的【年份】分组```

进一步,我们想选拔:

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

```python

A.sort_values("生日", inplace=True) # 按时间排序

A.groupby(A["生日"].apply(lambda x:x.year),as_index=False).first()

202005140955006.png

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)

2020514100108265.png?202041410121

filter()

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

以上就是 groupby 最经常用到的功能了。

用 first(),tail()截取每组前后几个数据

用 apply()对每组进行(自定义)函数运算

用 filter()选取满足特定条件的分组

到此这篇关于详解python中groupby函数通俗易懂的文章就介绍到这了,更多相关python groupby函数内容请搜索python博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39583162/article/details/110274866

智能推荐

报“ Got minus one from a read call”的错误-程序员宅基地

文章浏览阅读1.8k次。在部署应用的时候,有时候应用可以直接启动,但偶尔应用却无法启动,报错信息是: java.sql.SQLRecoverableException: IO Error: Got minus one from a read call原因及解决方法我有好几个应用系统需要连接数据库,测试发现如果这个应用在最开始启动就不会报错,如果是启动了好几个应用之后再启动的话就会报错了。 一个应用连接数据库的时候..._error druiddatasource init 903 got minus one from a read call

C语言-第二章C语言的数据类型和变量_位变量类型的符号是-程序员宅基地

文章浏览阅读448次。printf() 的作⽤是将参数⽂本输出到屏幕,就是给printf传进去一些信息,这些信息就叫参数,把参数的信息输出到屏幕上。它名字⾥⾯的 f 代表 format (格式化),表⽰可以 定制输出⽂本的格式。例如:上⾯命令会在屏幕上输出⼀⾏⽂字“Hello World”。printf() 不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换 ⾏。为了让光标移到下⼀⾏的开头,可以在输出⽂本的结尾,添加⼀个换⾏符 \n。_位变量类型的符号是

亲测破解戴尔服务器windows server 2008 的登录密码_怎么扫描winserver2008密码-程序员宅基地

文章浏览阅读858次,点赞22次,收藏20次。然后我看到pe上有个选项“Windows密码破解工具”,看了一下,说可以尝试绕过密码登陆,反正死马当活马医呗,就试试,等待几十秒,一下子看到了黎明的曙光,竟然进入的系统,心情那个激动,赶紧看看是否可以修改密码,进去修改密码时,直接让输入新密码,不像以前,还让你输入原密码,有戏,改了密码后,重启,输入新密码,哈哈哈,竟然成功了。所以让机房的人重启一下服务器,可是后面还是不行,也咨询了客户和知道密码的人,是否更改过密码,都说没有,那没有办法了,无法登陆,难免会被人利用服务器,要感觉想办法夺回来。

for语句循环-程序员宅基地

文章浏览阅读868次,点赞18次,收藏18次。for语句,也称为for循环,是编程语言中的一种控制流程结构,它包含三个基本部分:初始化表达式、条件表达式和后续表达式。初始化表达式:在循环开始之前执行,通常用于初始化循环控制变量。条件表达式:在每次循环开始之前进行判断,如果条件为真,则执行循环体;否则,退出循环。后续表达式:在每次循环结束后执行,通常用于更新循环控制变量的值。初始化:在循环开始之前执行,通常用于初始化循环控制变量。条件:在每次循环开始之前进行判断,如果条件为真,则执行循环体;否则,退出循环。更新。

win10开启关闭防火墙以及报错处理和其他段ip无法连接本机远程桌面-程序员宅基地

文章浏览阅读329次,点赞4次,收藏8次。面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc4 in position 0: invalid continuation byte_smtplib.smtp_ssl()报错unicodedecodeerror: 'utf-8' co-程序员宅基地

文章浏览阅读242次,点赞9次,收藏3次。UnicodeDecodeError_smtplib.smtp_ssl()报错unicodedecodeerror: 'utf-8' codec can't decode byte 0x

随便推点

如何高亮显示文件中选中的相同变量_keil高亮显示所有选中的变量-程序员宅基地

文章浏览阅读9.8k次。比如在a.java中有多个int i,点击i高亮显示文件中出现的所有该i变量,该功能eclipse默认是开启的,也可以通过Windows->Preferences->Java-> Editor-> Mark Occurrences,勾选选项。这时,当你单击一个元素的时候,代码中所有该元素存在的地方都会被高亮显示 _keil高亮显示所有选中的变量

cocos2d-x lua 屏幕适配_main.lua 全屏显示-程序员宅基地

文章浏览阅读2.4k次。转载请注明原文地址:https://segmentfault.com/a/1190000000635287研究了两天屏幕适配,了解了Cocos提供的屏幕适配的方案有下面几种:1, EXACT_FIT使用这个选项,可以保证设计区域完全铺满屏幕,但是可能会出现界面被拉伸。2, SHOW_ALL按原始比例进行缩放,图片不变形,为了保证缩放后较长的边也能完全显示,较短的边剩下的位置会用黑边填充,居中显示。..._main.lua 全屏显示

苹果CMS扩展集成接口,30个后端集成API(含接口文档)_苹果cmsapi对接app文档-程序员宅基地

文章浏览阅读8.1k次。苹果CMS已不用过多介绍了,老牌cms了,很成熟了。可以做很多类型的应用。此套接口,是之前定制开发过APP的一整套接口,之后又增加了代理开卡的功能。共近30个接口,可以玩很多种花样。如果你是个前端工程师,不会写后端,想借助苹果cms二开去做一款APP/小程序/网站. 这套源码已经相当于把后端给你写好了。你直接带着你的原型/思路,连逻辑就好了。 省一半的开发费用。详细可参考:苹果CMS后端接口完整版 源码(含代理提卡功能)_吉吉源码........._苹果cmsapi对接app文档

嵌入式硬件设计(一)|利用 NodeMCU-ESP8266 开发板和继电器结合APP“点灯•blinker”制作Wi-Fi智能开关(附有关硬件详细资料)-程序员宅基地

文章浏览阅读1.7k次,点赞34次,收藏40次。本文主要讲述利用 NodeMCU-ESP8266 开发板和继电器通过手机 APP “ 点灯 • Blinker ” 制作一款能够由手机控制的WiFi 智能开关,从而实现智能物联。_nodemcu

【Java基础知识 8】String、StringBuilder、StringBuffer详解-程序员宅基地

文章浏览阅读877次,点赞8次,收藏19次。从上面的代码就可以看出“+”连接字符串的底层,实际上就是StringBuilder对象通过append,再调用toString完成的。

【Python学习篇】Python基础入门学习——你好Python(一)-程序员宅基地

文章浏览阅读639次,点赞25次,收藏26次。首先,不管Python,我们先明白,什么是编程语言语言:进行沟通交流的表达方式人类翻译官无法沟通,那要怎么做才能和计算机交流呢?以Python为例。

推荐文章

热门文章

相关标签