zoukankan      html  css  js  c++  java
  • python 计算均值、方差、标准差 Numpy,Pandas

    Python 中的 numpy 包 和 pandas 包都能够计算均值、方差等,本文总结一下它们的用法。

    1. Numpy 计算均值、方差、标准差

    一般的均值可以用 numpy 中的 mean 方法求得:

    >>> import numpy as np
    >>> a = [5, 6, 16, 9]
    >>> np.mean(a)
    9.0
    
    

    numpy 中的 average 方法不仅能求得简单平均数,也可以求出加权平均数。average 里面可以跟一个 weights 参数,里面是一个权数的数组,例如:

    >>> np.average(a)
    >>> 9.0
    >>> np.average(a, weights = [1, 2, 1, 1])
    >>> 8.4
    
    

    计算方差时,可以利用 numpy 中的 var 函数,默认是总体方差(计算时除以样本数 N),若需要得到样本方差(计算时除以 N - 1),需要跟参数 ddo f= 1,例如

    >>> import pnumpy as np
    >>> a = [5, 6, 16, 9]
    >>> np.var(a) # 计算总体方差
    18.5
    
    >>> np.var(a, ddof = 1) # 计算样本方差
    24.666666666666668
    
    >>> b = [[4, 5], [6, 7]]
    >>> 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])
    
    

    计算标准差时,可以利用 numpy 中的 std 函数,使用方法与 var 函数很像,默认是总体标准差,若需要得到样本标准差,需要跟参数 ddof =1,

    >>> import pnumpy as np
    >>> a = [5, 6, 16, 9]
    >>> np.std(a) # 计算总体标准差
    4.301162633521313
    
    >>> np.std(a, ddof = 1 ) # 计算样本标准差
    4.96655480858378
    
    >>> np.std(b) # 计算矩阵所有元素的标准差
    1.118033988749895
    
    >>> np.std(b, axis = 0) # 计算矩阵每一列的标准差
    array([1., 1.])
    
    >>> np.std(b, axis = 1) # 计算矩阵每一列的标准差
    array([0.5, 0.5])
    
    

    2. Pandas 计算均值、方差、标准差

    对于 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
    
    

    若要得到某一行或某一列的平均值,则可以使用 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
    
    

    pandas 中的 var 函数可以得到样本方差(注意不是总体方差),std 函数可以得到样本标准差,若要得到某一行或某一列的方差,则也可用 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
    
    

    参考:https://blog.csdn.net/robert_chen1988/article/details/102712946

  • 相关阅读:
    ApiKernel
    ApiUser
    BringWindowToTop完美激活窗口与置顶
    poj2486 Apple Tree【区间dp】
    HYSBZ1588 营业额统计【Splay】
    hdu5115 Dire Wolf【区间dp】
    poj1144 Network【tarjan求割点】
    poj1236 Network of Schools【强连通分量(tarjan)缩点】
    poj2342 Anniversary party【树形dp】
    poj2449 Remmarguts' Date【A*算法】
  • 原文地址:https://www.cnblogs.com/davis12/p/14647134.html
Copyright © 2011-2022 走看看