数据的集中趋势
-
众数
某个班级学生生的数学成绩集合为{87,75,95,87,70,92,87,64,98,87} ,那么该班级数学成绩的众数为:
data = [87,75,95,87,70,92,87,64,98,87] ##众数 def mode(list): d = {} for i in list: if i in d: d[i] +=1; else: d[i] = 1; result = sorted(d.items(),key=lambda d:d[1]) return result[-1] print(mode(data))
输出结果为:
(87, 4)
-
中位数
##中位数 def median(list): list.sort() length = len(list) result = 0 if length % 2 == 1: result = list[length/2] else: result = (list[int(length/2 - 1)] + list[int(length/2)])/2 return result print(median(data))
输出结果为:
87.0
-
算数平均数
##算数平均数 def arithmeticMean(list): length = len(list) sum = 0 for i in list: sum += i return sum/length print(arithmeticMean(data))
输出结果为:
84.2
-
加权平均数
##加权平均数 ##假设每个学生数学成绩的权重为: weight = [0.9,0.9,0.8,0.85,0.95,1,0.7,0.8,0.9,0.75] def weigthedAverage(list,weight): sum = 0 for i in range(10): sum += list[i] * weight[i] return sum/len(list) print(weigthedAverage(data,weight))
输出结果:
71.98
-
几何平均数
##几何平均数 ##假设苹果手机生产流水线有5个环节,各个节点的合格率列表如下 efficiency = [0.98,0.99,0.97,0.99,0.98] def geoMetricMean(list): sum = 1 for i in range(len(list)): sum *= list[i] return pow(sum,1/len(list)) print(geoMetricMean(efficiency))
输出结果:
0.9819714358642401
数据的离中趋势
接下来还是以上面某个班级学生生的数学成绩集合为例来描述该集合的离中趋势指标
-
极差
##极差 def fullDistance(list): list.sort() return list[-1] - list[0] print(fullDistance(data))
输出结果:
34
-
平均差
##平均差 def averageDifference(list): average = arithmeticMean(list) sum = 0 for i in list: sum += abs(i - average) return sum/len(list) print(averageDifference(data))
输出结果:
8.719999999999999
-
方差
##方差 def variance(list): average = arithmeticMean(list) sum = 0 for i in list: sum += pow(i-average,2) return sum/len(list) print(variance(data))
输出结果
109.35999999999999
-
标准差
##标准差 def standardDeviation(list): return pow(variance(list),1/2) print(standardDeviation(data))
输出结果:
10.457533169921097
-
分位数
##分位数 def quantile(list): list.sort() q = {} length = len(list) ##第一四分位 q['Q1'] = list[int(0.25*length)] ##第二四分位 q['Q2'] = list[int(0.5*length)] ##第三四分位 q['Q3'] = list[int(0.7*length)] return q print(quantile(data))
输出结果:
{'Q1': 75, 'Q2': 87, 'Q3': 92}