pandas中std和numpy的np.std区别及说明
作者:AML杰
这篇文章主要介绍了pandas中std和numpy的np.std区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
pandas中std和numpy的std区别
原理
计算标准差时,需要注意numpy中的std和pandas的std在计算标准差时,默认的计算结果会存在不一致的问题。
原因在于默认情况下,
numpy
计算的为总体标准偏差,ddof=0;一般在拥有所有数据的情况下,计算所有数据的标准差时使用,即最终除以n,而非n-1;pandas
计算的为样本标准偏差,ddof=1;一般在只有部分数据,但需要求得总体的标准差时使用,当只有部分数据时,根据统计规律,除以n时计算的标准差往往偏小,因此需要除以n-1,即n-ddof;
实际使用时需要注意,并且根据数据情况选择合适的函数,在数据量较大时,推荐使用numpy进行计算。
速度区别
速度由快到慢依次:
s1 = pd.Series([1,2,3,4,5]) #速度由快至慢 np.std(s1.values) > s1.std(ddof=0) > np.std(s1)
使用numpy和pandas计算平均值、方差、标准差
numpy和pandas都可以实现计算平均值、方差、标准差。
但numpy默认的是总体方差,pandas默认的样本方差,即分母是n-1,是总体的无偏估计。
numpy的语法
# numpy计算方法 import numpy as np x = [1,2,3,4,5] # mean mean = np.mean(x) # variation var = np.var(x) # stander var std = np.std(x,ddof=1) #ddof=1 表示样本方差分母是n-1,无偏估计 doof=0 表示总体标准差
pandas的语法
#pandas计算方法 #axis = 0表示跨行,axis=1表示跨列 import pandas as pd data_dic = {'c1' : [1,2,3], 'c2': [1,3,5]} df = pd.DataFrame(data_dic) #c1列的meam mean = df['c1'].mean() #or mean = df.iloc[:,0].mean() #c1列的var var = df['c1'].var() #计算的无偏样本方差 var = df['c1'].values.var() #计算的是有偏的总体方差 #c1列的std std = df['c1'].std() std = df['c1'].values.std()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。