Python:使用pandas和numpy计算标准差的区别

Python042

Python:使用pandas和numpy计算标准差的区别,第1张

首先,普及一下pandas与numpy的区别:

pandas操作的数据集是Series,本质上是列表与字典的混合,常用的数据形式为DataFrame;

numpy操作的数据集是数组或矩阵。

1、对数组求均值、方差、标准差

2、对矩阵求标准差

注意:在求标准差时需要注意几个问题:

1、在统计学中,标准差分为两种:

(1)总体标准差:标准差公式根号内除以n,是有偏的。

(2)样本标准差:标准差公式根号内除以n-1,是无偏的。

2、pandas与numpy在计算标准差时的区别

(1)numpy

         在numpy中计算标准差时,括号内要指定ddof的值,ddof表示自由度,当ddof=0时计的是总体标准差;当ddof=1时计算的是样本标准差,当不为ddof设置值时,其默认为总体标准差。

(2)pandas

         在使用pandas计算标准差时,其与numpy的默认情况是相反的,在默认情况下,pandas计算的标准差为样本标准差。

借助numpy的向量运算来求:

import numpy

narray=numpy.array(nlist)

sum1=narray.sum()

narray2=narray*narray

sum2=narray2.sum()

mean=sum1/N

var=sum2/N-mean**2

可以用numpy模块实现:

import numpy

def cal_mean_std(sum_list_in):

    # type: (list) -> tuple

    N = sum_list_in.__len__()

    narray = numpy.array(sum_list_in)

    sum = narray.sum()

    mean = sum / N

    narray_dev = narray - mean

    narray_dev = narray_dev * narray_dev

    sum_dev = narray_dev.sum()

    DEV = float(sum_dev) / float(N)

    STDEV = numpy.math.sqrt(DEV)

    print "mean:", mean, " DEV:", DEV, " STDEV:", STDEV

    return mean, DEV, STDEV

均值为mean,方差为DEV,标准差是STDEV

传入数据是一个list:sum_list_in