DataFrame(13):DataFrame的排序与排名问题_dataframe 排序_数据分析与统计学之美的博客-程序员秘密

技术标签: pandas  python  python排序  sort_index  sort_value  

1、说明

  DataFrame中的排序分为两种,一种是对索引排序,一种是对值进行排序。
  索引排序:sort_index();值排序:sort_values();值排名:rank()
  对于索引排序,涉及到对行索引、列索引的排序,并且还涉及到是升序还是降序。函数df.sort_index(axis= , ascending= , inplace=),需要特别注意这三个参数。axis表示对行操作,还是对列操作;ascending表示升序,还是降序操作。
  对于值排序,同样也是涉及到行、列排序问题,升序、降序排列问题。函数df.sort_values(by= , axis= , ascending= , inplace=),也需要特别注意这几个参数,只是多了一个by操作,需要我们指明是按照哪一行或哪一列,进行排序的。
  注意:axis=0表示对行操作,axis=1表示对列进行操作;ascending=True表示升序,ascending=False表示降序;inplace=True表示对原始DataFrame本身操作,因此不需要赋值操作,inplace=False相当于是对原始DataFrame的拷贝,之后的一些操作都是针对这个拷贝文件进行操作的,因此需要我们赋值给一个变量,保存操作后的结果。

2、索引排序:df.sort_index()

① 对行索引,进行升序排列
df = pd.DataFrame({
    "A":[1,3,5,7,9],
                   "D":[1,2,3,4,5],
                   "C":[3,6,9,12,15],
                   "B":[2,4,6,8,10]},
                   index=list("acbed"))
display(df)
display(id(df))

df.sort_index(axis=0,ascending=True,inplace=True)
display(df)
display(id(df))

df1 = df.sort_index(axis=0,ascending=True)
display(df1)
display(id(df1))

结果如下:
在这里插入图片描述

② 对列索引,进行降序排列
df = pd.DataFrame({
    "A":[1,3,5,7,9],
                   "D":[1,2,3,4,5],
                   "C":[3,6,9,12,15],
                   "B":[2,4,6,8,10]},
                   index=list("acbed"))
display(df)

df.sort_index(axis=1,ascending=False,inplace=True)
display(df)

结果如下:
在这里插入图片描述

3、值排序:df.sort_values()

① 对某一列进行升序排列(有实际意义)
df = pd.DataFrame({
    "A":[3,1,5,9,7],
                   "D":[4,1,2,5,3],
                   "C":[3,15,9,6,12],
                   "B":[2,4,6,10,8]},
                   index=list("acbed"))
display(df)

df.sort_values(by="A",axis=0,ascending=True,inplace=True)
display(df)

结果如下:
在这里插入图片描述

② 对某一行进行降序排列(实际意义不大)
df = pd.DataFrame({
    "A":[3,1,5,9,7],
                   "D":[4,1,2,5,3],
                   "C":[3,15,9,6,12],
                   "B":[2,4,6,10,8]},
                   index=list("acbed"))
display(df)

df.sort_values(by="A",axis=1,ascending=False,inplace=True)
display(df)

结果如下:
在这里插入图片描述

③ 对多列进行联合排序(重要)
df = pd.DataFrame({
    "A":[3,1,3,9,7],
                   "D":[666,1,888,5,3],
                   "C":[3,15,9,6,12],
                   "B":[2,4,6,10,8]},
                   index=list("acbed"))
display(df)

df.sort_values(by=["A","D"],axis=0,ascending=[True,False],inplace=True)
df

结果如下:
在这里插入图片描述
注意:上图中,我们分别按照A和D这个列进行排序,先按照A列做升序排列,当A列中具有相同值的时候,就按照D列做降序排列。

4、sort_values()中的na_position参数

  na_position参数用于设定缺失值的显示位置,first表示缺失值显示在最前面;last表示缺失值显示在最后面。

df = pd.DataFrame({
    "A":[10,8,np.nan,2,4],
                   "D":[1,7,5,3,8],
                   "B":[5,2,8,4,1]},
                   index=list("abcde"))
display(df)

df.sort_values(by="A",axis=0,inplace=True,na_position="first")
display(df)

df.sort_values(by="A",axis=0,inplace=True,na_position="last")
display(df)

结果如下:
在这里插入图片描述

5、“值排名”:rank()函数

1)rank()函数的常用参数说明

在这里插入图片描述

2)原始数据
x = {
    "name":["张三","李四","王五","赵六","郑七","陈八","黄九","孙十"],
     "sales":[60,40,50,40,30,80,70,60]}
df = pd.DataFrame(x)
display(df)

结果如下:
在这里插入图片描述

3)rank()函数使用如下
① method=“first”
x = {
    "name":["张三","李四","王五","赵六","郑七","陈八","黄九","孙十"],
     "sales":[60,40,50,40,30,80,70,60]}
df = pd.DataFrame(x)
display(df)

df["排名"] = df["sales"].rank(method="first")
display(df)

结果如下:
在这里插入图片描述

② method=“min”
x = {
    "name":["张三","李四","王五","赵六","郑七","陈八","黄九","孙十"],
     "sales":[60,40,50,40,30,80,70,60]}
df = pd.DataFrame(x)
display(df)

df["排名"] = df["sales"].rank(method="min")
display(df)

结果如下:
在这里插入图片描述

