前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Python & R 数据结构排序方法大全!建议收藏!

Python & R 数据结构排序方法大全!建议收藏!

作者头像
用户11414625
发布2024-12-20 16:51:26
发布2024-12-20 16:51:26
4200
代码可运行
举报
文章被收录于专栏:生信星球520生信星球520
运行总次数:0
代码可运行

Hi~今天给大家带来Python和R两种语言中各种数据结构的排序方法。这两种语言都是一手一个的必备工具,虽然AI如此发达,但基本功还是要有,掌握它们的排序技巧可以让我们的数据处理更加得心应手!

🐍 Python部分

📊 Python排序方法对比

🎯 1. 列表(List)排序

  • sort()方法,原地修改
  • sorted()函数,不改变原数据
  • 降序参数都是reverse=True
代码语言:javascript
代码运行次数:0
复制
# 创建一个列表
x = [5, 2, 8, 1, 9, 3]
print(x)
代码语言:javascript
代码运行次数:0
复制
[5, 2, 8, 1, 9, 3]
方法1:使用sort()方法,原地修改
代码语言:javascript
代码运行次数:0
复制
x.sort()
print(x)  # 👉 从小到大
代码语言:javascript
代码运行次数:0
复制
[1, 2, 3, 5, 8, 9]
代码语言:javascript
代码运行次数:0
复制
x.sort(reverse=True)
print(x)  # 👉 从大到小
代码语言:javascript
代码运行次数:0
复制
[9, 8, 5, 3, 2, 1]
方法2:使用sorted()函数
代码语言:javascript
代码运行次数:0
复制
x = [5, 2, 8, 1, 9, 3]  # 重新创建列表
x2 = sorted(x) 
print(x2) # 👉 从小到大
代码语言:javascript
代码运行次数:0
复制
[1, 2, 3, 5, 8, 9]
代码语言:javascript
代码运行次数:0
复制
x3 = sorted(x,reverse=True)
print(x3) # 👉 从大到小
代码语言:javascript
代码运行次数:0
复制
[9, 8, 5, 3, 2, 1]

📊 2. NumPy Array排序

  • 用sort()函数
  • 倒序加上[::-1]
代码语言:javascript
代码运行次数:0
复制
import numpy as np

# 创建一个NumPy数组
x = np.array([5, 2, 8, 1, 9, 3])
x
代码语言:javascript
代码运行次数:0
复制
array([5, 2, 8, 1, 9, 3])
代码语言:javascript
代码运行次数:0
复制
# 使用sort()函数
x2 = np.sort(x)
x2 # 升序
代码语言:javascript
代码运行次数:0
复制
array([1, 2, 3, 5, 8, 9])

没有现成的降序参数,但可以用取子集的方式让它倒序排列

代码语言:javascript
代码运行次数:0
复制
x3 = np.sort(x)[::-1]
x3
代码语言:javascript
代码运行次数:0
复制
array([9, 8, 5, 3, 2, 1])

这里用到了切片语法 [start:end:step] :

前面两个冒号是因为start和end省略了,就是指所有元素

当 step 为正数时,从左往右取值

当 step 为负数时,从右往左取值

[::-1] 表示从后往前取所有元素,即反转数组

🔢 3. Series排序

series是数据框里的一列,再输出结果里有两列是因为它和数据框一样有索引(行名)

  • sort_values()方法
  • 降序参数是ascending
代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 创建一个Series
x = pd.Series([5, 2, 8, 1, 9, 3])
print(x)
代码语言:javascript
代码运行次数:0
复制
0    5
1    2
2    8
3    1
4    9
5    3
dtype: int64
代码语言:javascript
代码运行次数:0
复制
# 使用sort_values()方法
print(x.sort_values())  # 升序
代码语言:javascript
代码运行次数:0
复制
3    1
1    2
5    3
0    5
2    8
4    9
dtype: int64
代码语言:javascript
代码运行次数:0
复制
print(x.sort_values(ascending=False))  # 降序

代码语言:javascript
代码运行次数:0
复制
4    9
2    8
0    5
5    3
1    2
3    1
dtype: int64

🎲 4. DataFrame排序

  • sort_values()函数
  • 降序参数是ascending
  • 支持多列排序
代码语言:javascript
代码运行次数:0
复制
import pandas as pd

# 创建一个学生年龄和成绩DataFrame
df = pd.DataFrame({
    'name': ['Tom', 'Amy', 'Jack', 'Lisa'],
    'age': [16, 15, 17, 16],
    'score': [85, 92, 88, 95]
})
print(df)

