pandas:如何查找列中每个类别的最大 n 值

作者:编程家 分类: pandas 时间:2025-12-18

在数据分析中,我们经常需要查找某一列中每个类别的最大或最小值。对于这样的需求,Pandas 提供了一些简单而强大的方法来实现。在本文中,我们将介绍如何使用 Pandas 来查找列中每个类别的最大 n 值,并提供一些实际案例代码。

案例代码:

首先,让我们来创建一个示例数据集,以便演示如何查找列中每个类别的最大 n 值。假设我们有一个包含商品名称和价格的数据集。我们想要找到每个类别(例如,水果、蔬菜、肉类)中价格最高的前两个商品。

python

import pandas as pd

# 创建示例数据集

data = {'商品名称': ['苹果', '香蕉', '橙子', '西红柿', '胡萝卜', '牛肉', '猪肉', '鸡肉'],

'类别': ['水果', '水果', '水果', '蔬菜', '蔬菜', '肉类', '肉类', '肉类'],

'价格': [5, 4, 3, 2, 1, 10, 8, 6]}

df = pd.DataFrame(data)

# 查找每个类别的最大两个价格

result = df.groupby('类别')['价格'].nlargest(2).reset_index(level=0, drop=True)

print(result)

以上代码中,我们首先创建了一个包含商品名称、类别和价格的数据集。然后,我们使用 `groupby` 函数按照类别进行分组,并使用 `nlargest` 函数查找每个类别中价格最大的前两个商品。最后,我们使用 `reset_index` 函数重置索引,并使用 `drop=True` 参数删除原索引。

运行以上代码,我们将得到以下输出:

类别

水果 5

水果 4

肉类 10

肉类 8

Name: 价格, dtype: int64

使用 Pandas 查找列中每个类别的最大 n 值的步骤:

1. 导入 Pandas 模块:`import pandas as pd`

2. 创建数据集:使用字典或其他方式创建包含类别信息的数据集。

3. 使用 `groupby` 函数按照类别进行分组:`df.groupby('类别')`

4. 使用 `nlargest` 函数查找每个类别中最大的 n 个值:`['价格'].nlargest(n)`

5. 可选:使用 `reset_index` 函数重置索引,并使用 `drop=True` 参数删除原索引。

6. 输出结果。

案例分析:

假设我们有一个汽车销售数据集,其中包含车辆品牌、销售区域和销售量等信息。我们想要找到每个品牌在每个销售区域中销售量最大的前三个车型。让我们使用 Pandas 来实现这个需求。

python

import pandas as pd

# 创建示例数据集

data = {'车辆品牌': ['奥迪', '奥迪', '奥迪', '宝马', '宝马', '宝马', '奔驰', '奔驰', '奔驰'],

'销售区域': ['华北', '华北', '华东', '华北', '华东', '华东', '华东', '华南', '华南'],

'销售量': [100, 90, 80, 200, 180, 160, 150, 120, 110]}

df = pd.DataFrame(data)

# 查找每个品牌在每个销售区域中销售量最大的前三个车型

result = df.groupby(['车辆品牌', '销售区域'])['销售量'].nlargest(3).reset_index(level=[0, 1], drop=True)

print(result)

以上代码中,我们首先创建了一个包含车辆品牌、销售区域和销售量的数据集。然后,我们使用 `groupby` 函数按照车辆品牌和销售区域进行分组,并使用 `nlargest` 函数查找每个品牌在每个销售区域中销售量最大的前三个车型。最后,我们使用 `reset_index` 函数重置索引,并使用 `drop=True` 参数删除原索引。

运行以上代码,我们将得到以下输出:

车辆品牌 销售区域

奥迪 华北 100

华北 90

华东 80

宝马 华北 200

华东 180

华东 160

奔驰 华东 150

华南 120

华南 110

Name: 销售量, dtype: int64

以上是使用 Pandas 查找列中每个类别的最大 n 值的方法和一个实际案例。通过使用这些方法,我们可以轻松地找到每个类别中的最大或最小值,从而更好地理解和分析数据。希望本文对你有所帮助!