Python语言之统计算法
小标 2018-08-08 来源 : 阅读 1264 评论 0

摘要:本文主要向大家介绍了Python语言之统计算法,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言之统计算法,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

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

import random

case_list = [] #准备个容器,放样例
#随机生成10个1到30的小数,不能重复,把10个小数放到容器里
while len(case_list) < 10:
  rand_float = random.uniform(1,30)
  if rand_float in case_list:
    continue
  case_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 = 0
  for x in xlist:
    n += x
  return n
#统计数据量函数
def len_fun(xlist):
  n = 0
  for x in xlist:
    n += 1
  return n
#累乘,和累加一样
def multiply_fun(xlist):
  n = 1
  for x in xlist:
    n *= x
  return n

#1、算数平均数:加和/个数
sum_fun(case_list)/len_fun(case_list) #结果是19.753

#2、算数平均数回报,平均回报率计算,
'((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
sun_fun(rate_return)/len_fun(rate_return)

#3、中位数,list中间的数,如果count是基数index = len(list)/2,如果是偶数index1 = (len(list)/2 index2 = (len(list)/2)+1)    
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

#4、众数,存在最多的数
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:
  print 'no mode'
mode = max_return

#5、极差,最大-最小,因为已经拍好序,所以index min - index max
case_list[0] - case_list[len_fun(case_list)-1]

#6、四分位数,箱图用的,可以避免极值的影响,分别是index1 = len(list)/4 index2 = 3*len(list)/4
Q1 = case_list[len_fun(case_list)/4]
Q2 = case_list[3*len_fun(case)/4]

#7、几何平均数,和算数平均数不同,把所有都乘过^(1/len(list))
multiply_fun(case_list) ** (1/len_fun(case_list))

#8、几何平均回报,R = 回报,((1+R1)(1+R2)...(1+Rn))^1/(len(count(R))-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
rate_return = [1+rate for rate_return]
multiply_fun(rate_return) ** (1/(len_fun(rate_return)-1))

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程