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

统计学•目录 统计学•类别 math


平均数 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 (来信请注明文章标题,如果附带链接就更方便了)


上一篇
统计学02:极差 中程数 统计学02:极差 中程数
统计学•目录 统计学•类别 math 极差 range最小值于最大值之差 数值越小越紧密 一组数:65,81,73,58,94,79,67,93,82range: 94-65 = 29 L = [65,81,73,58,94,79,
2018-12-25
本篇
统计学01:均值 中位数 众数 统计学01:均值 中位数 众数
统计学•目录 统计学•类别 math 平均数 mean一组数:23 29 20 32 23 21 33 25mean: (23+29+20+32+23+21+33+25)/8 = 25.75 L = [23, 29, 20, 32, 2
2018-12-25
目录