9、众数

 

众数,一组数字中出现频率最多的数。

 

使用 c 指代 Counter 对象

most_common() 返回一个列表,每个成员都是一个元组。

每个元组中的第一个元素是最频繁出现的数字,第二个元素是出现的次数。

from collections import Counter


def calculate_mode(numbers):
    c = Counter(numbers)
    # 参数为返回的元组个数,1 表示返回一个,2 表示返回两个,按频数高到低顺序返回
    mode = c.most_common(1)
    return mode[0][0]


if __name__ == '__main__':
    scores = [7, 8, 9, 2, 10, 9, 9, 9, 9, 4, 5, 6, 1, 5, 6, 7, 8, 6, 1, 10]
    mode = calculate_mode(scores)
    print('The mode of the list of numbers is: {0}'.format(mode))

     

出现多个相同个数的众数时:

from collections import Counter


def calculate_mode(numbers):
    c = Counter(numbers)
    numbers_freg = c.most_common()
    max_count = numbers_freg[0][1]

    modes = []
    for num in numbers_freg:
        if num[1] == max_count:
            modes.append(num[0])
    return modes


if __name__ == '__main__':
    scores = [7, 8, 9, 2, 10, 9, 9, 9, 9, 4, 5, 6, 1, 5, 6, 7, 8, 6, 1, 10, 5, 5, 5]
    modes = calculate_mode(scores)
    print('The mode(s) of the list of numbers are: ')
    for mode in modes:
        print(mode)

 

创建频数表:

按出现次数从高到低排序

from collections import Counter


def frequency_table(numbers):
    table = Counter(numbers)
    print('Number\tFrequency')
    for number in table.most_common():
        print('{0}\t{1}'.format(number[0], number[1]))


if __name__ == '__main__':
    scores = [7, 8, 9, 2, 10, 9, 9, 9, 9, 4, 5, 6, 1, 5, 6, 7, 8, 6, 1, 10, 5, 5, 5]
    frequency_table(scores)

     

 

按列表元素从大到小排列

from collections import Counter


def frequency_table(numbers):
    table = Counter(numbers)
    numbers_freq = table.most_common()
    numbers_freq.sort()

    print('Number\tFrequency')
    for number in numbers_freq:
        print('{0}\t{1}'.format(number[0], number[1]))


if __name__ == '__main__':
    scores = [7, 8, 9, 2, 10, 9, 9, 9, 9, 4, 5, 6, 1, 5, 6, 7, 8, 6, 1, 10, 5, 5, 5]
    frequency_table(scores)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值