Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Pandas函数使用-nlargest-nsmallest

Pandas函数使用-nlargest-nsmallest

作者头像
皮大大
发布于 2023-08-25 03:41:32
发布于 2023-08-25 03:41:32
27300
代码可运行
举报
运行总次数:0
代码可运行

nsmallest和nlargest的使用

本文介绍两个函数的使用:nsmallest和nlargest。

官网地址:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.nsmallest.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DataFrame.nsmallest(
    n,  # int类型
    columns,  # 字段名
    keep='first'  # 重复值处理;{‘first’, ‘last’, ‘all’}, default ‘first’
   )

模拟数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = pd.DataFrame({"name":["xiaosun","zhoujuan","xiaozhang","wangfeng","xiaoming","zhangjun"],
                   "score":[100,128,100,150,100,145],
                   "age":[21,25,23,21,25,25],
                   "height":[1.75,1.8,1.77,1.8,1.9,1.71]
                  })
df

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

1

zhoujuan

128

25

1.80

2

xiaozhang

100

23

1.77

3

wangfeng

150

21

1.80

4

xiaoming

100

25

1.90

5

zhangjun

145

25

1.71

nsmallest

默认情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nsmallest(2, "score")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

2

xiaozhang

100

23

1.77

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nsmallest(4, "score")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

2

xiaozhang

100

23

1.77

4

xiaoming

100

25

1.90

1

zhoujuan

128

25

1.80

可以看到默认情况,重复值也会多次计数。

参数keep

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 同上结果,默认first

df.nsmallest(4, "score", keep="first")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

2

xiaozhang

100

23

1.77

4

xiaoming

100

25

1.90

1

zhoujuan

128

25

1.80

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nsmallest(4, "score", keep="last")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

4

xiaoming

100

25

1.90

2

xiaozhang

100

23

1.77

0

xiaosun

100

21

1.75

1

zhoujuan

128

25

1.80

排序的顺序发生了变化,从索引号最大的4开始;

如何理解keep=“all”?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nsmallest(2, "score")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

2

xiaozhang

100

23

1.77

当keep="all"会把全部的信息显示出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nsmallest(2, "score", keep="all")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

2

xiaozhang

100

23

1.77

4

xiaoming

100

25

1.90

多个字段取值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nsmallest(4,["age","height"])

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

3

wangfeng

150

21

1.80

2

xiaozhang

100

23

1.77

5

zhangjun

145

25

1.71

nlargest

该函数是降序排列

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.nlargest.html#pandas.DataFrame.nlargest

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DataFrame.nlargest(
    n,
    columns,
    keep='first'  # {‘first’, ‘last’, ‘all’}, default ‘first’
    )
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nlargest(3,"score")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

3

wangfeng

150

21

1.80

5

zhangjun

145

25

1.71

1

zhoujuan

128

25

1.80

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nlargest(3,"age")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

1

zhoujuan

128

25

1.80

4

xiaoming

100

25

1.90

5

zhangjun

145

25

1.71

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nlargest(2,"age",keep="first")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

1

zhoujuan

128

25

1.8

4

xiaoming

100

25

1.9

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nlargest(2,"age",keep="last")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

5

zhangjun

145

25

1.71

4

xiaoming

100

25

1.90

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.nlargest(2,"age",keep="all")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

1

zhoujuan

128

25

1.80

4

xiaoming

100

25

1.90

5

zhangjun

145

25

1.71

nlargest + drop_duplicates

实现需求:找出年龄age最大的前2位;如果相同年龄,取出一个即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

1

zhoujuan

128

25

1.80

2

xiaozhang

100

23

1.77

3

wangfeng

150

21

1.80

4

xiaoming

100

25

1.90

5

zhangjun

145

25

1.71

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df["age"].value_counts()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
25    3
21    2
23    1
Name: age, dtype: int64

年龄最大为25,且有3位;根据age去重:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1 = df.drop_duplicates(subset=["age"], keep="first")
df1

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

0

xiaosun

100

21

1.75

1

zhoujuan

128

25

