Skip to content

Commit 4730ee6

Browse files
author
Chang She
committed
adding ddof parameter back into std and var
1 parent d8a0ca4 commit 4730ee6

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

pandas/core/frame.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -3585,21 +3585,21 @@ def mad(self, axis=0, skipna=True, level=None):
35853585
@Substitution(name='unbiased variance', shortname='var',
35863586
na_action=_doc_exclude_na, extras='')
35873587
@Appender(_stat_doc)
3588-
def var(self, axis=0, skipna=True, level=None):
3588+
def var(self, axis=0, skipna=True, level=None, ddof=1):
35893589
if level is not None:
35903590
return self._agg_by_level('var', axis=axis, level=level,
35913591
skipna=skipna)
35923592
return self._reduce(nanops.nanvar, axis=axis, skipna=skipna,
3593-
numeric_only=None)
3593+
numeric_only=None, ddof=ddof)
35943594

35953595
@Substitution(name='unbiased standard deviation', shortname='std',
35963596
na_action=_doc_exclude_na, extras='')
35973597
@Appender(_stat_doc)
3598-
def std(self, axis=0, skipna=True, level=None):
3598+
def std(self, axis=0, skipna=True, level=None, ddof=1):
35993599
if level is not None:
36003600
return self._agg_by_level('std', axis=axis, level=level,
36013601
skipna=skipna)
3602-
return np.sqrt(self.var(axis=axis, skipna=skipna))
3602+
return np.sqrt(self.var(axis=axis, skipna=skipna, ddof=ddof))
36033603

36043604
@Substitution(name='unbiased skewness', shortname='skew',
36053605
na_action=_doc_exclude_na, extras='')
@@ -3619,8 +3619,8 @@ def _agg_by_level(self, name, axis=0, level=0, skipna=True):
36193619
applyf = lambda x: method(x, axis=axis, skipna=skipna)
36203620
return grouped.aggregate(applyf)
36213621

3622-
def _reduce(self, op, axis=0, skipna=True, numeric_only=None):
3623-
f = lambda x: op(x, axis=axis, skipna=skipna)
3622+
def _reduce(self, op, axis=0, skipna=True, numeric_only=None, **kwds):
3623+
f = lambda x: op(x, axis=axis, skipna=skipna, **kwds)
36243624
labels = self._get_agg_axis(axis)
36253625
if numeric_only is None:
36263626
try:

pandas/core/nanops.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ def _bottleneck_switch(bn_name, alt, zero_value=None, **kwargs):
1717
bn_func = getattr(bn, bn_name)
1818
except (AttributeError, NameError): # pragma: no cover
1919
bn_func = None
20-
def f(values, axis=None, skipna=True):
20+
def f(values, axis=None, skipna=True, **kwds):
21+
if len(kwargs) > 0:
22+
for k, v in kwargs.iteritems():
23+
kwds[k] = v
2124
try:
2225
if zero_value is not None and values.size == 0:
2326
if values.ndim == 1:
@@ -29,14 +32,14 @@ def f(values, axis=None, skipna=True):
2932
return result
3033

3134
if _USE_BOTTLENECK and skipna and values.dtype != np.object_:
32-
result = bn_func(values, axis=axis, **kwargs)
35+
result = bn_func(values, axis=axis, **kwds)
3336
# prefer to treat inf/-inf as NA
3437
if _has_infs(result):
35-
result = alt(values, axis=axis, skipna=skipna, **kwargs)
38+
result = alt(values, axis=axis, skipna=skipna, **kwds)
3639
else:
37-
result = alt(values, axis=axis, skipna=skipna, **kwargs)
40+
result = alt(values, axis=axis, skipna=skipna, **kwds)
3841
except Exception:
39-
result = alt(values, axis=axis, skipna=skipna, **kwargs)
42+
result = alt(values, axis=axis, skipna=skipna, **kwds)
4043

4144
return result
4245

@@ -180,7 +183,7 @@ def nanargmin(values, axis=None, skipna=True):
180183
nansum = _bottleneck_switch('nansum', _nansum, zero_value=0)
181184
nanmean = _bottleneck_switch('nanmean', _nanmean)
182185
nanmedian = _bottleneck_switch('nanmedian', _nanmedian)
183-
nanvar = _bottleneck_switch('nanvar', _nanvar, ddof=1)
186+
nanvar = _bottleneck_switch('nanvar', _nanvar)
184187
nanmin = _bottleneck_switch('nanmin', _nanmin)
185188
nanmax = _bottleneck_switch('nanmax', _nanmax)
186189

pandas/core/series.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ def std(self, axis=None, dtype=None, out=None, ddof=1, skipna=True,
10121012
level=None):
10131013
if level is not None:
10141014
return self._agg_by_level('std', level=level, skipna=skipna)
1015-
return np.sqrt(nanops.nanvar(self.values, skipna=skipna))
1015+
return np.sqrt(nanops.nanvar(self.values, skipna=skipna, ddof=ddof))
10161016

10171017
@Substitution(name='unbiased variance', shortname='var',
10181018
na_action=_doc_exclude_na, extras='')
@@ -1021,7 +1021,7 @@ def var(self, axis=None, dtype=None, out=None, ddof=1, skipna=True,
10211021
level=None):
10221022
if level is not None:
10231023
return self._agg_by_level('var', level=level, skipna=skipna)
1024-
return nanops.nanvar(self.values, skipna=skipna)
1024+
return nanops.nanvar(self.values, skipna=skipna, ddof=ddof)
10251025

10261026
@Substitution(name='unbiased skewness', shortname='skew',
10271027
na_action=_doc_exclude_na, extras='')

0 commit comments

Comments
 (0)