有的时候我们需要求一个序列中的众数,可以用mode来找到一个或多个众数。
而求众数 得到的往往只是出现次数最最多的那个
可如果现在我想找一个序列中出现次数较多的几个数呢?
它不一定非得是出现次数最多的数,可以试试下面的方法:
import collections
# 要处理的目标列表
aim_list = [1,1,2,2,2,2,3,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,8,8,8]
# 对目标列表处理,字典的键-元素的名称;值-元素出现的个数
dic = collections.Counter(aim_list)
# 拿到值最大的前3项 形式为 (键,值) 的一个个元组
most_value_num = dic.most_common(3)
for (data,times) in most_value_num:
print('出现次数较多的值:',data,'这个值出现的次数:',times)
# 还可以用列表推导式的方式分别将值和次数 以列表的形式存储
most_value_list = [most_value for (most_value,most_counts) in most_value_num]
most_counts_list = [most_counts for (most_value,most_counts) in most_value_num]