统计算法_1
2018-07-16 02:50:36来源:博客园 阅读 ()
最近不知道写什么了,基本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))
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 20190710-汉诺塔算法 2019-07-24
- Python输出菱形 2019-07-24
- Python用摘要算法生成token及检验token 2019-07-24
- python算法与数据结构-二叉树的代码实现(46) 2019-07-24
- python算法与数据结构-数据结构中常用树的介绍(45) 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash