Skip to content

Commit 9151211

Browse files
mroeschkeanother-green
authored andcommitted
CLN: pd.TimeGrouper (pandas-dev#26477)
1 parent ac02674 commit 9151211

File tree

8 files changed

+25
-53
lines changed

8 files changed

+25
-53
lines changed

doc/source/whatsnew/v0.25.0.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ Removal of prior version deprecations/changes
313313
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
314314
- Removed ``Panel`` (:issue:`25047`, :issue:`25191`, :issue:`25231`)
315315
-
316-
-
316+
- Removed previously deprecated ``TimeGrouper`` (:issue:`16942`)
317317
-
318318

319319
.. _whatsnew_0250.performance:

pandas/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
to_numeric, to_datetime, to_timedelta,
6666

6767
# misc
68-
np, TimeGrouper, Grouper, factorize, unique, value_counts,
68+
np, Grouper, factorize, unique, value_counts,
6969
array, Categorical, set_eng_float_format, Series, DataFrame,
7070
Panel)
7171

pandas/core/api.py

-12
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,3 @@
4545
from pandas.tseries.offsets import DateOffset
4646
from pandas.core.tools.datetimes import to_datetime
4747
from pandas.core.tools.timedeltas import to_timedelta
48-
49-
50-
# Deprecation: xref gh-16747
51-
class TimeGrouper:
52-
53-
def __new__(cls, *args, **kwargs):
54-
from pandas.core.resample import TimeGrouper
55-
import warnings
56-
warnings.warn("pd.TimeGrouper is deprecated and will be removed; "
57-
"Please use pd.Grouper(freq=...)",
58-
FutureWarning, stacklevel=2)
59-
return TimeGrouper(*args, **kwargs)

pandas/tests/api/test_api.py

+1-12
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class TestPDApi(Base):
5050
]
5151

5252
# these are already deprecated; awaiting removal
53-
deprecated_classes = ['TimeGrouper', 'Panel']
53+
deprecated_classes = ['Panel']
5454

5555
# these should be deprecated in the future
5656
deprecated_classes_in_future = []
@@ -132,17 +132,6 @@ def test_testing(self):
132132
self.check(testing, self.funcs)
133133

134134

135-
class TestTopLevelDeprecations:
136-
137-
# top-level API deprecations
138-
# GH 13790
139-
140-
def test_TimeGrouper(self):
141-
with tm.assert_produces_warning(FutureWarning,
142-
check_stacklevel=False):
143-
pd.TimeGrouper(freq='D')
144-
145-
146135
class TestCDateRange:
147136

148137
def test_deprecation_cdaterange(self):

pandas/tests/groupby/test_timegrouper.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import pandas as pd
1212
from pandas import DataFrame, Index, MultiIndex, Series, Timestamp, date_range
13+
from pandas.core.groupby.grouper import Grouper
1314
from pandas.core.groupby.ops import BinGrouper
1415
from pandas.util import testing as tm
1516
from pandas.util.testing import assert_frame_equal, assert_series_equal
@@ -365,10 +366,8 @@ def sumfunc_value(x):
365366
return x.value.sum()
366367

367368
expected = df.groupby(pd.Grouper(key='date')).apply(sumfunc_value)
368-
with tm.assert_produces_warning(FutureWarning,
369-
check_stacklevel=False):
370-
result = (df_dt.groupby(pd.TimeGrouper(freq='M', key='date'))
371-
.apply(sumfunc_value))
369+
result = (df_dt.groupby(Grouper(freq='M', key='date'))
370+
.apply(sumfunc_value))
372371
assert_series_equal(result.reset_index(drop=True),
373372
expected.reset_index(drop=True))
374373

