最近遇到的一件事让我注意到numpy.var()
and pandas.DataFrame.var()
or pandas.Series.var()
给出不同的值。我想知道它们之间有什么区别吗?
这是我的数据集。
Country GDP Area Continent
0 India 2.79 3.287 Asia
1 USA 20.54 9.840 North America
2 China 13.61 9.590 Asia
这是我的代码:
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
catDf.iloc[:,1:-1] = ss.fit_transform(catDf.iloc[:,1:-1])
现在检查 Pandas 方差
# Pandas Variance
print(catDf.var())
print(catDf.iloc[:,1:-1].var())
print(catDf.iloc[:,1].var())
print(catDf.iloc[:,2].var())
输出是
GDP 1.5
Area 1.5
dtype: float64
GDP 1.5
Area 1.5
dtype: float64
1.5000000000000002
1.5000000000000002
而它应该是 1,因为我已经使用了 StandardScaler。
对于 numpy 方差
print(catDf.iloc[:,1:-1].values.var())
print(catDf.iloc[:,1].values.var())
print(catDf.iloc[:,2].values.var())
输出是
1.0000000000000002
1.0000000000000002
1.0000000000000002
这似乎是正确的。