找回密码
 会员注册
查看: 28|回复: 0

深入理解Python中的numpy.var()与numpy.std():方差与标准差的计算艺术

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-12 17:38:45 | 显示全部楼层 |阅读模式
摘要:本文将带你探索Python中的两个重要统计函数——var()与std()的用法及其背后的统计学意义。首先,我们会详细阐述方差的概念,它是衡量一组数值数据离散程度的关键指标,并通过实例演示如何使用numpy.var()计算样本方差与总体方差,以及ddof参数的作用。随后,我们将进一步探讨标准差,它是方差的平方根,直观反映了数据点与均值的平均偏离程度,通过numpy.std()函数实现标准差的计算。此外,文章将进一步拓展不在numpy环境下var()与std()的用法。一、在numpy环境下的var()和std():1.var() 函数:  var() 函数通常指的是 numpy 库中的 numpy.var() 函数,它用来计算给定数组(或一维数组的某轴向)的样本方差或者总体方差,取决于提供的参数。        样本方差:计算的是样本数据集相对于样本平均值的离散程度,计算公式为:         默认情况下:         numpy.var(a,axis=None,dtype=None,out=None,ddof=0,keepdims=False)         要在numpy中计算样本方差,设置 ddof=1 表示Bessel'scorrection,即除以 (n-1)。        总体方差:当 ddof=0 时,计算的是总体方差,此时除数是 n 而不是 n-1。importnumpyasnpdata=np.array([1,2,3,4,5])sample_variance=np.var(data,ddof=1)population_variance=np.var(data,ddof=0)print("样本方差:",sample_variance)print("总体方差:",population_variance)'运行运行2.std() 函数:  std() 函数同样来自 numpy 库,即 numpy.std(),它是方差的算术平方根,因此提供了样本标准差或总体标准差的计算。样本标准差是样本方差的非负平方根,反映的是样本数据点相对于样本均值的平均偏离程度。总体标准差则对应于总体方差的平方根。sample_std_dev=np.std(data,ddof=1)population_std_dev=np.std(data,ddof=0)print("样本标准差:",sample_std_dev)print("总体标准差:",population_std_dev) 二、在pandas环境下的var()和std():        在Pandas库中,var()和std()函数可以直接应用于DataFrame或Series对象上,以计算它们的列(或行)的方差和标准差。importpandasaspd#创建一个简单的DataFramedata={'Column1':[1,2,3,4,5],'Column2':[6,7,8,9,10]}df=pd.DataFrame(data)#计算整个DataFrame所有列的方差variances=df.var()#计算单个列的方差column1_var=df['Column1'].var()#计算整个DataFrame所有列的标准差std_devs=df.std()#计算单个列的标准差column1_std=df['Column1'].std()#使用滚动窗口计算移动方差和标准差df_rolling=df.rolling(window=3).agg({'Column1':['var','std']})#输出结果print("所有列的方差:",variances)print("Column1的方差:",column1_var)print("所有列的标准差:",std_devs)print("Column1的标准差:",column1_std)#滚动窗口计算结果查看print("滚动窗口内Column1的方差与标准差:")print(df_rolling.head(4))'运行运行                 在这个例子中,df.var()和df.std()会默认计算每个变量(列)的样本方差和样本标准差。如果你想计算总体方差,对于Pandas来说没有直接的参数调整,因为Pandas遵循了NumPy的行为,默认采用ddof=1(Bessel'scorrection),要计算总体方差需先将数据集加1再进行计算。而滚动窗口计算则是根据指定的窗口大小滑动计算每个窗口内的方差和标准差。    补充:滚动窗是指选取了一个数字个数为3的窗口(计算3个数的方差和标准差),如1,2,3;2,3,4。因为第一行和第二行数据不足3个,故无法计算出方差和标准差。三、在python标准库下的var()和std():        在标准Python库中并没有名为var()和std()的内置函数用于直接计算数组或列表的方差和标准差,但可以手动编写函数来实现这个功能。defcalculate_variance(lst,sample=True):n=len(lst)mean=sum(lst)/nifsample:variance=sum((xi-mean)**2forxiinlst)/(n-1)else:variance=sum((xi-mean)**2forxiinlst)/nreturnvariancedefcalculate_std_deviation(lst,sample=True):variance=calculate_variance(lst,sample)std_dev=variance**0.5returnstd_dev#示例数据data=[1,2,3,4,5]#计算样本方差和样本标准差sample_variance=calculate_variance(data,sample=True)sample_std_dev=calculate_std_deviation(data,sample=True)#计算总体方差和总体标准差population_variance=calculate_variance(data,sample=False)population_std_dev=calculate_std_deviation(data,sample=False)print("样本方差:",sample_variance)print("样本标准差:",sample_std_dev)print("总体方差:",population_variance)print("总体标准差:",population_std_dev)'运行运行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 02:05 , Processed in 2.676024 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表