diff --git a/doc/source/whatsnew/v0.23.0.txt b/doc/source/whatsnew/v0.23.0.txt index 791365295c268..53b91e79f5477 100644 --- a/doc/source/whatsnew/v0.23.0.txt +++ b/doc/source/whatsnew/v0.23.0.txt @@ -736,6 +736,7 @@ Deprecations - :attr:`Timestamp.weekday_name`, :attr:`DatetimeIndex.weekday_name`, and :attr:`Series.dt.weekday_name` are deprecated in favor of :meth:`Timestamp.day_name`, :meth:`DatetimeIndex.day_name`, and :meth:`Series.dt.day_name` (:issue:`12806`) - ``pandas.tseries.plotting.tsplot`` is deprecated. Use :func:`Series.plot` instead (:issue:`18627`) +- ``Index.summary()`` is deprecated and will be removed in a future version (:issue:`18217`) .. _whatsnew_0230.prior_deprecations: diff --git a/pandas/core/frame.py b/pandas/core/frame.py index eaab17513aaf4..7dbfd0f733496 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2005,7 +2005,7 @@ def info(self, verbose=None, buf=None, max_cols=None, memory_usage=None, lines = [] lines.append(str(type(self))) - lines.append(self.index.summary()) + lines.append(self.index._summary()) if len(self.columns) == 0: lines.append('Empty %s' % type(self).__name__) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index f69777af31c9c..a7acd58d8d19e 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -1385,7 +1385,19 @@ def _has_complex_internals(self): # to disable groupby tricks in MultiIndex return False - def summary(self, name=None): + def _summary(self, name=None): + """ + Return a summarized representation + + Parameters + ---------- + name : str + name to use in the summary representation + + Returns + ------- + String with a summarized representation of the index + """ if len(self) > 0: head = self[0] if (hasattr(head, 'format') and @@ -1404,6 +1416,15 @@ def summary(self, name=None): name = type(self).__name__ return '%s: %s entries%s' % (name, len(self), index_summary) + def summary(self, name=None): + """ + Return a summarized representation + .. deprecated:: 0.23.0 + """ + warnings.warn("'summary' is deprecated and will be removed in a " + "future version.", FutureWarning, stacklevel=2) + return self._summary(name) + def _mpl_repr(self): # how to represent ourselves to matplotlib return self.values diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 1be71ff68c2fb..b3372859a116c 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -1049,9 +1049,18 @@ def where(self, cond, other=None): return self._shallow_copy(result, **self._get_attributes_dict()) - def summary(self, name=None): + def _summary(self, name=None): """ - return a summarized representation + Return a summarized representation + + Parameters + ---------- + name : str + name to use in the summary representation + + Returns + ------- + String with a summarized representation of the index """ formatter = self._formatter_func if len(self) > 0: diff --git a/pandas/tests/indexes/datetimes/test_formats.py b/pandas/tests/indexes/datetimes/test_formats.py index 0d1a9e65ce6c6..63d5338d88d76 100644 --- a/pandas/tests/indexes/datetimes/test_formats.py +++ b/pandas/tests/indexes/datetimes/test_formats.py @@ -182,7 +182,7 @@ def test_dti_summary(self): for idx, expected in zip([idx1, idx2, idx3, idx4, idx5, idx6], [exp1, exp2, exp3, exp4, exp5, exp6]): - result = idx.summary() + result = idx._summary() assert result == expected def test_dti_business_repr(self): @@ -191,15 +191,15 @@ def test_dti_business_repr(self): def test_dti_business_summary(self): rng = pd.bdate_range(datetime(2009, 1, 1), datetime(2010, 1, 1)) - rng.summary() - rng[2:2].summary() + rng._summary() + rng[2:2]._summary() def test_dti_business_summary_pytz(self): - pd.bdate_range('1/1/2005', '1/1/2009', tz=pytz.utc).summary() + pd.bdate_range('1/1/2005', '1/1/2009', tz=pytz.utc)._summary() def test_dti_business_summary_dateutil(self): pd.bdate_range('1/1/2005', '1/1/2009', - tz=dateutil.tz.tzutc()).summary() + tz=dateutil.tz.tzutc())._summary() def test_dti_custom_business_repr(self): # only really care that it works @@ -209,12 +209,13 @@ def test_dti_custom_business_repr(self): def test_dti_custom_business_summary(self): rng = pd.bdate_range(datetime(2009, 1, 1), datetime(2010, 1, 1), freq='C') - rng.summary() - rng[2:2].summary() + rng._summary() + rng[2:2]._summary() def test_dti_custom_business_summary_pytz(self): - pd.bdate_range('1/1/2005', '1/1/2009', freq='C', tz=pytz.utc).summary() + pd.bdate_range('1/1/2005', '1/1/2009', freq='C', + tz=pytz.utc)._summary() def test_dti_custom_business_summary_dateutil(self): pd.bdate_range('1/1/2005', '1/1/2009', freq='C', - tz=dateutil.tz.tzutc()).summary() + tz=dateutil.tz.tzutc())._summary() diff --git a/pandas/tests/indexes/period/test_formats.py b/pandas/tests/indexes/period/test_formats.py index b1a1060bf86c4..c3926cc5f1633 100644 --- a/pandas/tests/indexes/period/test_formats.py +++ b/pandas/tests/indexes/period/test_formats.py @@ -205,5 +205,5 @@ def test_summary(self): idx6, idx7, idx8, idx9], [exp1, exp2, exp3, exp4, exp5, exp6, exp7, exp8, exp9]): - result = idx.summary() + result = idx._summary() assert result == expected diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index e8f05cb928cad..b30cc4b012f14 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -1055,14 +1055,21 @@ def test_is_all_dates(self): assert not self.intIndex.is_all_dates def test_summary(self): - self._check_method_works(Index.summary) + self._check_method_works(Index._summary) # GH3869 ind = Index(['{other}%s', "~:{range}:0"], name='A') - result = ind.summary() + result = ind._summary() # shouldn't be formatted accidentally. assert '~:{range}:0' in result assert '{other}%s' in result + # GH18217 + def test_summary_deprecated(self): + ind = Index(['{other}%s', "~:{range}:0"], name='A') + + with tm.assert_produces_warning(FutureWarning): + ind.summary() + def test_format(self): self._check_method_works(Index.format) diff --git a/pandas/tests/indexes/timedeltas/test_formats.py b/pandas/tests/indexes/timedeltas/test_formats.py index a8375459d74e4..09921fac80d22 100644 --- a/pandas/tests/indexes/timedeltas/test_formats.py +++ b/pandas/tests/indexes/timedeltas/test_formats.py @@ -92,5 +92,5 @@ def test_summary(self): for idx, expected in zip([idx1, idx2, idx3, idx4, idx5], [exp1, exp2, exp3, exp4, exp5]): - result = idx.summary() + result = idx._summary() assert result == expected