Skip to content

ERR: Most consistent error handling when passing win_type='freq' in rolling #15969

Closed
@TomAugspurger

Description

@TomAugspurger

Working on dask/dask#2190 (df.rolling('5s') for dask), and I think these should all be equivalent.

In [26]: import pandas as pd
In [27]: import numpy as np
In [31]: from pandas.tseries.frequencies import to_offset
In [28]: s = pd.Series(range(10), index=pd.date_range('2017', freq='s', periods=10))
>>> s.rolling('2s')  # Case 1: correct
>>> s.rolling(window=2000000000, min_periods=1, win_type='freq')  # Case 2
>>> s.rolling(window=to_offset('2s'), min_periods=1, win_type='freq')  # Case 3
>>> s.rolling(window=pd.Timedelta('2s'), min_periods=1, win_type='freq')  # Same as 3

I don't think there are any parsing ambiguities.

Currently we have

# Case 1
In [33]: s.rolling('2s')
Out[33]: Rolling [window=2000000000,min_periods=1,center=False,win_type=freq,axis=0]
# Case 2
In [35]: s.rolling(window=2000000000, min_periods=1, win_type='freq')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-a24a29dff0ab> in <module>()
----> 1 s.rolling(window=2000000000, min_periods=1, win_type='freq')

/Users/taugspurger/.virtualenvs/dask-dev/lib/python3.6/site-packages/pandas/core/generic.py in rolling(self, window, min_periods, freq, center, win_type, on, axis)
   5502                                    min_periods=min_periods, freq=freq,
   5503                                    center=center, win_type=win_type,
-> 5504                                    on=on, axis=axis)
   5505
   5506         cls.rolling = rolling

/Users/taugspurger/.virtualenvs/dask-dev/lib/python3.6/site-packages/pandas/core/window.py in rolling(obj, win_type, **kwds)
   1795
   1796     if win_type is not None:
-> 1797         return Window(obj, win_type=win_type, **kwds)
   1798
   1799     return Rolling(obj, **kwds)

/Users/taugspurger/.virtualenvs/dask-dev/lib/python3.6/site-packages/pandas/core/window.py in __init__(self, obj, window, min_periods, freq, center, win_type, axis, on, **kwargs)
     76         self.win_type = win_type
     77         self.axis = obj._get_axis_number(axis) if axis is not None else None
---> 78         self.validate()
     79
     80     @property

/Users/taugspurger/.virtualenvs/dask-dev/lib/python3.6/site-packages/pandas/core/window.py in validate(self)
    505                 raise ValueError('Invalid win_type {0}'.format(self.win_type))
    506             if getattr(sig, self.win_type, None) is None:
--> 507                 raise ValueError('Invalid win_type {0}'.format(self.win_type))
    508         else:
    509             raise ValueError('Invalid window {0}'.format(window))

ValueError: Invalid win_type freq
# Case 3
In [36]: s.rolling(window=to_offset('2s'), min_periods=1, win_type='freq')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-36-93e14a8d05f6> in <module>()
----> 1 s.rolling(window=to_offset('2s'), min_periods=1, win_type='freq')

/Users/taugspurger/Envs/dask-dev/lib/python3.6/site-packages/pandas/core/generic.py in rolling(self, window, min_periods, freq, center, win_type, on, axis)
   5502                                    min_periods=min_periods, freq=freq,
   5503                                    center=center, win_type=win_type,
-> 5504                                    on=on, axis=axis)
   5505
   5506         cls.rolling = rolling

/Users/taugspurger/Envs/dask-dev/lib/python3.6/site-packages/pandas/core/window.py in rolling(obj, win_type, **kwds)
   1795
   1796     if win_type is not None:
-> 1797         return Window(obj, win_type=win_type, **kwds)
   1798
   1799     return Rolling(obj, **kwds)

/Users/taugspurger/Envs/dask-dev/lib/python3.6/site-packages/pandas/core/window.py in __init__(self, obj, window, min_periods, freq, center, win_type, axis, on, **kwargs)
     76         self.win_type = win_type
     77         self.axis = obj._get_axis_number(axis) if axis is not None else None
---> 78         self.validate()
     79
     80     @property

/Users/taugspurger/Envs/dask-dev/lib/python3.6/site-packages/pandas/core/window.py in validate(self)
    507                 raise ValueError('Invalid win_type {0}'.format(self.win_type))
    508         else:
--> 509             raise ValueError('Invalid window {0}'.format(window))
    510
    511     def _prep_window(self, **kwargs):

ValueError: Invalid window <2 * Seconds>

Metadata

Metadata

Assignees

No one assigned

    Labels

    DatetimeDatetime data dtypeError ReportingIncorrect or improved errors from pandasWindowrolling, ewma, expanding

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions