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

2024-10-02 00:40:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近遇到了一件事,它让我注意到numpy.var()pandas.DataFrame.var()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 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

这似乎是正确的


Tags: numpydataframepandasvarareassvaluesprint
1条回答
网友
1楼 · 发布于 2024-10-02 00:40:51

默认情况下,pandas{}有ddof{},numpy0

在熊猫身上得到的var和你在努比身上得到的一样

catDf.iloc[:,1:-1].var(ddof=0)

这归结为population variance and sample variance之间的差异

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

相关问题 更多 >

    热门问题