python求几何平均_统计算法_探索性统计

importrandom

case_list= [] #准备个容器,放样例#随机生成10个1到30的小数,不能重复,把10个小数放到容器里

while len(case_list) < 10:

rand_float= random.uniform(1,30)if rand_float incase_list:continuecase_list.append(rand_float)

case_list= [round(case,2) for case in case_list] #格式化一下,不然太长不好看,当然这个因需要而定,我为了显示好看,所以格式化保留两位小数#我先执行了个结果

print case_list #结果是,[5.77, 27.21, 27.12, 12.65, 23.12, 25.56, 18.6, 23.75, 4.1, 25.13]

case_list[6] = 23.12 #为了后面众数,弄个相同值出来

print str(case_list) #单独打下面了,方便看

'[5.77, 27.21, 27.12, 12.65, 23.12, 25.56, 23.12, 23.75, 4.1, 25.13]'case_list.sort()#排序,这个算法有很多,单独写,不在这里啰嗦#先写个累加函数,为了方便,就不try了,默认输入的结果都是对的

defsum_fun(xlist):

n=0for x inxlist:

n+=xreturnn#统计数据量函数

deflen_fun(xlist):

n=0for x inxlist:

n+= 1

returnn#累乘,和累加一样

defmultiply_fun(xlist):

n= 1

for x inxlist:

n*=xreturnn#1、算数平均数:加和/个数

def sum_mean_fun(case_list):

sum_mean_num = sum_fun(case_list)/len_fun(case_list)

return sum_mean_num #结果是19.753

#2、算数平均数回报,平均回报率计算,

def sum_mean_rate(case_list):

'((case_list[1]-case_list[0])/case_list(0)+(case_list[2]-case_list[1])/case_list(1)+...(case_list[n]-case_list[n-1])/case_list(n-1))/len(case_list-1)'

n = 1

rate_return = [] #存放回报率

while n < len_fun(case_list):

rate = (case_list[n] - case_list[n-1])/case_list[n-1]

rate_return.append(rate)

n += 1

mean_rate_num = sum_fun(rate_return)/len_fun(rate_return)

return mean_rate_num#3、中位数,list中间的数,如果count是基数index = len(list)/2,如果是偶数index1 = (len(list)/2 index2 = (len(list)/2)+1)

def median_fun(case_list):

if len_fun(case_list)%2 == 1:

median = case_list[(len_fun(case_list)+1)/2-1]

else:

median = (case_list[len_fun(case_list)/2-1] + case_list[len_fun(case_list)/2])/2

return median

#4、众数,存在最多的数

def modes_fun(case_list):

case_list_delre = list(set(case_list)) #去重,这个如果自己写的话可以用分治法,有兴趣的话可以自己写个

count_max = 0

for case_part in case_list_delre:

case_count = case_list.count(case_part)

if case_count > count_max:

count_max = case_count

max_return = case_part

if count_max == 1:

return None

mode = max_return

return mode#5、极差,最大-最小,因为已经拍好序,所以index min - index max

def ext_minus_fun(case_list):

ext_minus_num = case_list[len_fun(case_list)-1] - case_list[0]

return ext_minus_num#6、四分位数,箱图用的,可以避免极值的影响,分别是index1 = len(list)/4 index2 = 3*len(list)/4

def four_bit_fun(case_list):

Q1 = case_list[len_fun(case_list)/4]

Q2 = case_list[3*len_fun(case_list)/4]

return Q1,Q2#7、几何平均数,和算数平均数不同,把所有都乘过^(1/len(list))

def geom_mean_fun(case_list):

geom_mean_num = multiply_fun(case_list) ** (1.0/len_fun(case_list))

return geom_mean_num#8、几何平均回报,R = 回报,((1+R1)(1+R2)...(1+Rn))^1/(len(count(R))-1)

def geom_mean_rate(case_list):

n = 1

rate_return = [] #存放回报率

while n < len_fun(case_list):

rate = (case_list[n] - case_list[n-1])/case_list[n-1]

rate_return.append(rate)

n += 1

rate_return = [1+rate for rate in rate_return]

geom_mean_rate_num = multiply_fun(rate_return) ** (1.0/len_fun(rate_return)) - 1

return geom_mean_rate_num

# 验证

if __name__ == '__main__':

rand_list = create_rand_list(1,30,10)

rand_list.sort()

print rand_list

sum_mean_num = sum_mean_fun(rand_list)

print sum_mean_num

mean_rate_num = sum_mean_rate(rand_list)

print mean_rate_num

median_num = median_fun(rand_list)

print median_num

modes_num = modes_fun(rand_list)

print modes_num

ext_minus_num = ext_minus_fun(rand_list)

print ext_minus_num

four_bit_q1,four_bit_q2 = four_bit_fun(rand_list)

print four_bit_q1

print four_bit_q2

geom_mean_num = geom_mean_fun(rand_list)

print geom_mean_num

geom_mean_rate_num = geom_mean_rate(rand_list)

print geom_mean_rate_num

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值