python numpy中std()和pandas中std()的区别

std()函数就是初高中学的标准差

计算得出的默认标准偏差类型在 numpy 的 .std() 和 pandas 的 .std() 函数之间是不同的。
默认情况下,numpy 计算的是总体标准偏差,ddof = 0。另一方面,pandas 计算的是样本标准偏差,ddof = 1。如果我们知道所有的分数,那么我们就有了总体——因此,要使用 pandas 进行归一化处理,我们需要将“ddof”设置为 0。

在统计学中,多年的经验总结出:

如是总体,标准差公式根号内除以 n,
如是样本,标准差公式根号内除以 (n-1),
因为我们大量接触的是样本,所以普遍使用根号内除以(n-1)。
公式意义 :所有数减去平均值,它的平方和除以数的个数(或个数减一),再把所得值开根号,就是1/2次方,得到的数就是这组数的标准差。


以上参考:https://blog.csdn.net/qq_38486203/article/details/84540260

numpy的scale就是 x-mean/std

import numpy as np

from  sklearn import preprocessing

data = np.array([[3, -1.5, 2, -5.4], [0, 4, -0.3, 2.1], [1, 3.3, -1.9, -4.3]])

print(data.mean(axis=0))

print(data.std(axis=0))

data_standardized = preprocessing.scale(data)

print(data_standardized)


‘’‘以第一列3,0,1为例,其均值为1.333,方差=sqrt((power(3-1.33,2)+power(0-1.33,2)+power(1-1.33,2))/3)=1.247’则标准化为(3-1.333)/1.247=1.3363,大概就是这么一回事情‘’‘


以上参考:https://www.jianshu.com/p/ab84f1a467c7

一个代码小片段帮助理解

#标准差标准化
import pandas as pd

datafile='f:/data/7/7.2/zscoredata.xls'   #需要进行标准化的数据文件;
zscoredfile='f:/data/7/7.2/tmp/zscoreddata.xls'  #标准差化后的数据存储路径文件;

#标准化处理 min是均值 std是标准差
data=pd.read_excel(datafile)

#numpy的scale就是 x-mean/std
data=(data-data.mean(axis=0))/(data.std(axis=0))
#关于axis=0或者1:https://www.cnblogs.com/nyist-/p/7998326.html

data.columns=['z'+i for i in data.columns]  #表头重命名

data.to_excel(zscoredfile,index=False)
发布了94 篇原创文章 · 获赞 20 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/helloworld0906/article/details/103214491