【Pandas与SQL系列】Pandas实现分布函数percent_rank、cume_dist

news2024/11/30 0:30:38

目录

    • 1,分布函数,
      • 1.1,percent_rank()
      • 1.2,cume_dist()
      • 1.3 SQL例子
    • 2,Pandas 实现
    • 3,补充Pandas实现排序

1,分布函数,

应用场景:快速查看某个记录所归属的组内的比例
分布函数分类及基础语法:

percent_rank()over(partition by 分区字段 order by 排序字段 desc/asc);
cume_dist()over (partition by 分区字段 order by 排序字段 desc/asc);

1.1,percent_rank()

显示的结果,每行按照如下公式进行计算: (rank-1)/(rows-1)
rank 为 RANK() 函数产生的序号,rows 为当前窗口的记录总行数
对于重复值,取重复值的第一行记录的位置

1.2,cume_dist()

显示的结果,每行按照如下公式进行计算:rank/rows
rank 为 RANK() 函数产生的序号,rows 为当前窗口的记录总行数
对于重复值,取重复值的最后一行记录的位置

1.3 SQL例子

select 
uid,exam_id,score,
rank() over(partition by exam_id order  by score desc) ranks,
count(score) over(partition by exam_id order  by score desc) row_num,
percent_rank() over(partition by exam_id order  by score desc) percent_ranks,
cume_dist() OVER (partition by exam_id order  by score desc) as cume_dists
from exam_record

输出结果:
在这里插入图片描述

2,Pandas 实现

import pandas as pd
test_df = pd.read_csv('../data/test.csv',dtype={'uid':object,'exam_id':object})
test_df.sort_values(by=['exam_id','score'],ascending=[True,False],inplace=True)

test_df['rank'] = test_df.groupby(['exam_id'])['score'].rank(ascending=False,method='min')  ##分组排序,method='min' 等同于 rank()
test_df['row_num'] = test_df.groupby(['exam_id'])['score'].transform('count')  ##分组,使用transform,返回与输入相同尺寸的对象
test_df['percent_rank'] = test_df.apply(lambda x:(x['rank']-1)/(x['row_num']-1),axis=1)  ## 计算 percent_rank
test_df['cume_dist'] = test_df.apply(lambda x:x['rank']/x['row_num'],axis=1)  ## 计算 cume_dist

test_df

输出结果:
在这里插入图片描述

3,补充Pandas实现排序

import pandas as pd
test_df2 = pd.read_csv('../data/test.csv',dtype={'uid':object,'exam_id':object})
test_df2.sort_values(by=['exam_id','score'],ascending=[True,False],inplace=True)
test_df2['row_number'] = test_df2.groupby(['exam_id'])['score'].rank(ascending=False,method='first') ## method='first' 等同于 row_number()
test_df2['rank'] = test_df2.groupby(['exam_id'])['score'].rank(ascending=False,method='min')    ## method='min' 等同于 rank()
test_df2['dense_rank'] = test_df2.groupby(['exam_id'])['score'].rank(ascending=False,method='dense') ## method='dense' 等同于 dense_rank()
test_df2

输出结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

asp.net952-sqlserver学生成绩信息管理系统开发

本学生管理系统主要学校内部提供服务,系统分为管理员,教师和学生三部分。 本研究课题重点主要包括了下面几大模块:用户登录,管理员管理,教师信息管理,学生信息管理,课程信息管理,考试信息管理,成绩信息管理系统设置等功能。这几个…

基于深度自编码网络实现轴承故障诊断

1.网络模型(数据集为CWRU) 代码实现了一个基于DAE的分类模型,用于对给定数据集进行分类。首先,通过DAE模型对原始数据进行特征提取和降维,然后使用分类模型将提取的特征与标签相匹配,以便对新数据进行分类。 代码的主要流程: 导…

用激光点云估算建筑高度【PDAL|PostgreSQL】

LiDAR 数据可以非常强大地提取城市规模的地面和物体的高程。 在 One Concern,我们正在使用 LiDAR 数据提取地面和建筑物高程,以改进进入我们的自然灾害模型的暴露信息,最终估计洪水和地震的影响。 由于 3DEP 项目预计将在 2023 年之前收集全…

STM32------GPIO

GPIO 一、介绍 1、1 什么是GPIO? 输入输出端口 1、2 GPIO特点 1、不同封装IO数量不一样。 2、快速翻转,每次翻转最快只需要两个时钟周期。 3、每个IO都可以做中断。 4、支持8种工作模式。 1、3 GPIO电气特性 STM32工作电压范围:2~3…

【C进阶】通讯录的实现(静态+动态)

目录 前言: 一.静态通讯录的实现 1.关于通讯录的前期准备 (1)菜单的打印 (2)建立一个联系人的信息 (3)通讯录整体 (4)宏定义常量 (5)主函数菜单选项的功能 2.通讯录的功能实现 (1)初始化通讯录 (2)增加指定联系人 (3) 展示通讯录 "FindByName函数" (4)删…

Autosar 规范接口之SPI

