数据的描述性统计(Python3 实现)

众数(Mode)

众数是统计学名词,在统计分布上具备明显集中趋势点的数值,表明数据的通常水平(众数能够不存在或多于一个)。简单来讲就是指一组数据中出现次数最多的数据值。php

import collections
def Mode(L):
    if L:
        result = []
        counter = collections.Counter(L)
        most = max(counter.values())
        for i in counter:
            if counter[i] == most:
                result += [i]
        return result
    else:
        return 'L 不能为空'
复制代码

运行结果:ios

>>> Mode([1,2,3,3,3,44,4,4,4,5,5])
[3,4]
复制代码

中位数(又称中值或者二分位数,英语:Median)

中位数是统计学中的专有名词,表明一个样本、种群或几率分布中的一个数值,其可将数值集合划分为相等的上下两部分。数组

对于有限的数集,能够经过把全部观察值高低排序后找出正中间的一个做为中位数。若是观察值有偶数个,则中位数不惟一,一般取最中间的两个数值的平均数做为中位数。微信

一个数集中最多有一半的数值小于中位数,也最多有一半的数值大于中位数。若是大于和小于中位数的数值个数均少于一半,那么数集中必有若干值等同于中位数。yii

def Median(L):
    N = len(L)
    if N:
        L.sort()
        if N%2 == 0:
            return (L[int(N/2)-1]+L[int(N/2)])/2
        else:
            return L[int(N/2)]
    else:
        return 'L 不能为空'
复制代码

运行结果:svg

>>> Median([1,4,3,5,6])
4
复制代码

平均数(英语:Mean,或称平均值或算术平均数)

平均数是统计中的一个重要概念。为集中趋势的最经常使用测度值,目的是肯定一组数据的均衡点。ui

def Mean(L):
    N = len(L)
    if N:
        return sum(L)/N
    else:
        return 'L 不能为空'
复制代码

运行结果:es5

>>> Mean([1,4,3,5,6])
3.8
复制代码

分位数(英语:Quantile),亦称分位点

分位点是指用分割点(cut point)将一个随机变量的几率分布范围分为几个具备相同几率的连续区间。spa

分割点的数量比划分出的区间少1,例如3个分割点能分出4个区间。经常使用的有中位数(即二分位数)、四分位数(quartile)等。3d

四分位数是统计学中分位数的一种,即把全部数值由小到大排列并分红四等份,处于三个分割点位置的数值就是四分位数。

def Quartile(L):
    N = len(L)
    if N:
        L.sort()
        if N%2:
             return [Median(L[:int(N/2)]), Median(L), Median(L[int(N/2)+1:])] # 直接调用上面写好的方法
             
        else:
            return [Median(L[:int(N/2)]), Median(L), Median(L[int(N/2):])]
        
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>>Quartile([7,15,36,39,40,41])
[15, 37.5, 40]
复制代码

极差(英语:range,符号R)

极差又称全距,用来表示统计资料中的变异量数(英语:measures of variation),为最大值与最小值之间的差额,即最大值减最小值后所得数值。

def R(L):
    N = len(L)
    if N:
        return max(L)-min(L)
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>> R([2,3,5,6,7])
5
复制代码

加权平均数

加权平均数与算术平均数相似,不一样点在于,数据中的每一个点对于平均数的贡献并非相等的,有些点要比其余的点更加剧要。 加权平均数的概念在描述统计学中具备重要的意义,而且在其余数学领域产生了更通常的形式。 若是全部的权重相同且等于一,那么加权平均数与算术平均数相同。 若是全部的权值皆等于1,此时加权平均数便等于算术平均数。

def WeightedAverage(L,W):
    N = len(L)
    M = len(W)
    if N and M:
        if M == N:
            return sum([L[i]*W[i] for i in range(N)])/sum(W)
        else:
            return 'L 和 W 的长度必须是相同的'
    else:
        return 'N 或 M 不能为空'
复制代码

运行结果:

>>> WeightedAverage([1,2,3],[1,2,3])
2.3333333333333335
复制代码

几何平均数

