• Python计算均值、方差、标准差、协方差等常用指标的方法——Numpy模块+Pandas模块


    Python计算均值、方差、标准差、协方差等常用指标的方法——Numpy模块+Pandas模块

    一、利用Numpy模块计算均值、方差、标准差等

    函数功能示例
    np.mean(list_a)计算列表list_a的均值若a = [5, 6, 16, 9], 则np.mean(a)=9.0
    np.average(list_a)计算列表list_a的均值若a = [5, 6, 16, 9], 则np.average(a)=9.0
    np.average(list_a, weights = [1, 2, 1, 1])计算列表list_a的加权平均数若a = [5, 6, 16, 9], 则np.average(a, weights = [1, 2, 1, 1])=8.4
    np.var(list_a)计算列表list_a的总体方差若a = [5, 6, 16, 9],则np.var(a) =18.5
    np.var(list_a, ddof = 1)计算列表list_a的样本方差若a = [5, 6, 16, 9],则np.var(a, ddof = 1) =24.67
    np.std(list_a)计算列表list_a的总体标准差若a = [5, 6, 16, 9],则np.std(a) =4.3
    np.std(list_a, ddof = 1)计算列表list_a的样本标准差若a = [5, 6, 16, 9],则np.std(a, ddof = 1) =4.96
    np.median(list_a)计算列表list_a的中位数若a = [5, 6, 16, 9], 则np.median(a)=7.5
    np.mode(list_a)计算列表list_a的众数若a = [5, 6, 16, 9], 则np.mode(a)=7.5
    np.percentile(list_a, (25))计算列表list_a的第1四分位数若a = [1,2,3,4,5,6,7,8,9,10,11,12] ,则np.mode(a)=3.75
    np.percentile(list_a, (50))计算列表list_a的第2四分位数若a = [1,2,3,4,5,6,7,8,9,10,11,12] ,则np.mode(a)=6.5
    np.percentile(list_a, (75))计算列表list_a的第3四分位数若a = [1,2,3,4,5,6,7,8,9,10,11,12] ,则np.mode(a)=9.25
    np.percentile(list_a, (25)) - np.percentile(list_a, (75))计算列表list_a的四分位差
    np.max(list_a) - np.min(list_a))计算列表list_a的极差
    np.std(list_a)/np.mean(list_a))计算列表list_a的离散系数

    参考链接:数据的离散程度度量:极差、四分位差、平均差、方差、标准差、异众比率、离散系数

    均值:

    1. 可以用 numpy 中的 mean方法求得 :
    import numpy as np
    a = [5, 6, 16, 9]
    np.mean(a)
    >>> 
    9.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 可以用numpy 中的 average 方法也能求得简单平均数。此外,它也可以求出 加权平均数 。(average 里面可以跟一个 weights 参数,里面是一个权数的数组)例如:
    import numpy as np
    a = [5, 6, 16, 9]
    np.average(a)
    >>> 
    9.0
    # 加权平均数计算:average 里面可以跟一个 weights 参数,里面是一个权数的数组
    np.average(a, weights = [1, 2, 1, 1])
    >>> 
    8.4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    方差:

    1. 若计算 总体方差(计算时除以样本数 N),可以利用 numpy 中的 var 函数,默认参数置空即可;
    2. 若计算 样本方差(计算时除以 N - 1),可以利用 numpy 中的 var 函数,但需要跟参数 ddof= 1

    典型实例:

    示例1(一维):
    import pnumpy as np
    a = [5, 6, 16, 9]
    
    # 计算总体方差
    np.var(a) 
    >>>
    18.5
    
    # 计算样本方差
    np.var(a, ddof = 1) 
    24.666666666666668
    
    示例2(多维):
    
    b = [[4, 5], [6, 7]]
    print(b)
    >>>
    [[4, 5], [6, 7]]
    
    # 计算矩阵所有元素的方差
    np.var(b) 
    >>>
    1.25
    
    # 计算矩阵每一列的方差
    np.var(b, axis = 0) 
    >>> 
    array([1., 1.])
    
    # 计算矩阵每一行的方差
    np.var(b, axis = 1) 
    >>>
    array([0.25, 0.25])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    标准差:

    1. 若计算 总体标准差(计算时除以样本数 N),可以利用 numpy 中的 std 函数,默认参数置空即可;
    2. 若计算 样本方差(计算时除以 N - 1),可以利用 numpy 中的 std 函数,但需要跟参数 ddof= 1

    典型实例:

    示例1(一维):
    import numpy as np
    a = [5, 6, 16, 9]
    # 计算总体标准差
    np.std(a) 
    >>>
    4.301162633521313
    
    # 计算样本标准差
    np.std(a, ddof = 1 ) 
    >>> 
    4.96655480858378
    
    示例2(多维):
    
    b = [[4, 5], [6, 7]]
    # 计算矩阵所有元素的标准差
    np.std(b) 
    >>> 
    1.118033988749895
    
    # 计算矩阵每一列的标准差
    np.std(b, axis = 0) 
    >>> 
    array([1., 1.])
    
    # 计算矩阵每一列的标准差
    np.std(b, axis = 1) 
    >>> 
    array([0.5, 0.5])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    二、利用Numpy模块计算均值、方差、标准差等

    对于 pandas ,也可以用里面的 mean 函数可以求得所有行或所有列的平均数,例如:

    import pandas as pd
    df = pd.DataFrame(np.array([[85, 68, 90], [82, 63, 88], [84, 90, 78]]), columns=['统计学', '高数', '英语'], index=['张三', '李四', '王五'])
    df
    >>>
    统计学  高数  英语
    张三   85  68  90
    李四   82  63  88
    王五   84  90  78
    
    df.mean() # 显示每一列的平均数
    >>>
    统计学    83.666667
    高数     73.666667
    英语     85.333333
    dtype: float64
    
    df.mean(axis = 1) # 显示每一行的平均数
    >>>
    张三    81.000000
    李四    77.666667
    王五    84.000000
    dtype: float64
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    若计算 某一行或某一列的平均值,则可以使用 df.iloc 选取该行或该列数据,后面跟 mean 函数就能得到,例如:

    df
    >>>
        统计学  高数  英语
    张三   85  68  90
    李四   82  63  88
    王五   84  90  78
    
    df.iloc[0, :].mean()  # 得到第 1 行的平均值
    >>>
    81.0
    
    df.iloc[:, 2].mean() # 得到第 3 列的平均值
    >>> 
    85.33333333333333
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    pandas 中的 var 函数可以计算 样本方差(注意不是总体方差),std 函数可以得到 样本标准差

    若要得到某一行或某一列的方差,则也可用 df.iloc 选取某行或某列,后面再跟 var 函数std 函数即可,例如:

    df.var() # 显示每一列的方差
    >>>
    统计学      2.333333
    高数     206.333333
    英语      41.333333
    dtype: float64
    
    df.var(axis = 1) # 显示每一行的方差
    >>>
    张三    133.000000
    李四    170.333333
    王五     36.000000
    dtype: float64
    
    df.std() # 显示每一列的标准差
    >>> 
    统计学     1.527525
    高数     14.364308
    英语      6.429101
    dtype: float64
    
    df.std(axis = 1) # 显示每一行的标准差
    >>> 
    张三    11.532563
    李四    13.051181
    王五     6.000000
    dtype: float64
    
    df.iloc[0, :].std() # 显示第 1 行的标准差
    >>> 
    11.532562594670797
    
    df.iloc[:, 2].std() # 显示第 3 列的标准差
    >>> 
    6.429100507328636
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    webrtc QOS笔记四 Nack机制浅析
    xshell开启ssh端口转发,通过公网机器访问内网机器
    大数据ClickHouse(十一):MergeTree系列表引擎之AggregatingMergeTree
    如何在移动钱包中搭建一个小程序应用商店
    矩阵分析与应用-4.7-QR分解及其应用
    【Django笔记】5 Django模板
    Flask 使用 JWT(一)
    利用Docker安装Protostar
    PrimalScript通用脚本环境
    【Unity】UnityEvent(一)
  • 原文地址:https://blog.csdn.net/weixin_42782150/article/details/125563026