python如何分组统计频数

python如何分组统计频数

作者:Joshua Lee发布时间:2026-01-06阅读时长:0 分钟阅读次数:15

用户关注问题

Q
如何使用Python对数据进行分组并统计每组的频数?

我有一组数据,想按照某个字段进行分组,并统计每个组的出现次数,应该怎么做?

A

Python中通过pandas进行分组频数统计的方法

可以使用pandas库的groupby函数对数据进行分组,接着用size()方法统计每组的频数。例如:
import pandas as pd

df = pd.DataFrame({'类别': ['A', 'B', 'A', 'C', 'B', 'A']})
频数统计结果 = df.groupby('类别').size()
print(频数统计结果)
这样就能得到每个类别的出现次数。

Q
如何在Python中利用collections模块统计元素频数?

除了pandas,还有没有简单的方法统计列表中元素的出现次数?

A

使用collections模块的Counter统计频数

collections模块中的Counter类非常适合统计列表或其他可迭代对象中各元素出现的次数,如下示例:
from collections import Counter

data = ['A', 'B', 'A', 'C', 'B', 'A']
freq = Counter(data)
print(freq)
它会返回一个字典,键是元素,值是频数。

Q
如何用Python对DataFrame特定列进行频数统计并排序?

统计完各组频数后,怎样让结果按照频数从高到低排序?

A

通过pandas的groupby和sort_values实现排序统计

先用groupby和size统计频数,再用sort_values按频数排序,示例如下:
import pandas as pd

df = pd.DataFrame({'类别': ['A', 'B', 'A', 'C', 'B', 'A']})
频数 = df.groupby('类别').size().reset_index(name='count')
频数排序 = 频数.sort_values(by='count', ascending=False)
print(频数排序)
这样输出的结果就是按频数从高到低排列。