几何平均数是一种均值,它经过使用它们的值的乘积来指示一组数字的集中趋势或典型值,经过 n 个数据相乘后开 n 次方获得。

from functools import reduce
def GeometricMean(L):
    N = len(L)
    if N:
        product = reduce(lambda x,y:x*y, L)
        return pow(product, 1/N)
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>> GeometricMean([1,1,1,16])
2.0
复制代码

方差(英语:Variance)

方差是应用数学里的专有名词。在几率论和统计学中,一个随机变量的方差描述的是它的离散程度,也就是该变量离其指望值的距离。

将各个偏差将之平方(而非取绝对值,使之确定为正数),相加以后再除以总数,透过这样的方式来算出各个数据分布、零散(相对中心点)的程度。

统计中的方差(样本方差)是每一个样本值与全体样本值的平均数之差的平方值的平均数。

def Variance(L):
    N = len(L)
    if N:
        return sum(map(lambda x:(x-Mean(L))**2, L))/N
    else:
        return 'L 不能为空'
    
>>> Variance([1,2,3,4,5,6,7])
4.0
复制代码

标准差(又称标准误差、均方差,英语:Standard Deviation,缩写SD)

标准差是数学符号σ(sigma),在几率统计中最常使用做为测量一组数值的离散程度之用。

标准差定义:为方差开算术平方根,反映组内个体间的离散程度。

def Standard_Deviation(L):
    N = len(L)
    if N:
        return pow(Variance(L), 1/2)
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>> Standard_Deviation([1,0,1,2]) 
0.7071067811865476
复制代码

平均差(Mean Deviation)

平均差是表示各个变量值之间差别程度的数值之一。指各个变量值同平均数的离差绝对值的算术平均数。

def Mean_Deviation(L):
    N = len(L)
    if N:
        return sum(map(lambda x:abs(x-Mean(L)), L))/N
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>> Mean_Deviation([1,2])
0.5
复制代码

异众比率(variation ratio)

异众比率是统计学名词,是统计学当中研究现象离中趋势的指标之一。

异众比率指的是整体中非众数次数与整体所有次数之比。换句话说,异众比率指非众数组的频数占总频数的比例。

def Variation_Ratio(L):
    N = len(L)
    count = 0
    if N:
        mode = Mode(L)
        for i in L:
            if i not in mode:
                count+=1
        return count/N
            
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>> Variation_Ratio([1,2,3,3,4,4])
0.3333333333333333
复制代码

离散系数(coefficient of variation)

离散系数是几率分布离散程度的一个归一化量度,其定义为标准差与平均值之比。

def Coefficient_Of_Variation(L):
    N = len(L)
    if N:
        mean = Mean(L)
        return Standard_Deviation(L)/mean
    else:
        return 'L 不能为空'
复制代码

运行结果:

>>> Coefficient_Of_Variation([1,2])
0.3333333333333333
复制代码

偏态系数

偏态系数以平均值与中位数之差对标准差之比率来衡量偏斜的程度,用SK表示偏斜系数:偏态系数小于0,由于平均数在众数之左,是一种左偏的分布,又称为负偏。偏态系数大于0,由于均值在众数之右,是一种右偏的分布,又称为正偏。

def Skew_Coefficient(L):
    N = len(L)
    if N:
        mean = Mean(L)
        median = Median(L)
        sd = Standard_Deviation(L)
        return (mean-median)/sd
    return 'L 不能为空'
复制代码

运行结果:

>>> Skew_Coefficient([1,0,1,2,2,3,4,2,5,2,1])
0.06593804733957866
复制代码

峰度(peakedness;kurtosis)又称峰态系数。

表征几率密度分布曲线在平均值处峰值高低的特征数。直观看来,峰度反映了峰部的尖度。样本的峰度是和正态分布相比较而言统计量,若是峰度大于三,峰的形状比较尖,比正态分布峰要陡峭。反之亦然。

在统计学中,峰度(Kurtosis)衡量实数随机变量几率分布的峰态。峰度高就意味着方差增大是由低频度的大于或小于平均值的极端差值引发的。

感谢支持
支付宝

支付宝

微信

微信
相关文章
相关标签/搜索