统计学01:均值 中位数 众数

author: Jent|张通

平均数 mean

一组数:23 29 20 32 23 21 33 25
mean: (23+29+20+32+23+21+33+25)/8 = 25.75

L = [23, 29, 20, 32, 23, 21, 33, 25]
mean = sum(L) / 8

中位数 median

比它小和比它大的数的数量同样多,如果总的数量为偶数,取中间两个的平均值
首先将上面的数排序:20, 21, 23, 23, 25, 29, 32, 33 
median: (23+25)/2 = 24

def quick(value):
    '''排序函数
    '''
    if len(value) < 2:
        return value
    mark = value[0]
    smaller = [x for x in value if x < mark]
    equal = [x for x in value if x == mark]
    bigger = [x for x in value if x > mark]
    return quick(smaller) + equal + quick(bigger)
    
L = quick(L)
index = len(L) // 2

if not index:
    mdeian = L[index]
else:
    mdeian = (L[index-1] + L[index]) / 2
print(mdeian)

你也可以用下面的函数方法排序

def insert(value):
    for i in range(1,len(value)):
        temp = value[i]
        pos = i
        for j in range(i-1, -1, -1):
            if value[j] > temp:
                value[j+1] = value[j]
                pos = j
            else:
                pos = j + 1
                break
        value[pos] = temp
    return value

众数 mode

正如它的名字,出现次数最多的数字就是众数

众数可以为多个

def mode_fun(value):
    l = [] 
    d = {} 
    mode = []

    for i in range(len(value)):    # 把数字和对应的数学存入字典
        if value[i] in d: 
            d[value[i]] += 1 
        else: 
            d[value[i]] = 1

    for k, v in d.items():    # item返回元组 
        l.append(v) 

    for k, v in d.items():
        if v == max(l):
            mode.append(k)
    return mode
mode_fun(L)

也可以直接通过import numpy, scipy很快的得出答案


博主个人能力有限,错误在所难免.
如发现错误请不要吝啬,发邮件给博主更正内容,在此提前鸣谢.
Email: JentChang@163.com (来信请注明文章标题,如果附带链接就更方便了)
更多文章在 https://jentchang.github.io/

Copyright©2019 简۰客  JentChang.github.io 一个基于python量化交易主题的博客 Blogger: Jent|张通 Email:JentChang@163.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值