Python pandas DataFrame中的.Value返回的数组是否具有不同的精度?

Python pandas DataFrame中的.Value返回的数组是否具有不同的精度?,python,arrays,pandas,numpy,precision,Python,Arrays,Pandas,Numpy,Precision,计算pandas列的std我注意到它不同于std,std是从numpy数组计算出来的,由.values方法从同一列返回。精度有差别吗 length = 5 fill = np.random.randn(length) df2 = pd.DataFrame(index=range(length), columns = ["test"]) df2.test = fill pandas = df2.iloc[:,0] array = df2.iloc[:,0].values print(f"panda

计算pandas列的std我注意到它不同于std,std是从numpy数组计算出来的,由.values方法从同一列返回。精度有差别吗

length = 5
fill = np.random.randn(length)
df2 = pd.DataFrame(index=range(length), columns = ["test"])
df2.test = fill
pandas = df2.iloc[:,0]
array = df2.iloc[:,0].values
print(f"pandas std: {pandas.std():0.6f}, numpy std: {array.std():0.6f}")
print(f"Difference: {(pandas.std()/array.std()-1)*100:0.2f}%")

熊猫标准:0.764161,努比标准:0.683486 差额:11.80%


由于这里的数字不多,5之间的差异非常明显。如果只使用两个数字,差异将增长到40%。pandas和结果数组中的数字在精度方面也不同,但我认为这仅仅是因为pandas只显示6位数字,而保留整个十进制长度。

这与浮点值的精度无关;相反,这是熊猫应用的结果,而不是numpy

长话短说,这两个函数都有一个ddof参数,用于确定如何处理标准偏差的原始方差平方

对于numpy,它默认为0,这意味着它将原封不动地返回

另一方面,它默认为1,这意味着它等于numpy乘以N/N-1计算的方差,其中N是您拥有的数据点的数量。如果对pandas对象调用stdddof=0,它将返回与numpy相同的结果