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)