`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`會更方便、效率更高,但理解其背后的原理是非常有幫助的。