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)
。是的,它可以工作。写一个答案,我会打勾。谢谢