pandas的排序、分组groupby及cumsum累计求和方式
作者:种麦南山下 发布时间:2023-07-20 07:00:39
标签:pandas,groupby,cumsum
生成一列sum_age 对age 进行累加
df['sum_age'] = df['age'].cumsum()
print(df)
生成一列sum_age_new 按照 gender和is_good 对age进行累加
df['sum_age_new'] = df.groupby(['gender','is_good'])['age'].cumsum()
print(df)
根据不同的性别对年龄进行 等级 排序
df['rank_g'] = df.groupby(['gender'])['age'].rank()
print(df)
这里的 rank( ) 即 'rank_g' ,并不是按照1、2、3、4、、依次排
按照官方文档的意思,该函数是沿着某个轴来计算数值数据等级(1到n)。默认情况下,为相等的值分配同一个等级,该等级是这些值的等级的平均值。
例子:
import pandas as pd
obj = pd.Series([7,-5,7,4,2,0,4])
print(obj.rank())
代码对 [7, -5, 7, 4, 2, 0, 4] 进行从小到大地排序,很明显地,可以排成 [-5, 0, 2 ,4, 4, 7, 7],数值7有第6和第7两个位置,那应该排序应该排到第几级?根据官方文档,取平均值,(6+7)/2=6.5,所以两个7的等级都为6.5,同理可得两个4的等级都为(4+5)/2=4.5。
输出:
0 6.5
1 1.0
2 6.5
3 4.5
4 3.0
5 2.0
6 4.5
dtype: float64
对数据排序之后,分组,并累计求和
# 对Start Time进行排序,Connection Type分组,temp进行累计求和cumsum
wsw_1 = wsw.sort_values(['Start Time'])
wsw_1.loc[:, 'Connection Number'] = wsw_1.groupby(['Connection Type'])['temp'].cumsum()
这里如果不对start time排序,Connection Number不会按时间顺序,统计drilling、tripping 的number数
pandas分组排序功能
在一个班级里,学生考试科目有语文、数学、英语,分别有对应的成绩。
现在,想要列出每个科目班级的前五名的情况,要求包含科目、姓名、成绩、名次。
通过以下代码实现:
import pandas as pd
a=['小红','小绿','小蓝','小白','小青','小紫','小粉','小傻','小红','小绿','小蓝','小白','小青','小紫','小粉','小傻','小红','小绿','小蓝','小白','小青','小紫','小粉','小傻']
b=['语文','语文','语文','语文','语文','语文','语文','语文','数学','数学','数学','数学','数学','数学','数学','数学','英语','英语','英语','英语','英语','英语','英语','英语']
c=[97,65,23,43,67,23,55,98,56,45,67,78,98,45,87,65,67,23,55,98,56,45,67,78]
len(a),len(b),len(c)
df=pd.DataFrame({'name':a,'kemu':b,'score':c})
df2=df.sort_values(['kemu','score','name'], ascending=[1, 0,1])
df2['rn']=df2.groupby(['kemu']).rank(method='first',ascending =0)['score']
df2[df2['rn']<=5]
''''
来源:https://blog.csdn.net/conving/article/details/121156130


猜你喜欢
- go语言支持语法自己实现枚举类型我们都知道go语言没有原生的枚举类型,但是做业务开发有些时候没有枚举类型确实不方便前后端联调。我们可以通过g
- 在Centos上部署项目发现一个奇怪的问题,数据库连接一直抛异常。于是花了两个小时搜了各种数据库连接异常导致的原因,最终问题得以解决。同时,
- Django中提供了“信号调度”,用于在框架执行操作时解耦。通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者。Djan
- **使用Python和GDAL给图片加坐标系**假设你已经知道arcgis地理配准(如下图内容),懂一点python。**-目的和背景1.从
- JS调试技巧技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟ch
- 本文实例讲述了Python实现的视频播放器功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#! pytho
- 规律:半角空格的 charCode 为 32, 全角空格为 12288. 其他半角字符 ( 33 – 126 ) 与全角 ( 65281 –
- 随着技术的不断升级,微软的王牌数据库SQL Server 2000正在逐渐淡出人们的视线,而新版的SQL Server 2005正成为企业和
- 类(class)抽象的概念,比如说人类、鸟类、水果、是一个总的称呼,没有具体到某个物体;对象(object,指具体实例,instance);
- 前言本文主要给大家介绍了关于linux/mac安装mysql忘记密码的相关解决办法,分享出来供大家参考借鉴,下面话不多说了,来一起看看详细的
- 本文实例讲述了Go语言通过smtp发送邮件的方法。分享给大家供大家参考。具体实现方法如下:package mainimport ( 
- 本次内容主要是上周内容的延续,主要画出kitti车的行驶的轨迹同样的,我们先来看看最终实现的效果:视频接下来就进入一步步的编码环节。。。&n
- 前言本文主要是积累一下在使用前端的watch开发过程中遇到的问题点和经验。一、watch是什么根据本人的理解,它就是一个 * ,就是说监听的
- 1. imageZMQ库实现imageZMQ库链接:https://github.com/jeffbass/imagezmq该库原本是用于树
- Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行操作!利用Python的多线程,只是利用CPU上下文切换的优势,
- 最近在做公司的某个从项目,基本设计和淘宝登陆页类似: 1)文本框内容为空是,文本框右侧无清除按钮,当有内容时立即显示清除按钮;2)当文本框失
- 1 PHP官网地址:PHP界面:2 下载官网下载地址:Download PHP 或者点击这里下载3 安装① 按照下图下载 php。
- strconv包该包主要实现基本数据类型与其字符串表示的转换。常用函数为Atoi()、Itia()、parse系列、format系列、app
- 在看视频教程的时候提到了[{'a' : 97}, {'b' : 98}, {'c' : 99
- 记录了mysql 8.0.12下载安装教程,分享给大家。下载下载地址如图下载以后将安装包解压到任意文件夹,我这里解压到E盘。安装1、解压以后