Python计算mean、median、mode及range出错,求10月24日前协助
修复Python统计量计算代码并解读统计意义
一、修复后的可运行代码
原代码存在以下核心问题:
- 输入处理错误:直接将空格分隔的输入字符串转成单个
float,未拆分后逐个转换 - 语法错误:
data = (float(input(...))括号未闭合,导致后续代码语法混乱 - 调用错误:已单独导入
mean/mode/median,无需加statistics.前缀 - 变量名错误:定义
xy却打印未定义的x - 未处理无效输入、NaN值,也未计算极差
修复后的可运行代码:
from statistics import mean, median, mode, StatisticsError from math import isnan from itertools import filterfalse # 获取数据集名称 title = input('Definition of data set: ') # 处理输入,转换为数值列表并过滤无效值 input_str = input("Enter a list element separated by space: ") data = [] for num_str in input_str.split(): try: num = float(num_str) data.append(num) except ValueError: print(f"忽略无效输入: {num_str}") # 过滤数据中的NaN值 data = list(filterfalse(isnan, data)) if not data: print("有效数据集为空,请输入正确的数值") else: # 计算各统计量 mean_val = mean(data) median_val = median(data) # 处理无唯一众数的情况 try: mode_val = mode(data) except StatisticsError: mode_val = "无唯一众数" range_val = max(data) - min(data) # 输出结果 print(f"\n【{title}】统计结果:") print(f"均值(Mean): {mean_val:.2f}") print(f"中位数(Median): {median_val:.2f}") print(f"众数(Mode): {mode_val}") print(f"极差(Range): {range_val:.2f}")
二、各统计量的意义与数据解读
1. 均值(Mean)
- 定义:所有数据的算术平均值
- 场景意义:反映数据的整体平均水平,适合对称分布、无极端值的数据集,比如班级学生的平均测验分数。但如果存在极端值(如某学生缺考得0分),均值会被拉低,参考性下降。
2. 中位数(Median)
- 定义:数据从小到大排序后,位于中间位置的数值(偶数个数据取中间两数的均值)
- 场景意义:不受极端值干扰,适合有异常值的场景,比如居民收入统计。少数极高收入者不会影响中位数,能更真实体现大部分人的收入水平。
3. 众数(Mode)
- 定义:数据集中出现次数最多的数值
- 场景意义:体现数据的最常见特征,适合离散或分类数据,比如商场最畅销的鞋码、社区最常见的户型。若所有数据出现次数相同,则无唯一众数。
4. 极差(Range)
- 定义:数据集最大值与最小值的差值
- 场景意义:快速反映数据的波动范围,比如气温日极差能直观看出当天温度变化幅度。但仅依赖极值,无法体现中间数据的分布情况。
三、组合统计量解读数据
- 对比均值与中位数:若二者接近,说明数据分布对称;若均值远大于中位数,数据右偏(存在大极端值);若均值远小于中位数,数据左偏(存在小极端值)
- 众数+均值:比如电商商品分析中,众数代表最受欢迎的品类,均值代表客单价,结合可了解用户消费偏好与整体消费水平
- 极差辅助判断:初步判断数据离散程度,若极差过大,需进一步用方差、标准差分析数据的波动细节
内容的提问来源于stack exchange,提问作者Jocelyn
相关产品推荐
相关产品推荐

