大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • JVM

    • JVM 架构
    • JVM 类加载机制
    • JVM 运行时数据区
    • JVM 垃圾回收机制
    • JVM 性能监控与调优
    • JVM 常见错误
  • Java

    • Java基础

      • Java 基础知识
      • Java 基础 - 枚举类
      • Java 基础 - 异常处理
      • Java 基础 - 泛型
      • Java 基础 - 反射
      • Java 基础 - 代理模式
      • Java 基础 - 注解
    • Java集合

    • Java并发编程

    • Java 开发规范
  • Scala

    • Scala 概述
  • Python

    • Numpy

      • 初识 Numpy
      • ndarray 的创建方式
      • NumPy 的数据类型
      • NumPy 数组计算
      • 拷贝
      • 索引和切片
      • 数学和统计方法
      • 数组形状变换
      • 通用函数
      • 排序
      • 搜索和计数
      • 线性代数
      • 伪随机数生成
      • 广播
      • 文件输入和输出
    • Pandas

      • 初识 Pandas
      • 认识 Series 和 DataFrame
      • Series 和 DataFrame 增删改查
      • Index对象增删改查
      • 普通列和行Index相互转化
      • 快速查看整体信息
      • 数值运算
      • 合并数据集
      • 数值统计与聚合
      • 分组聚合
      • 分类类型
      • 排序和排名
        • 排序
          • 按索引排序
          • 按值排序
        • 排名
      • 时间序列
      • 文件输入与输出
      • 缺失值处理
      • 字符串处理
      • pandas sql
      • 其它
  • 语言基础
  • Python
  • Pandas
Will
2022-08-04
目录

排序和排名

import numpy as np
import pandas as pd
1
2

# 排序

# 按索引排序

s = pd.Series([3, 2, 1, 4, 5, np.nan], index=['d', 'b', 'a', 'c', 'e', 'f'])
s
1
2
d    3.0
b    2.0
a    1.0
c    4.0
e    5.0
f    NaN
dtype: float64
s.sort_index() # 默认 ascending=True, 升序
1
a    1.0
b    2.0
c    4.0
d    3.0
e    5.0
f    NaN
dtype: float64
df = pd.DataFrame(np.arange(12).reshape(3, 4), index=['C', 'A', 'B'], columns=['c', 'a', 'b', 'd'])
df
1
2
c a b d
C 0 1 2 3
A 4 5 6 7
B 8 9 10 11
df.sort_index() # 默认 axis=0,按 index 排序
1
c a b d
A 4 5 6 7
B 8 9 10 11
C 0 1 2 3

# 按值排序

注意:按值排序的时候,无论升序还是降序,NaN 值都是放在最后的

s.sort_values()
1
a    1.0
b    2.0
d    3.0
c    4.0
e    5.0
f    NaN
dtype: float64
# 单列
df.sort_values('a', ascending=False)
1
2
c a b d
B 8 9 10 11
A 4 5 6 7
C 0 1 2 3
# 多列
df.sort_values(['A', 'B'], axis=1)
1
2
c a b d
C 0 1 2 3
A 4 5 6 7
B 8 9 10 11

# 排名

s1 = pd.Series([7, -5, 7, 4, 2, 0, 4])
s1
1
2
0    7
1   -5
2    7
3    4
4    2
5    0
6    4
dtype: int64
s1.rank() # 默认 method='average', 为相同值分配平均排名
1
0    6.5
1    1.0
2    6.5
3    4.5
4    3.0
5    2.0
6    4.5
dtype: float64
s1.rank(method='first') # 按值在原始数据直中出现的顺序排名
1
0    6.0
1    1.0
2    7.0
3    4.0
4    3.0
5    2.0
6    5.0
dtype: float64
s1.rank(method='min') # 使用整个分组的最小排名
1
0    6.0
1    1.0
2    6.0
3    4.0
4    3.0
5    2.0
6    4.0
dtype: float64
s1.rank(method='max') # 使用这个分组的最大排名
1
0    7.0
1    1.0
2    7.0
3    5.0
4    3.0
5    2.0
6    5.0
dtype: float64
s1.rank(method='dense') # 类似于min方法,但是排名是在组件加1,并列值出现是不会有“断点”出现
1
0    5.0
1    1.0
2    5.0
3    4.0
4    3.0
5    2.0
6    4.0
dtype: float64
# DataFrame排名
df = pd.DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1], 'c': [-2, 5, 8, -3]})
df
1
2
3
b a c
0 4 0 -2
1 7 1 5
2 -3 0 8
3 2 1 -3
df.rank(method='first')
1
b a c
0 3.0 1.0 2.0
1 4.0 3.0 3.0
2 1.0 2.0 4.0
3 2.0 4.0 1.0
上次更新: 2023/11/01, 03:11:44

← 分类类型 时间序列→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式