代码语言:javascript
代码运行次数:0
复制
   name  age  score
0   Tom   16     85
1   Amy   15     92
2  Jack   17     88
3  Lisa   16     95

代码语言:javascript
代码运行次数:0
复制
# 单列排序
print(df.sort_values('score'))

代码语言:javascript
代码运行次数:0
复制
   name  age  score
0   Tom   16     85
2  Jack   17     88
1   Amy   15     92
3  Lisa   16     95

代码语言:javascript
代码运行次数:0
复制
print(df.sort_values('score', ascending=False))

代码语言:javascript
代码运行次数:0
复制
   name  age  score
3  Lisa   16     95
1   Amy   15     92
2  Jack   17     88
0   Tom   16     85

代码语言:javascript
代码运行次数:0
复制
# 多列排序
print(df.sort_values(['age', 'score'], 
      ascending=[True, False]))

代码语言:javascript
代码运行次数:0
复制
   name  age  score
1   Amy   15     92
3  Lisa   16     95
0   Tom   16     85
2  Jack   17     88

多列排序的意思用这个例子来讲:先按照age排序,如果age相同则按照score排序!

📈 R语言部分

📊 R语言排序方法对比

数据结构

排序方法

类型

降序参数

空值处理

Vector

sort()

函数

decreasing=TRUE

默认排在后面

Data Frame

arrange()

函数

desc()

默认排在后面

🥊1.向量排序

代码语言:javascript
代码运行次数:0
复制
# 创建一个向量
x <- c(5, 2, 8, 1, 9, 3)
x  # 看看原始数据

代码语言:javascript
代码运行次数:0
复制
## [1] 5 2 8 1 9 3
代码语言:javascript
代码运行次数:0
复制
# 使用sort()函数
x2 <- sort(x)
x2  # 👉 升序:从小到大
代码语言:javascript
代码运行次数:0
复制
## [1] 1 2 3 5 8 9
代码语言:javascript
代码运行次数:0
复制
x3 <- sort(x, decreasing = TRUE)
x3  # 👉 降序:从大到小
代码语言:javascript
代码运行次数:0
复制
## [1] 9 8 5 3 2 1

🎲2.数据框排序

代码语言:javascript
代码运行次数:0
复制
# 创建一个学生成绩数据框
df <- data.frame(
  name = c("Tom", "Amy", "Jack", "Lisa"),
  age = c(16, 15, 17, 16),
  score = c(85, 92, 88, 95)
)
df
代码语言:javascript
代码运行次数:0
复制
##   name age score
## 1  Tom  16    85
## 2  Amy  15    92
## 3 Jack  17    88
## 4 Lisa  16    95
代码语言:javascript
代码运行次数:0
复制
# 使用dplyr包
library(dplyr)

# 单列排序
df %>% 
  arrange(score)  # 👉 按成绩升序
代码语言:javascript
代码运行次数:0
复制
##   name age score
## 1  Tom  16    85
## 2 Jack  17    88
## 3  Amy  15    92
## 4 Lisa  16    95

代码语言:javascript
代码运行次数:0
复制
df %>% 
  arrange(desc(score))  # 👉 按成绩降序
代码语言:javascript
代码运行次数:0
复制
##   name age score
## 1 Lisa  16    95
## 2  Amy  15    92
## 3 Jack  17    88
## 4  Tom  16    85

代码语言:javascript
代码运行次数:0
复制
# 多列排序
df %>% 
  arrange(age, desc(score))  # 👉 先按年龄升序,再按成绩降序
代码语言:javascript
代码运行次数:0
复制
##   name age score
## 1  Amy  15    92
## 2 Lisa  16    95
## 3  Tom  16    85
## 4 Jack  17    88

🤼 R语言和python用户打起来

还是R语言里面的数据结构简单。

不论是数据框里的一列,还是矩阵里的一行、一列都是向量,没有那么多多余的数据结构呀。

R语言的列表就没什么必要排序了,如果非要排,那完全可以转换成向量再排了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🐍 Python部分
    • 📊 Python排序方法对比
    • 🎯 1. 列表(List)排序
      • 方法1:使用sort()方法,原地修改
      • 方法2:使用sorted()函数
    • 📊 2. NumPy Array排序
    • 🔢 3. Series排序
    • 🎲 4. DataFrame排序
  • 📈 R语言部分
    • 📊 R语言排序方法对比
    • 🥊1.向量排序
    • 🎲2.数据框排序
  • 🤼 R语言和python用户打起来
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档