问题描述
正如您在下面的代码中看到的那样,我以两种不同的方式计算“开放”列中数据的方差。唯一的区别是,在第二个版本中,我获取值,而不是包含值的列。为什么会导致不同的方差计算?
apple_prices = pd.read_csv('apple_prices.csv')
print(apple_prices['open'].values.var())
#prints 102.22564310059172
print(apple_prices['open'].var())
#prints 103.82291877403847
解决方法
之所以不同,是因为ddof
的默认numpy.ndarray.var
(自由度增量)为1,而ddof
的默认import pandas as pd
import numpy as np
np.random.seed(0)
x = pd.Series(np.random.rand(100))
print(x.var(ddof=1))
# 0.08395738934787107
print(x.values.var(ddof=1))
# 0.08395738934787107
为0。手动设置会产生相同的结果:
git clone <HTTP address of repo>
请参阅以下文档:
pandas.Series.var
numpy.var