1.80

2

xiaozhang

100

23

1.77

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1.nlargest(2,"age")

.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>

name

score

age

height

1

zhoujuan

128

25

1.80

2

xiaozhang

100

23

1.77

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-8-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pandas系列9-数据规整
.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
皮大大
2021/03/02
8430
图解pandas的assign函数
在我们处理数据的时候,有时需要根据某个列进行计算得到一个新列,以便后续使用,相当于是根据已知列得到新的列,这个时候assign函数非常方便。下面通过实例来说明函数的的用法。
皮大大
2023/08/23
4680
Pandas实现因子化
在针对分类型数据的编码中,之前介绍过独热码get_dummies。本文介绍另一种方法:因子化。
皮大大
2023/08/25
1850
MySQL入门整理
pandas中有很多的操作技巧需要我们去挖掘,本文中介绍pandas中的3种操作奇技淫巧,让pandas的操作骚动起来。
皮大大
2021/03/01
4280
MySQL入门整理
一文搞定Pandas数据合并
在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能。
皮大大
2021/03/01
8820
一文搞定Pandas数据合并
Pandas函数-combine-update
本文介绍的是3个Pandas函数的使用,主要是用于DataFrame的数据更新或者合并
皮大大
2023/08/25
2530
NBA之旅1-透视表参数详解
.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
皮大大
2021/03/02
4670
Pandas缺失值填充5大技巧
.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
皮大大
2023/08/25
9820
Pandas索引排序详解
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_index.html
皮大大
2023/08/25
3250
pandas实战-填充数据
本文中记录了最近工作在处理数据的时候遇到的一个需求案例:按照指定的需求填充数据。数据是自己模拟的,类似于业务上的数据。
皮大大
2021/03/01
1K0
pandas实战-填充数据
CSV
写出这篇文章的原因主要是最近在看一本书《Python爬虫开发与实战-从入门到实战》里面提到了CSV这个模块,我立马进行了尝试,发现非常好用,比之前的xlwt好用多了。
皮大大
2021/03/01
1.7K0
CSV
python-for-data-高阶应用transform
{0 or ‘index’, 1 or ‘columns’}, default 0 If 0 or ‘index’: apply function to each column. If 1 or ‘columns’: apply function to each row.
皮大大
2021/03/01
3090
python-for-data-高阶应用transform
python 数据分析工具包 pandas(一)
pandas 是专为 python 编程语言设计的高性能,简单易用的数据结构和数据分析工具库,它建立在 numpy 之上,可以许多第三方库完美集成在同一个科学计算环境中。pandas 被广泛应用于金融,统计,社会科学和许多工程技术领域,处理典型数据分析案例。
我是一条小青蛇
2019/10/23
9590
python 数据分析工具包 pandas(一)
5种方法锁定Pandas缺失值
.dataframe tbody tr th:only-of-type { vertical-align: middle; } <pre><code>.dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; } </code></pre>
皮大大
2023/08/25
1900
Pandas处理文本的3大秘诀
本文介绍Pandas中针对文本数据处理的方法。文本数据也就是我们常说的字符串,Pandas 为 Series 提供了 str 属性,通过它可以方便的对每个元素进行操作。
皮大大
2023/08/23
2640
Pandas读取TXT文件
本文记录的是如何使用Pandas来读取不同情况下的TXT文件,主要是介绍部分常见参数的使用。
皮大大
2023/08/25
3570
朴素贝叶斯做文本分类
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
spark
2018/12/20
9552
Pandas
Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成
GH
2020/03/19
1.6K0
pandas处理字符串方法汇总
字符串是一种常见的数据类型,我们遇到的文本、json数据等都是属于字符串的范畴。Python内置了很多处理字符串的方法,这些方法为我们处理和清洗数据提供了很大的便利。
皮大大
2023/08/25
5050
Pandas Learning
Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。 本文介绍了Pandas的基础用法 Github: https://github.com/yingzk/pandas_learning 本
YingJoy_
2018/04/16
2.3K0
相关推荐
pandas系列9-数据规整
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验