GroupBy pandas DataFrame 并选择最常见的值

pandas

1个回答

写回答

15962172594

2025-07-05 02:20

+ 关注

Python
Python

使用Python的Pandas库可以轻松地对数据进行分组和聚合操作。其中一个常用的功能是使用GroupBy方法对DataFrame进行分组操作,并选择每个组中出现频率最高的值。

在介绍具体的方法之前,让我们先看一个简单的例子来理解这个问题。假设我们有一个包含不同城市和对应气温的DataFrame,如下所示:

城市 气温

0 北京 20

1 上海 25

2 北京 18

3 上海 22

4 北京 25

我们希望按照城市对数据进行分组,并选择每个城市中气温出现次数最多的值。

首先,我们需要导入Pandas库,并创建上述DataFrame:

Python

import Pandas as pd

data = {'城市': ['北京', '上海', '北京', '上海', '北京'],

'气温': [20, 25, 18, 22, 25]}

df = pd.DataFrame(data)

接下来,我们可以使用GroupBy方法对数据进行分组,并使用agg方法选择每个组中气温出现频率最高的值:

Python

most_common = df.groupby('城市')['气温'].agg(lambda x: x.value_counts().idxmax())

在上述代码中,我们首先使用groupby方法按照'城市'这一列进行分组。然后,对于每个组,我们使用agg方法应用一个自定义函数。这个函数使用value_counts方法计算每个气温值的频率,并使用idxmax方法选择频率最高的值。

最后,我们可以打印出结果:

Python

print(most_common)

输出结果如下:

城市

上海 25

北京 25

Name: 气温, dtype: int64

可以看到,最终的结果是每个城市中气温出现频率最高的值。

案例代码:

Python

import Pandas as pd

data = {'城市': ['北京', '上海', '北京', '上海', '北京'],

'气温': [20, 25, 18, 22, 25]}

df = pd.DataFrame(data)

most_common = df.groupby('城市')['气温'].agg(lambda x: x.value_counts().idxmax())

print(most_common)

在上述案例中,我们使用了Pandas的GroupBy方法对DataFrame进行分组,并选择每个组中出现频率最高的值。这个功能在实际数据处理和分析中非常有用,可以帮助我们更好地理解数据的分布和特征。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号