pandas/tests/resample/test_base.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import pandas as pd
77
from pandas import DataFrame, Series
88
from pandas.core.groupby.groupby import DataError
9+
from pandas.core.groupby.grouper import Grouper
910
from pandas.core.indexes.datetimes import date_range
1011
from pandas.core.indexes.period import PeriodIndex, period_range
1112
from pandas.core.indexes.timedeltas import TimedeltaIndex, timedelta_range
12-
from pandas.core.resample import TimeGrouper
1313
import pandas.util.testing as tm
1414
from pandas.util.testing import (
1515
assert_almost_equal, assert_frame_equal, assert_index_equal,
@@ -214,7 +214,7 @@ def test_apply_to_empty_series(empty_series):
214214
def test_resampler_is_iterable(series):
215215
# GH 15314
216216
freq = 'H'
217-
tg = TimeGrouper(freq, convention='start')
217+
tg = Grouper(freq=freq, convention='start')
218218
grouped = series.groupby(tg)
219219
resampled = series.resample(freq)
220220
for (rk, rv), (gk, gv) in zip(resampled, grouped):

pandas/tests/resample/test_datetime_index.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
import pandas as pd
1212
from pandas import DataFrame, Series, Timedelta, Timestamp, isna, notna
13+
from pandas.core.groupby.grouper import Grouper
1314
from pandas.core.indexes.datetimes import date_range
1415
from pandas.core.indexes.period import Period, period_range
15-
from pandas.core.resample import (
16-
DatetimeIndex, TimeGrouper, _get_timestamp_range_edges)
16+
from pandas.core.resample import DatetimeIndex, _get_timestamp_range_edges
1717
import pandas.util.testing as tm
1818
from pandas.util.testing import (
1919
assert_almost_equal, assert_frame_equal, assert_series_equal)
@@ -42,15 +42,15 @@ def test_custom_grouper(index):
4242
dti = index
4343
s = Series(np.array([1] * len(dti)), index=dti, dtype='int64')
4444

45-
b = TimeGrouper(Minute(5))
45+
b = Grouper(freq=Minute(5))
4646
g = s.groupby(b)
4747

4848
# check all cython functions work
4949
funcs = ['add', 'mean', 'prod', 'ohlc', 'min', 'max', 'var']
5050
for f in funcs:
5151
g._cython_agg_general(f)
5252

53-
b = TimeGrouper(Minute(5), closed='right', label='right')
53+
b = Grouper(freq=Minute(5), closed='right', label='right')
5454
g = s.groupby(b)
5555
# check all cython functions work
5656
funcs = ['add', 'mean', 'prod', 'ohlc', 'min', 'max', 'var']
@@ -116,7 +116,7 @@ def test_resample_integerarray():
116116
def test_resample_basic_grouper(series):
117117
s = series
118118
result = s.resample('5Min').last()
119-
grouper = TimeGrouper(Minute(5), closed='left', label='left')
119+
grouper = Grouper(freq=Minute(5), closed='left', label='left')
120120
expected = s.groupby(grouper).agg(lambda x: x[-1])
121121
assert_series_equal(result, expected)
122122

@@ -373,7 +373,7 @@ def test_resample_upsampling_picked_but_not_correct():
373373
def test_resample_frame_basic():
374374
df = tm.makeTimeDataFrame()
375375

376-
b = TimeGrouper('M')
376+
b = Grouper(freq='M')
377377
g = df.groupby(b)
378378

379379
# check all cython functions work
@@ -521,7 +521,7 @@ def test_nearest_upsample_with_limit():
521521
def test_resample_ohlc(series):
522522
s = series
523523

524-
grouper = TimeGrouper(Minute(5))
524+
grouper = Grouper(freq=Minute(5))
525525
expect = s.groupby(grouper).agg(lambda x: x[-1])
526526
result = s.resample('5Min').ohlc()
527527

pandas/tests/resample/test_time_grouper.py

+10-14
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
import pandas as pd
88
from pandas import DataFrame, Series
9+
from pandas.core.groupby.grouper import Grouper
910
from pandas.core.indexes.datetimes import date_range
10-
from pandas.core.resample import TimeGrouper
1111
import pandas.util.testing as tm
1212
from pandas.util.testing import assert_frame_equal, assert_series_equal
1313

@@ -16,9 +16,7 @@
1616

1717

1818
def test_apply():
19-
with tm.assert_produces_warning(FutureWarning,
20-
check_stacklevel=False):
21-
grouper = pd.TimeGrouper(freq='A', label='right', closed='right')
19+
grouper = Grouper(freq='A', label='right', closed='right')
2220

2321
grouped = test_series.groupby(grouper)
2422

@@ -38,9 +36,7 @@ def test_count():
3836

3937
expected = test_series.groupby(lambda x: x.year).count()
4038

41-
with tm.assert_produces_warning(FutureWarning,
42-
check_stacklevel=False):
43-
grouper = pd.TimeGrouper(freq='A', label='right', closed='right')
39+
grouper = Grouper(freq='A', label='right', closed='right')
4440
result = test_series.groupby(grouper).count()
4541
expected.index = result.index
4642
assert_series_equal(result, expected)
@@ -64,7 +60,7 @@ def test_apply_iteration():
6460
N = 1000
6561
ind = pd.date_range(start="2000-01-01", freq="D", periods=N)
6662
df = DataFrame({'open': 1, 'close': 2}, index=ind)
67-
tg = TimeGrouper('M')
63+
tg = Grouper(freq='M')
6864

6965
_, grouper, _ = tg._get_grouper(df)
7066

@@ -93,7 +89,7 @@ def test_fails_on_no_datetime_index(name, func):
9389
msg = ("Only valid with DatetimeIndex, TimedeltaIndex "
9490
"or PeriodIndex, but got an instance of '{}'".format(name))
9591
with pytest.raises(TypeError, match=msg):
96-
df.groupby(TimeGrouper('D'))
92+
df.groupby(Grouper(freq='D'))
9793

9894

9995
def test_aaa_group_order():
@@ -105,7 +101,7 @@ def test_aaa_group_order():
105101
df['key'] = [datetime(2013, 1, 1), datetime(2013, 1, 2),
106102
datetime(2013, 1, 3), datetime(2013, 1, 4),
107103
datetime(2013, 1, 5)] * 4
108-
grouped = df.groupby(TimeGrouper(key='key', freq='D'))
104+
grouped = df.groupby(Grouper(key='key', freq='D'))
109105

110106
tm.assert_frame_equal(grouped.get_group(datetime(2013, 1, 1)),
111107
df[::5])
@@ -135,7 +131,7 @@ def test_aggregate_normal(resample_method):
135131
datetime(2013, 1, 5)] * 4
136132

