统计算法_探索性统计

统计算法_探索性统计,第1张

概述最近不知道写什么了,基本python的各种功能百度一下,都能搜到一大把,最近itchat好像很火,不过对这个不是很感冒,等以后有兴趣或者用的上的时候研究研究准备把统计方面的东西再看看,就写一些简单的统计算法吧,其实这些在python里面都有现成的,但是有句名言“不要只会用,还要知道原理”(是哪个名人说的?如果没有,那就算我说的了),所以写这些供学习之用。那么从头再来,循序渐进,先写这些,本来想写个对数函数的,结果发现真TM难,如果谁能写出来麻烦告知下,我也膜拜大神一下1、算数平均数2、算数平均回报3、中位数4、众数5、极差6、四分位数7、几何平均数8、几何平均回报9、对数(没写出来)下面上代码,和往常一样,含说明,为了更容易理解,就不直接用函数了,尽量用最原始的语法写import randomcase_list = [] #准备个容器,放样例#随机生成10个1到30的小数,不能重复,把10个小数放到容器里while len(case_list) < 10:rand_float = random.uniform(1,30)if rand_float in case_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了,默认输入的结果都是对的def sum_fun(xlist):n = 0for x in xlist:n += xreturn n#统计数据量函数def len_fun(xlist):n = 0for x in xlist:n += 1return n#累乘,和累加一样def multiply_fun(xlist):n = 1for x in xlist:n *= xreturn n#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 maxdef 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)/4def 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 

最近不知道写什么了,基本python的各种功能百度一下,都能搜到一大把,最近itchat好像很火,不过对这个不是很感冒,等以后有兴趣或者用的上的时候研究研究准备把统计方面的东西再看看,就写一些简单的统计算法吧,其实这些在python里面都有现成的,但是有句名言“不要只会用,还要知道原理”(是哪个名人说的?如果没有,那就算我说的了),所以写这些供学习之用。那么从头再来,循序渐进,先写这些,本来想写个对数函数的,结果发现真TM难,如果谁能写出来麻烦告知下,我也膜拜大神一下1、算数平均数2、算数平均回报3、中位数4、众数5、极差6、四分位数7、几何平均数8、几何平均回报

9、对数(没写出来)下面上代码,和往常一样,含说明,为了更容易理解,就不直接用函数了,尽量用最原始的语法写

case_List = [] <span >#<span >准备个容器,放样例<span >

<span >随机生成10个1到30的小数,不能重复,把10个小数放到容器里

<span >while len(case_List) < 10<span >:
rand_float = random.uniform(1,30<span >)
<span >if rand_float <span >in<span > case_List:
<span >continue<span >
case_List.append(rand_float)
case_List = [round(case,2) <span >for case <span >in case_List] <span >#<span >格式化一下,不然太长不好看,当然这个因需要而定,我为了显示好看,所以格式化保留两位小数<span >

<span >我先执行了个结果

<span >print case_List <span >#<span >结果是,[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 <span >#<span >为了后面众数,弄个相同值出来
<span >print str(case_List) <span >#<span >单独打下面了,方便看
<span >'<span >[5.77,25.13]<span >'<span >
case_List.sort() <span >#<span >排序,这个算法有很多,单独写,不在这里啰嗦<span >

<span >先写个累加函数,为了方便,就不try了,默认输入的结果都是对的

<span >def<span > sum_fun(xList):
n =<span > 0
<span >for x <span >in<span > xList:
n +=<span > x
<span >return<span > n
<span >#<span >统计数据量函数
<span >def<span > len_fun(xList):
n =<span > 0
<span >for x <span >in<span > xList:
n += 1
<span >return<span > n
<span >#<span >累乘,和累加一样
<span >def<span > multiply_fun(xList):
n = 1
<span >for x <span >in<span > xList:
n *=<span > x
<span >return<span > n

<span >#<span >1、算数平均数:加和/个数
def sum_meanfun(caseList):  sum_mean_num = sumfun(caseList)/lenfun(caseList)  return sum_mean_num <span >#<span >结果是19.753

<span >#<span >2、算数平均数回报,平均回报率计算,
<span >def sum_meanrate(caseList):  '((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 < lenfun(caseList):    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

<span >#<span >3、中位数,List中间的数,如果count是基数index = len(List)/2,如果是偶数index1 = (len(List)/2 index2 = (len(List)/2)+1)
def medianfun(caseList):  if lenfun(caseList)%2 == 1:    median = case_List[(lenfun(caseList)+1)/2-1]  else:    median = (case_List[lenfun(caseList)/2-1] + case_List[lenfun(caseList)/2])/2  return median

<span >#<span >4、众数,存在最多的数
<span >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

<span >#<span >5、极差,最大-最小,因为已经拍好序,所以index min - index max
<span >def ext_minusfun(caseList):  ext_minusnum = caseList[lenfun(caseList)-1] - case_List[0]  return ext_minus_num

<span >#<span >6、四分位数,箱图用的,可以避免极值的影响,分别是index1 = len(List)/4 index2 = 3len(List)/4
<span >def four_bitfun(caseList):  Q1 = case_List[lenfun(caseList)/4]  Q2 = case_List[3
lenfun(caseList)/4]  return Q1,Q2

<span >#<span >7、几何平均数,和算数平均数不同,把所有都乘过^(1/len(List))
<span >def geom_meanfun(caseList):  geom_mean_num = multiplyfun(caseList) ** (1.0/lenfun(caseList))  return geom_mean_num

<span >#<span >8、几何平均回报,R = 回报,((1+R1)(1+R2)...(1+Rn))^1/(len(count(R))-1)
def geom_meanrate(caseList):  n = 1  rate_return = [] #存放回报率  while n < lenfun(caseList):    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 = createrandList(1,30,10)  rand_List.sort()  print rand_List  sum_mean_num = sum_meanfun(randList)  print sum_mean_num  mean_rate_num = sum_meanrate(randList)  print mean_rate_num  median_num = medianfun(randList)  print median_num  modes_num = modesfun(randList)  print modes_num  ext_minus_num = ext_minusfun(randList)  print ext_minus_num  four_bit_q1,four_bit_q2 = four_bitfun(randList)  print four_bit_q1  print four_bit_q2  geom_mean_num = geom_meanfun(randList)  print geom_mean_num  geom_mean_rate_num = geom_meanrate(randList)  print geom_mean_rate_num

总结

以上是内存溢出为你收集整理的统计算法_探索性统计全部内容,希望文章能够帮你解决统计算法_探索性统计所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1208133.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存