当前位置:   article > 正文

python常用pandas函数nlargest 和 nsmallest及其手动实现

python常用pandas函数nlargest 和 nsmallest及其手动实现

`pandas`是Python数据分析的重要工具之一,提供了大量便捷的数据操作方法。`nlargest`和`nsmallest`是`pandas`中两个非常实用的函数,它们可以帮助我们快速找出Series或DataFrame中最大或最小的n个值。

### pandas中的`nlargest`和`nsmallest`函数

- `nlargest(n, columns, keep='first')`: 返回DataFrame中某列最大的n个值。

- `nsmallest(n, columns, keep='first')`: 返回DataFrame中某列最小的n个值。

参数解释:

- `n`:一个整数,表示想要返回的元素数量。

- `columns`:用于指定在哪一列中查找最大或最小值。

- `keep`:{'first', 'last', 'all'},这个参数决定了当存在多个相同的最大或最小值时,保留哪些。默认是'first',即仅保留第一次出现的值。

### 示例

假设我们有以下DataFrame:

```python

import pandas as pd

data = {'Name': ['Tom', 'Jerry', 'Mickey', 'Donald', 'Goofy'],

        'Age': [25, 21, 30, 29, 24]}

df = pd.DataFrame(data)

```

- 查找年龄最大的3个角色:

```python

df.nlargest(3, 'Age')

```

- 查找年龄最小的2个角色:

```python

df.nsmallest(2, 'Age')

```

### 手动实现`nlargest`和`nsmallest`

尽管pandas提供了这两个非常方便的函数,但了解它们的手动实现方式也是有益的,这有助于加深对数据操作的理解。

#### 手动实现`nlargest`

```python

def manual_nlargest(df, n, column):

    return df.sort_values(by=column, ascending=False).head(n)

```

#### 手动实现`nsmallest`

```python

def manual_nsmallest(df, n, column):

    return df.sort_values(by=column).head(n)

```

### 示例

使用手动实现的函数:

- 查找年龄最大的3个角色:

```python

manual_nlargest(df, 3, 'Age')

```

- 查找年龄最小的2个角色:

```python

manual_nsmallest(df, 2, 'Age')

```

这些手动实现方法基于DataFrame的`sort_values`函数,通过排序并选择顶部n行实现。虽然在实践中,直接使用pandas提供的`nlargest`和`nsmallest`会更方便、效率更高,但理解其背后的原理是非常有帮助的。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号