③ method=“max”
x = {
    "name":["张三","李四","王五","赵六","郑七","陈八","黄九","孙十"],
     "sales":[60,40,50,40,30,80,70,60]}
df = pd.DataFrame(x)
display(df)

df["排名"] = df["sales"].rank(method="max")
display(df)

结果如下:
在这里插入图片描述

④ method=“average”
x = {
    "name":["张三","李四","王五","赵六","郑七","陈八","黄九","孙十"],
     "sales":[60,40,50,40,30,80,70,60]}
df = pd.DataFrame(x)
display(df)

df["排名"] = df["sales"].rank(method="average")
display(df)

结果如下:
在这里插入图片描述

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

智能推荐

linux服务器操作系统推荐 CentOS vs Ubuntu_ubuntu centos 发展_csdnfan的博客-程序员秘密

Ubuntu和CentOS之间选哪个是老生常谈了,在知乎上也有好多争论。我在这里只列出一些区别并不做谁更好的结论,只有更适合的情况。1、Ubuntu是基于Debian架构的,而CentOS是从Red Hat Enterprise Linux派生的。这一点决定了两个系统在多方面必然不同,例如安装软件上Ubuntu使用apt-get软件包管理器下载DEB软件包,CentOS使用yum命令从中央存储库下载并安装RPM软件包。2、Ubuntu追求的是新技术,CentOS则比较老成求稳。Ubuntu上的软

glusterfs:副本卷的数据大小不一样_runing_an_min的博客-程序员秘密

问题描述volume的情况:两副本加一个仲裁盘。偶然发现副本A所在的brick和副本B所在的brick的大小不一样,查看就是使用 du -sh查看的brick的目录。问题分析我们这边发现的原因是这样的:比较大的brick的数据目录下的,.glusterfs目录下存在大量的没有目标文件的硬连接。正常情况下,.glusterfs目录下的文件是硬连接文件,会指向一个文件:有问题的文件,使用stat查看Links为1问题解决使用下面脚本可以检测是不是存在失去目标的硬连接#!/bin/bas

mybatis常用的集中判断语句_mybaitis里面判断语句_qq_42556903的博客-程序员秘密

 属性是存在 属性不存在 属性值是null 判断Collection.size<1或String.length()<1 等于 不等于 大于 大于等于 小于 小于等于、     select id,note from Prod...

机器学习和数据挖掘推荐书单_weixin_30787531的博客-程序员秘密

机器学习和数据挖掘推荐书单有了这些书,再也不愁下了班没妹纸该咋办了。慢慢来,认真学,揭开机器学习和数据挖掘这一神秘的面纱吧!《机器学习实战》:本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部...

专科程序员与本科程序员区别大么?_爱编程的大百的博客-程序员秘密

文章转自乐字节网上流传着一段视频,这个视频在网上引起了很大的争议,视频中某HR说:大公司筛选简历的时候只认985学校毕业的,非985高校毕业的求职者,连简历筛选这一关都过不去。扎心了!程序员表示不服!也有公司称:只要本科生,不要专科生。一.本科含金量有多少?在校期间,本科生学了什么?第一,大部分学校老师水平不够。第二,也有水平好的老师,但他们又都在忙着接项目或发表论文,没有潜心于教?第三,再说说学生。还有大部分学生在社团、游戏、谈恋爱…把精力消磨掉了,真正学习的时间就是考前的一段时间。

随便推点

CTF必备技能丨Linux Pwn入门教程——ROP技术(下)_dfdhxb995397的博客-程序员秘密

Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程。教程仅针对i386/amd64下的Linux Pwn常见的Pwn手法,如栈,堆,整数溢出,格式化字符串,条件竞争等进行介绍,所有环境都会封装在Docker镜像当中,并提供调试用的教学程序,来自历年赛事的原题和带有...

mysql使用WITH ROLLUP分组并统计数据_with rollup统计人数_wooden_people的博客-程序员秘密

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。mysql> SELECT * FROM employee_tbl;+----+--------+---------------------+--------+| id | name | date | singin |+----+--------...

checkbox_weixin_45789779的博客-程序员秘密

.circle-check,.square-check { display: inline-block;}.circle-check>input[type="checkbox"] { width: 1.64rem; height: 1.64rem; display: inline-block; text-align: center; v...

渗透测试简介_月隐柳梢幻玉笙的博客-程序员秘密

病毒:是在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码;●木马:是比较流行的病毒文件,与一般的病毒不同,它不会自我繁殖,也并不“刻意”地去感染其他文件,它通过将自身伪装吸引用户下载执行,向施种木马者提供打开被种主机的门户,使施种者可以任意毁坏、窃取被种者的文件,甚至远程操控被种主机;●肉鸡:指电脑中了木马,或者留了后门,可以被远程操控的机器,现在许多人把有WEBSHELL 权限的机器也叫肉鸡;●抓鸡:利用使用大量的程序的漏洞,使用自动化方式获

学习笔记之资源操作相关函数_enumresourcename_yushiqiang1688的博客-程序员秘密

学习笔记之资源操作相关函数作者:日月明时间:2010-01-22最近遇到了这样个问题:编程实现修改EXE程序的图标,比如把一个EXE程序图标改为pdf、word等图标。。。。。问题终于解决了,其中最主要的就是涉及到资源函数的相应操作。故发此文。。。。。。。。。1、FindResource函数:该函数确定指定模块中指定类型和名称的资源所在位置。HRSRC FindResource( HMODUL