数组与列表中数据计算的细微差异

问题描述

正如您在下面的代码中看到的那样,我以两种不同的方式计算“开放”列中数据的方差。唯一的区别是,在第二个版本中,我获取值,而不是包含值的列。为什么会导致不同的方差计算?

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