You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遇多个众数时解决statistics.mode报错并计算众数均值

解决多众数场景下的平均值计算问题

Python的statistics.mode()方法仅支持返回唯一众数,当列表存在多个出现频率相同的众数时会抛出StatisticsError。要实现多众数时计算其平均值,我们可以手动统计元素频率,筛选出所有众数后再计算均值,具体实现如下:

解决方案代码

import statistics
from collections import Counter

# 原始字符串列表,先转换为数值类型
numbers = ['3', '3', '4', '4']
num_list = [int(num) for num in numbers]

# 统计每个元素的出现频率
freq_counter = Counter(num_list)
# 获取最高出现频率
max_freq = max(freq_counter.values())
# 筛选出所有众数
modes = [num for num, count in freq_counter.items() if count == max_freq]

# 计算结果:单众数返回该值,多众数返回平均值
if len(modes) == 1:
    result = modes[0]
else:
    result = statistics.mean(modes)

print(f'Result: {result}')

代码说明

  • 类型转换:原始列表元素是字符串类型,需先转换为int(或float)才能进行数值计算
  • 频率统计:使用collections.Counter可以高效统计每个元素的出现次数
  • 众数筛选:通过对比元素频率与最高频率,找出所有符合条件的众数
  • 结果计算:判断众数数量,单个则直接返回,多个则用statistics.mean()计算平均值

运行上述代码,输入列表['3','3','4','4']会输出Result: 3.5,符合需求。

内容的提问来源于stack exchange,提问作者MYW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:40:38