Skip to content

CLN: Remove _get_roll_func #38596

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions pandas/core/window/ewm.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
54 changes: 17 additions & 37 deletions pandas/core/window/rolling.py
Original file line number Diff line number Diff line change
Expand Up @@ -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?
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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,
Expand All @@ -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(
Expand All @@ -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(
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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))
Expand All @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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,
)
Expand Down