数据的描述性统计-python实现

本文通过一个班级学生的数学成绩集合,详细介绍了数据集中趋势和离中趋势的各项指标计算方法,包括众数、中位数、算术平均数、加权平均数、几何平均数、极差、平均差、方差、标准差和分位数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据的集中趋势

  1. 众数

    某个班级学生生的数学成绩集合为{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)
    
  2. 中位数

    ##中位数
    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
    
  3. 算数平均数

    ##算数平均数
    def arithmeticMean(list):
    	length = len(list)
    	sum = 0
    	for i in list:
    		sum += i
    	return sum/length
    	
    print(arithmeticMean(data))
    

    输出结果为:

    84.2
    
  4. 加权平均数

    ##加权平均数
    ##假设每个学生数学成绩的权重为:
    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. 几何平均数

    ##几何平均数
    ##假设苹果手机生产流水线有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
    

数据的离中趋势

接下来还是以上面某个班级学生生的数学成绩集合为例来描述该集合的离中趋势指标

  1. 极差

    ##极差
    def fullDistance(list):
    	list.sort()
    	return list[-1] - list[0]
    	
    print(fullDistance(data))
    

    输出结果:

    34
    
  2. 平均差

    ##平均差
    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
    
  3. 方差

    ##方差
    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
    
  4. 标准差

    ##标准差
    def standardDeviation(list):
    	return pow(variance(list),1/2)
    	
    print(standardDeviation(data))
    

    输出结果:

    10.457533169921097
    
  5. 分位数

    ##分位数
    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}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值