Python numpy var()和pandas var()之间的差异

Python numpy var()和pandas var()之间的差异,python,pandas,numpy,statistics,Python,Pandas,Numpy,Statistics,我最近遇到了一件事,让我注意到numpy.var()和pandas.DataFrame.var()或pandas.Series.var()给出了不同的值。我想知道他们之间有没有区别 这是我的数据集 大陆国家GDP面积 0印度2.79 3.287亚洲 1美国20.54 9.840北美 2中国13.61 9.590亚洲 这是我的密码: 从sklearn.preprocessing导入StandardScaler ss=StandardScaler() catDf.iloc[:,1:-1]=ss

我最近遇到了一件事,让我注意到
numpy.var()
pandas.DataFrame.var()
pandas.Series.var()
给出了不同的值。我想知道他们之间有没有区别

这是我的数据集


大陆国家GDP面积
0印度2.79 3.287亚洲
1美国20.54 9.840北美
2中国13.61 9.590亚洲
这是我的密码:


从sklearn.preprocessing导入StandardScaler
ss=StandardScaler()
catDf.iloc[:,1:-1]=ss.fit_变换(catDf.iloc[:,1:-1])
现在检查变量

# 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.0000000000000002
1.0000000000000002
1.0000000000000002
而它应该是1,因为我在它上面使用了StandardScaler

对于numpy方差

print(catDf.iloc[:,1:-1].values.var())
print(catDf.iloc[:,1].values.var())
print(catDf.iloc[:,2].values.var())
输出是

GDP     1.5
Area    1.5
dtype: float64
GDP     1.5
Area    1.5
dtype: float64
1.5000000000000002
1.5000000000000002
1.0000000000000002
1.0000000000000002
1.0000000000000002
这似乎是正确的。

var
拥有
1
ddof
,默认情况下位于
0

在熊猫中获得的
var
与在numpy中获得的相同

catDf.iloc[:,1:-1].var(ddof=0)
这归根结底是两者之间的区别


请注意,sklearn明确提到他们使用的ddof为0,并且由于它不太可能影响模型性能(因为它只是用于缩放),所以他们没有将其作为可配置参数公开。

var的默认值为
1
ddof
,默认值为
0
。尝试
catDf.iloc[:,1:-1].var(ddof=0)
。是的,它可以工作。写一个答案,我会打勾。谢谢