From 101f14a9fe74425de128288d261e68471f633609 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 5 Mar 2018 11:08:13 -0800 Subject: [PATCH 1/5] Updated kurt docstring (for pandas sprint) --- pandas/core/window.py | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/pandas/core/window.py b/pandas/core/window.py index 417888ce80b46..1fcdb025bbb30 100644 --- a/pandas/core/window.py +++ b/pandas/core/window.py @@ -899,11 +899,45 @@ def skew(self, **kwargs): return self._apply('roll_skew', 'skew', check_minp=_require_min_periods(3), **kwargs) - _shared_docs['kurt'] = """Unbiased %(name)s kurtosis""" + _shared_docs['kurt'] = dedent("""Calculate unbiased %(name)s kurtosis. - def kurt(self, **kwargs): +This function uses Fisher's definition of kurtosis (kurtosis of normal +== 0.0) without bias. + +Returns +------- +same type as input + +See Also +-------- +scipy.stats.kurtosis +pandas.DataFrame.kurtosis +pandas.Series.kurtosis + +Notes +----- +A minimum of 4 periods is required for the rolling calculation + +Examples +-------- +>>> arr = [1, 2, 3, 4, 5] +>>> import scipy.stats +>>> scipy.stats.kurtosis(arr, bias=False) +-1.200000000000000 + +>>> df = pd.DataFrame(arr) +>>> df.rolling(5).kurt() + 0 +0 NaN +1 NaN +2 NaN +3 NaN +4 -1.2 +""") + + def kurt(self): return self._apply('roll_kurt', 'kurt', - check_minp=_require_min_periods(4), **kwargs) + check_minp=_require_min_periods(4)) _shared_docs['quantile'] = dedent(""" %(name)s quantile @@ -1221,7 +1255,6 @@ def skew(self, **kwargs): return super(Rolling, self).skew(**kwargs) @Substitution(name='rolling') - @Appender(_doc_template) @Appender(_shared_docs['kurt']) def kurt(self, **kwargs): return super(Rolling, self).kurt(**kwargs) @@ -1461,7 +1494,6 @@ def skew(self, **kwargs): return super(Expanding, self).skew(**kwargs) @Substitution(name='expanding') - @Appender(_doc_template) @Appender(_shared_docs['kurt']) def kurt(self, **kwargs): return super(Expanding, self).kurt(**kwargs) From 38e57875b1c1d40864b5559804aadba2594ceb41 Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 5 Mar 2018 12:22:49 -0800 Subject: [PATCH 2/5] Fixed docstr indentation --- pandas/core/window.py | 58 +++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/pandas/core/window.py b/pandas/core/window.py index 1fcdb025bbb30..936e217592a7f 100644 --- a/pandas/core/window.py +++ b/pandas/core/window.py @@ -901,39 +901,39 @@ def skew(self, **kwargs): _shared_docs['kurt'] = dedent("""Calculate unbiased %(name)s kurtosis. -This function uses Fisher's definition of kurtosis (kurtosis of normal -== 0.0) without bias. + This function uses Fisher's definition of kurtosis (kurtosis of normal + == 0.0) without bias. -Returns -------- -same type as input + Returns + ------- + same type as input -See Also --------- -scipy.stats.kurtosis -pandas.DataFrame.kurtosis -pandas.Series.kurtosis + See Also + -------- + scipy.stats.kurtosis + pandas.DataFrame.kurtosis + pandas.Series.kurtosis -Notes ------ -A minimum of 4 periods is required for the rolling calculation + Notes + ----- + A minimum of 4 periods is required for the rolling calculation -Examples --------- ->>> arr = [1, 2, 3, 4, 5] ->>> import scipy.stats ->>> scipy.stats.kurtosis(arr, bias=False) --1.200000000000000 - ->>> df = pd.DataFrame(arr) ->>> df.rolling(5).kurt() - 0 -0 NaN -1 NaN -2 NaN -3 NaN -4 -1.2 -""") + Examples + -------- + >>> arr = [1, 2, 3, 4, 5] + >>> import scipy.stats + >>> scipy.stats.kurtosis(arr, bias=False) + -1.200000000000000 + + >>> df = pd.DataFrame(arr) + >>> df.rolling(5).kurt() + 0 + 0 NaN + 1 NaN + 2 NaN + 3 NaN + 4 -1.2 + """) def kurt(self): return self._apply('roll_kurt', 'kurt', From a2bde2044475522d5a51e8e8fa794e317e59ce2a Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Mon, 5 Mar 2018 12:28:53 -0800 Subject: [PATCH 3/5] Fixed error called out by validation script --- pandas/core/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/window.py b/pandas/core/window.py index 936e217592a7f..c9d8a85753aba 100644 --- a/pandas/core/window.py +++ b/pandas/core/window.py @@ -923,7 +923,7 @@ def skew(self, **kwargs): >>> arr = [1, 2, 3, 4, 5] >>> import scipy.stats >>> scipy.stats.kurtosis(arr, bias=False) - -1.200000000000000 + -1.2000000000000004 >>> df = pd.DataFrame(arr) >>> df.rolling(5).kurt() From 61dff85c0e86eaf125ca081ee3b55014708e96fc Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 6 Mar 2018 08:46:28 -0800 Subject: [PATCH 4/5] Updated kurt docstring --- pandas/core/window.py | 51 +++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/pandas/core/window.py b/pandas/core/window.py index c9d8a85753aba..7f711f22f62a5 100644 --- a/pandas/core/window.py +++ b/pandas/core/window.py @@ -899,45 +899,58 @@ def skew(self, **kwargs): return self._apply('roll_skew', 'skew', check_minp=_require_min_periods(3), **kwargs) - _shared_docs['kurt'] = dedent("""Calculate unbiased %(name)s kurtosis. + _shared_docs['kurt'] = dedent(""" + Calculate unbiased %(name)s kurtosis. - This function uses Fisher's definition of kurtosis (kurtosis of normal - == 0.0) without bias. + This function uses Fisher's definition of kurtosis without bias. + + Parameters + ---------- + kwargs : Needs Review Returns ------- - same type as input + Series or DataFrame (matches input) + Like-indexed object containing the result of function application See Also -------- - scipy.stats.kurtosis - pandas.DataFrame.kurtosis + pandas.Series.%(name)s + pandas.DataFrame.%(name)s pandas.Series.kurtosis + pandas.DataFrame.kurtosis + scipy.stats.skew + scipy.stats.kurtosis Notes ----- - A minimum of 4 periods is required for the rolling calculation + A minimum of 4 periods is required for the rolling calculation. Examples -------- - >>> arr = [1, 2, 3, 4, 5] + The below example will show a rolling calculation with a window size of + four matching the equivalent function call using `scipy.stats`. + + >>> arr = [1, 2, 3, 4, 999] >>> import scipy.stats - >>> scipy.stats.kurtosis(arr, bias=False) - -1.2000000000000004 + >>> print("{0:.6f}".format(scipy.stats.kurtosis(arr[:-1], bias=False))) + -1.200000 + >>> print("{0:.6f}".format(scipy.stats.kurtosis(arr[1:], bias=False))) + 3.999946 >>> df = pd.DataFrame(arr) - >>> df.rolling(5).kurt() - 0 - 0 NaN - 1 NaN - 2 NaN - 3 NaN - 4 -1.2 + >>> df.rolling(4).kurt() + 0 + 0 NaN + 1 NaN + 2 NaN + 3 -1.200000 + 4 3.999946 """) - def kurt(self): + def kurt(self, **kwargs): return self._apply('roll_kurt', 'kurt', - check_minp=_require_min_periods(4)) + check_minp=_require_min_periods(4), **kwargs) _shared_docs['quantile'] = dedent(""" %(name)s quantile From dd618580bb8b70434570e3886bf046e1584da4ed Mon Sep 17 00:00:00 2001 From: Will Ayd Date: Tue, 6 Mar 2018 09:01:19 -0800 Subject: [PATCH 5/5] Stylistic updates --- pandas/core/window.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pandas/core/window.py b/pandas/core/window.py index 7f711f22f62a5..cef012bb33e9f 100644 --- a/pandas/core/window.py +++ b/pandas/core/window.py @@ -906,7 +906,7 @@ def skew(self, **kwargs): Parameters ---------- - kwargs : Needs Review + kwargs : Under Review Returns ------- @@ -937,7 +937,6 @@ def skew(self, **kwargs): -1.200000 >>> print("{0:.6f}".format(scipy.stats.kurtosis(arr[1:], bias=False))) 3.999946 - >>> df = pd.DataFrame(arr) >>> df.rolling(4).kurt() 0