From a7575846e9ddcc541722866d1a61ff3445bb416c Mon Sep 17 00:00:00 2001 From: Matt Roeschke Date: Sun, 20 Dec 2020 15:28:17 -0800 Subject: [PATCH] CLN: Remove _get_roll_func --- pandas/core/window/ewm.py | 6 ++-- pandas/core/window/rolling.py | 54 +++++++++++------------------------ 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/pandas/core/window/ewm.py b/pandas/core/window/ewm.py index 0fc6c8a23f5f2..b52b7d384036b 100644 --- a/pandas/core/window/ewm.py +++ b/pandas/core/window/ewm.py @@ -335,14 +335,14 @@ def mean(self, *args, **kwargs): """ nv.validate_window_func("mean", args, kwargs) if self.times is not None: - window_func = self._get_roll_func("ewma_time") + window_func = window_aggregations.ewma_time window_func = partial( window_func, times=self.times, halflife=self.halflife, ) else: - window_func = self._get_roll_func("ewma") + window_func = window_aggregations.ewma window_func = partial( window_func, com=self.com, @@ -371,7 +371,7 @@ def var(self, bias: bool = False, *args, **kwargs): Exponential weighted moving variance. """ nv.validate_window_func("var", args, kwargs) - window_func = self._get_roll_func("ewmcov") + window_func = window_aggregations.ewmcov window_func = partial( window_func, com=self.com, diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index e6185f8ae0679..96eaa163b9a5d 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -316,26 +316,6 @@ def _insert_on_column(self, result: "DataFrame", obj: "DataFrame"): # insert at the end result[name] = extra_col - def _get_roll_func(self, func_name: str) -> Callable[..., Any]: - """ - Wrap rolling function to check values passed. - - Parameters - ---------- - func_name : str - Cython function used to calculate rolling statistics - - Returns - ------- - func : callable - """ - window_func = getattr(window_aggregations, func_name, None) - if window_func is None: - raise ValueError( - f"we do not support this function in window_aggregations.{func_name}" - ) - return window_func - @property def _index_array(self): # TODO: why do we get here with e.g. MultiIndex? @@ -1153,21 +1133,21 @@ def aggregate(self, func, *args, **kwargs): @Appender(_shared_docs["sum"]) def sum(self, *args, **kwargs): nv.validate_window_func("sum", args, kwargs) - window_func = self._get_roll_func("roll_weighted_sum") + window_func = window_aggregations.roll_weighted_sum return self._apply(window_func, name="sum", **kwargs) @Substitution(name="window") @Appender(_shared_docs["mean"]) def mean(self, *args, **kwargs): nv.validate_window_func("mean", args, kwargs) - window_func = self._get_roll_func("roll_weighted_mean") + window_func = window_aggregations.roll_weighted_mean return self._apply(window_func, name="mean", **kwargs) @Substitution(name="window", versionadded="\n.. versionadded:: 1.0.0\n") @Appender(_shared_docs["var"]) def var(self, ddof: int = 1, *args, **kwargs): nv.validate_window_func("var", args, kwargs) - window_func = partial(self._get_roll_func("roll_weighted_var"), ddof=ddof) + window_func = partial(window_aggregations.roll_weighted_var, ddof=ddof) kwargs.pop("name", None) return self._apply(window_func, name="var", **kwargs) @@ -1221,7 +1201,7 @@ class RollingAndExpandingMixin(BaseWindow): ) def count(self): - window_func = self._get_roll_func("roll_sum") + window_func = window_aggregations.roll_sum return self._apply(window_func, name="count") _shared_docs["apply"] = dedent( @@ -1331,7 +1311,7 @@ def _generate_cython_apply_func( from pandas import Series window_func = partial( - self._get_roll_func("roll_apply"), + window_aggregations.roll_apply, args=args, kwargs=kwargs, raw=raw, @@ -1347,7 +1327,7 @@ def apply_func(values, begin, end, min_periods, raw=raw): def sum(self, *args, **kwargs): nv.validate_window_func("sum", args, kwargs) - window_func = self._get_roll_func("roll_sum") + window_func = window_aggregations.roll_sum return self._apply(window_func, name="sum", **kwargs) _shared_docs["max"] = dedent( @@ -1363,7 +1343,7 @@ def sum(self, *args, **kwargs): def max(self, *args, **kwargs): nv.validate_window_func("max", args, kwargs) - window_func = self._get_roll_func("roll_max") + window_func = window_aggregations.roll_max return self._apply(window_func, name="max", **kwargs) _shared_docs["min"] = dedent( @@ -1405,12 +1385,12 @@ def max(self, *args, **kwargs): def min(self, *args, **kwargs): nv.validate_window_func("min", args, kwargs) - window_func = self._get_roll_func("roll_min") + window_func = window_aggregations.roll_min return self._apply(window_func, name="min", **kwargs) def mean(self, *args, **kwargs): nv.validate_window_func("mean", args, kwargs) - window_func = self._get_roll_func("roll_mean") + window_func = window_aggregations.roll_mean return self._apply(window_func, name="mean", **kwargs) _shared_docs["median"] = dedent( @@ -1451,14 +1431,14 @@ def mean(self, *args, **kwargs): ) def median(self, **kwargs): - window_func = self._get_roll_func("roll_median_c") + window_func = window_aggregations.roll_median_c # GH 32865. Move max window size calculation to # the median function implementation return self._apply(window_func, name="median", **kwargs) def std(self, ddof: int = 1, *args, **kwargs): nv.validate_window_func("std", args, kwargs) - window_func = self._get_roll_func("roll_var") + window_func = window_aggregations.roll_var def zsqrt_func(values, begin, end, min_periods): return zsqrt(window_func(values, begin, end, min_periods, ddof=ddof)) @@ -1471,7 +1451,7 @@ def zsqrt_func(values, begin, end, min_periods): def var(self, ddof: int = 1, *args, **kwargs): nv.validate_window_func("var", args, kwargs) - window_func = partial(self._get_roll_func("roll_var"), ddof=ddof) + window_func = partial(window_aggregations.roll_var, ddof=ddof) return self._apply( window_func, name="var", @@ -1490,7 +1470,7 @@ def var(self, ddof: int = 1, *args, **kwargs): """ def skew(self, **kwargs): - window_func = self._get_roll_func("roll_skew") + window_func = window_aggregations.roll_skew return self._apply( window_func, name="skew", @@ -1583,7 +1563,7 @@ def sem(self, ddof: int = 1, *args, **kwargs): ) def kurt(self, **kwargs): - window_func = self._get_roll_func("roll_kurt") + window_func = window_aggregations.roll_kurt return self._apply( window_func, name="kurt", @@ -1646,12 +1626,12 @@ def kurt(self, **kwargs): def quantile(self, quantile: float, interpolation: str = "linear", **kwargs): if quantile == 1.0: - window_func = self._get_roll_func("roll_max") + window_func = window_aggregations.roll_max elif quantile == 0.0: - window_func = self._get_roll_func("roll_min") + window_func = window_aggregations.roll_min else: window_func = partial( - self._get_roll_func("roll_quantile"), + window_aggregations.roll_quantile, quantile=quantile, interpolation=interpolation, )