Pandas 从numpy数组到数据帧会更改值

Pandas 从numpy数组到数据帧会更改值,pandas,numpy,scikit-learn,Pandas,Numpy,Scikit Learn,考虑以下代码: dog = np.random.rand(10, 10) frog = pd.DataFrame(dog, columns = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']) from sklearn.preprocessing import StandardScaler slog = StandardScaler() mog = slog.fit_transform(frog.values) frog[frog.colum

考虑以下代码:

dog = np.random.rand(10, 10)
frog = pd.DataFrame(dog, columns = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
from sklearn.preprocessing import StandardScaler
slog = StandardScaler()
mog = slog.fit_transform(frog.values)
frog[frog.columns] = mog
好的,现在我们应该有一个数据帧,它的值应该是标准的缩放数组。但是:

frog.describe()
给出:

[![describe the dataframe][1]][1]
请注意,标准偏差为1.05

np.std(mog, axis=0)
给出了预期的:

array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
给出了什么?

description
方法计算的值使用样本标准偏差,而
StandardScaler
使用总体标准偏差。两者之间的唯一区别是,与平均值的平方差之和是否除以
n-1
(对于样本st.dev.)或
n
(对于pop.std.dev.)

默认情况下,
numpy.std
计算总体标准偏差,但您可以使用它通过添加参数
ddof=1
来计算样本标准偏差,并且结果与
description
计算的值一致:

In [54]: np.std(mog, axis=0, ddof=1)
Out[54]: 
array([1.05409255, 1.05409255, 1.05409255, 1.05409255, 1.05409255,
       1.05409255, 1.05409255, 1.05409255, 1.05409255, 1.05409255])

我不确定为什么图像没有显示,但所有列的标准偏差为1.05。部分重复: