Python pd.DataFrame.agg(np.var)与pd.Series.np.var
以两种方式对同一数据集使用np.var(),但它们给出了两种不同的结果。 不要认为这是因为n&n-1问题,因为它是同一数据集的同一个numpy函数(熊猫系列——SAT数学分数) 以下是两种方式:Python pd.DataFrame.agg(np.var)与pd.Series.np.var,python,python-3.x,pandas,numpy,aggregate,Python,Python 3.x,Pandas,Numpy,Aggregate,以两种方式对同一数据集使用np.var(),但它们给出了两种不同的结果。 不要认为这是因为n&n-1问题,因为它是同一数据集的同一个numpy函数(熊猫系列——SAT数学分数) 以下是两种方式: 直接进入一系列 将其与过滤后的数据帧一起使用+ pd.df.agg()方法 然而,他们给出了两种不同的结果。我在别处读到过,这可能是因为它的计算方式,即nvsn-1 希望得到一些确认/澄清。我很困惑,因为我在两种情况下都使用相同的函数np.var(): np.var(sat\U 2017.Math),n
n
vsn-1
希望得到一些确认/澄清。我很困惑,因为我在两种情况下都使用相同的函数np.var():
np.var(sat\U 2017.Math),np.std(sat\U 2017.Math)
sat_2017.iloc[:,3].agg([np.var,np.std])
- 差异:7068.194540561321
- 标准偏差:84.07255521608297
- 差异:7209.558431
- 标准偏差:84.909119
根据源代码,这似乎是一个bug 当
pd.Series.agg
获取函数对象时,它会在预定义的cython函数列表中查找该对象:
# pandas.core.base line:555
f = self._is_cython_func(arg)
# pandas.core.base line:639
def _is_cython_func(self, arg):
""" if we define an internal function for this argument, return it """
return self._cython_table.get(arg)
其中包括:
pd.Series._cython_table
OrderedDict([(<function sum(iterable, start=0, /)>, 'sum'),
...
(<function numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)>,'var'),
然后在getattr
中使用:
# pandas.core.base line 556
if f and not args and not kwargs:
return getattr(self, f)(), None
whic返回:
getattr(pd.Series, 'var')
<function pandas.core.series.Series.var(self, axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)>
getattr(pd.Series,'var')
罪魁祸首来了<代码>ddof现在为1
getattr(pd.Series, 'var')
<function pandas.core.series.Series.var(self, axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)>