Autosar SPI 概述(Specification of SPI Handler/Driver ) 基础知识介绍 在AutoSar标准中,与SPI通讯相关的三个术语:Channel、Job和Sequence。 1个Channel对应1个发送缓冲区和1接收缓冲区;1个Job对应着1次SPI通讯发送…

(第45册)HTML5网页游戏设计从基础到开发(第2版·微课视频版)

HTML5是W3C组织近年来发布的一项引起业内轰动的Web新标准。它几乎颠覆现有Web应用, HTML5从根本上改变了开发商开发web应用的方式,从桌面浏览器到移动应用,这种语言和标准都正在影响将继续影响着各种操作平台。 本书是第2版,第1版2018年出版,经历6次印刷…

【项目开发】GoFrame+Vue项目部署到阿里云服务器

前言 本来想都用docker部署的,结果学艺实在是不精,只能先这么委曲求全宝塔页面的反向代理一直无法生效,用了重定向跳转页面宝塔的网站也可以构建go项目 背景 后端使用GoFrame框架,前端使用Vue 3 TypeScript Vite,…

Windows Cygwin 配置

Windows Cygwin 配置 一、什么是Cygwin? Cygwin,原Cygnus出品(已被红帽收购),目前是RedHat名下的项目。项目的目的是提供运行于 Windows 平台的类 Unix 环境(以 GNU 工具为代表)。为了达到这个…

learn C++ NO.4 ——类和对象(2)

1.类的6个默认成员函数 1.1.默认成员函数的概念 在 C 中,如果没有显式定义类的构造函数、析构函数、拷贝构造函数和赋值运算符重载函数,编译器会自动生成这些函数,这些函数被称为默认成员函数。 class Date { };初步了解了默认成员函数&am…

pytorch实战10:基于pytorch简单实现CGAN

基于pytorch简单实现CGAN 前言 ​ 最近在看经典的卷积网络架构,打算自己尝试复现一下,在此系列文章中,会参考很多文章,有些已经忘记了出处,所以就不贴链接了,希望大家理解。 ​ 完整的代码在最后。 本系列…

离散数学下 ---格与布尔代数

(一)目录 格的定义及性质 子格 分配格 有补格 布尔代数 (二) 内容 格的定义与性质 补充点: 格与布尔代数,它们与群的基本不同之处是:格与布尔代数的基集都是一个偏序集。 格是一个具…

华硕主板win11设置关机状态下USB接口不通电

华硕主板win11设置关机状态下USB接口不通电 我新装机子在关机之后usb还是通电,导致一些外接设备显示灯常亮着非常不方便。因此我尝试把其关掉。 我的是华硕主板,不同主板可能设置方式不一样,请注意。 请按照如下步骤操作: 计算机…

NetApp FAS2554故障灯常亮case处理过程分享

近期处理了一个NetApp FAS2554前面故障灯一直点亮的case,本文对于分析过程和最终的问题发现做一个分享,欢迎讨论,可以add wechat at StorageExpert。 外观检查: 客户反馈,一套FAS2554存储,没有任何扩展柜…

文献阅读(52)—— Integration self-attention and convolution

文献阅读(52)—— Integration self-attention and convolution 文章目录 文献阅读(52)—— Integration self-attention and convolution先验知识/知识拓展文章结构背景文章方法1. Relating Self-Attention with Convolution 文章…

C++11 函数对象、Lambda表达式 绑定器

1. 函数对象和绑定器 函数对象&#xff1a; 重载了operator()运算符的类的对象。 STL中的原本的绑定器&#xff1a; STL中的绑定器可将二元函数对象绑定为一元函数对象。有如下示例帮助回顾&#xff1a; #include <iostream> #include <vector> #include <…

「 计算机网络 」Cookie、Session、Token、JWT 原理详解

「 计算机网络 」Cookie、Session、Token、JWT 原理详解 参考&鸣谢 傻傻分不清之 Cookie、Session、Token、JWT 详解 Cookie&#xff0c;Session&#xff0c;Token 一文彻底搞懂Cookie、Session、Token到底是什么 文章目录 「 计算机网络 」Cookie、Session、Token、JWT 原…

机器学习 day13(正则化,线性回归的正则化)

正则化的思想 如果特征的参数值更小&#xff0c;那么对模型有影响的特征就越少&#xff0c;模型就越简单&#xff0c;因此就不太容易过拟合 如上图所示&#xff0c;成本函数中有W₃和W₄&#xff0c;且他们的系数很大&#xff0c;要想让该成本函数达到最小值&#xff0c;就得使…

基于PostGIS的曲线拐点计算

在这篇博文中&#xff0c;我将介绍一种查找曲线拐点的方法。 一个简单的理解方式&#xff1a;将曲线想象成我们正在行驶的道路&#xff0c;我们想要找到我们停止右转并开始左转或反之的点&#xff0c;如下所示&#xff1a; 我们将展示解决方案的草图和 PostGIS 中的实际实施。…

AR VR 到底哪种技术可以改变未来?

随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术已经成为了当今科技领域的热门话题。VR和AR的出现&#xff0c;为人们带来了前所未有的体验和感受&#xff0c;也为各行各业的发展提供了新的机遇。但是&#xff0c;…