137133
normal_grouped = normal_df.groupby('key')
138-
dt_grouped = dt_df.groupby(TimeGrouper(key='key', freq='D'))
134+
dt_grouped = dt_df.groupby(Grouper(key='key', freq='D'))
139135

140136
expected = getattr(normal_grouped, resample_method)()
141137
dt_result = getattr(dt_grouped, resample_method)()
@@ -195,7 +191,7 @@ def test_aggregate_with_nat(func, fill_value):
195191
datetime(2013, 1, 4), datetime(2013, 1, 5)] * 4
196192

197193
normal_grouped = normal_df.groupby('key')
198-
dt_grouped = dt_df.groupby(TimeGrouper(key='key', freq='D'))
194+
dt_grouped = dt_df.groupby(Grouper(key='key', freq='D'))
199195

200196
normal_result = getattr(normal_grouped, func)()
201197
dt_result = getattr(dt_grouped, func)()
@@ -222,7 +218,7 @@ def test_aggregate_with_nat_size():
222218
datetime(2013, 1, 4), datetime(2013, 1, 5)] * 4
223219

224220
normal_grouped = normal_df.groupby('key')
225-
dt_grouped = dt_df.groupby(TimeGrouper(key='key', freq='D'))
221+
dt_grouped = dt_df.groupby(Grouper(key='key', freq='D'))
226222

227223
normal_result = normal_grouped.size()
228224
dt_result = dt_grouped.size()
@@ -238,7 +234,7 @@ def test_aggregate_with_nat_size():
238234

239235
def test_repr():
240236
# GH18203
241-
result = repr(TimeGrouper(key='A', freq='H'))
237+
result = repr(Grouper(key='A', freq='H'))
242238
expected = ("TimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, "
243239
"closed='left', label='left', how='mean', "
244240
"convention='e', base=0)")

0 commit comments

Comments
 (0)