
python如何分组统计频数
用户关注问题
我有一组数据,想按照某个字段进行分组,并统计每个组的出现次数,应该怎么做?
Python中通过pandas进行分组频数统计的方法
可以使用pandas库的groupby函数对数据进行分组,接着用size()方法统计每组的频数。例如:
import pandas as pd
df = pd.DataFrame({'类别': ['A', 'B', 'A', 'C', 'B', 'A']})
频数统计结果 = df.groupby('类别').size()
print(频数统计结果)
这样就能得到每个类别的出现次数。
除了pandas,还有没有简单的方法统计列表中元素的出现次数?
使用collections模块的Counter统计频数
collections模块中的Counter类非常适合统计列表或其他可迭代对象中各元素出现的次数,如下示例:
from collections import Counter
data = ['A', 'B', 'A', 'C', 'B', 'A']
freq = Counter(data)
print(freq)
它会返回一个字典,键是元素,值是频数。
统计完各组频数后,怎样让结果按照频数从高到低排序?
通过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(频数排序)
这样输出的结果就是按频数从高到低排列。