Skip to content

Commit 2424e3f

Browse files
jbrockmendelproost
authored andcommitted
DEPR: Categorical.ravel, get_dtype_counts, dtype_str, to_dense (pandas-dev#29900)
1 parent 8426e56 commit 2424e3f

File tree

15 files changed

+8
-162
lines changed

15 files changed

+8
-162
lines changed

asv_bench/benchmarks/frame_methods.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ def setup(self):
565565

566566
def time_frame_get_dtype_counts(self):
567567
with warnings.catch_warnings(record=True):
568-
self.df.get_dtype_counts()
568+
self.df._data.get_dtype_counts()
569569

570570
def time_info(self):
571571
self.df.info()

doc/redirects.csv

-5
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,6 @@ generated/pandas.DataFrame.from_dict,../reference/api/pandas.DataFrame.from_dict
358358
generated/pandas.DataFrame.from_items,../reference/api/pandas.DataFrame.from_items
359359
generated/pandas.DataFrame.from_records,../reference/api/pandas.DataFrame.from_records
360360
generated/pandas.DataFrame.ge,../reference/api/pandas.DataFrame.ge
361-
generated/pandas.DataFrame.get_dtype_counts,../reference/api/pandas.DataFrame.get_dtype_counts
362361
generated/pandas.DataFrame.get,../reference/api/pandas.DataFrame.get
363362
generated/pandas.DataFrame.get_value,../reference/api/pandas.DataFrame.get_value
364363
generated/pandas.DataFrame.get_values,../reference/api/pandas.DataFrame.get_values
@@ -486,7 +485,6 @@ generated/pandas.DataFrame.T,../reference/api/pandas.DataFrame.T
486485
generated/pandas.DataFrame.timetuple,../reference/api/pandas.DataFrame.timetuple
487486
generated/pandas.DataFrame.to_clipboard,../reference/api/pandas.DataFrame.to_clipboard
488487
generated/pandas.DataFrame.to_csv,../reference/api/pandas.DataFrame.to_csv
489-
generated/pandas.DataFrame.to_dense,../reference/api/pandas.DataFrame.to_dense
490488
generated/pandas.DataFrame.to_dict,../reference/api/pandas.DataFrame.to_dict
491489
generated/pandas.DataFrame.to_excel,../reference/api/pandas.DataFrame.to_excel
492490
generated/pandas.DataFrame.to_feather,../reference/api/pandas.DataFrame.to_feather
@@ -632,7 +630,6 @@ generated/pandas.Index.drop,../reference/api/pandas.Index.drop
632630
generated/pandas.Index.droplevel,../reference/api/pandas.Index.droplevel
633631
generated/pandas.Index.dropna,../reference/api/pandas.Index.dropna
634632
generated/pandas.Index.dtype,../reference/api/pandas.Index.dtype
635-
generated/pandas.Index.dtype_str,../reference/api/pandas.Index.dtype_str
636633
generated/pandas.Index.duplicated,../reference/api/pandas.Index.duplicated
637634
generated/pandas.Index.empty,../reference/api/pandas.Index.empty
638635
generated/pandas.Index.equals,../reference/api/pandas.Index.equals
@@ -1046,7 +1043,6 @@ generated/pandas.Series.floordiv,../reference/api/pandas.Series.floordiv
10461043
generated/pandas.Series.from_array,../reference/api/pandas.Series.from_array
10471044
generated/pandas.Series.from_csv,../reference/api/pandas.Series.from_csv
10481045
generated/pandas.Series.ge,../reference/api/pandas.Series.ge
1049-
generated/pandas.Series.get_dtype_counts,../reference/api/pandas.Series.get_dtype_counts
10501046
generated/pandas.Series.get,../reference/api/pandas.Series.get
10511047
generated/pandas.Series.get_value,../reference/api/pandas.Series.get_value
10521048
generated/pandas.Series.get_values,../reference/api/pandas.Series.get_values
@@ -1235,7 +1231,6 @@ generated/pandas.Series.T,../reference/api/pandas.Series.T
12351231
generated/pandas.Series.timetuple,../reference/api/pandas.Series.timetuple
12361232
generated/pandas.Series.to_clipboard,../reference/api/pandas.Series.to_clipboard
12371233
generated/pandas.Series.to_csv,../reference/api/pandas.Series.to_csv
1238-
generated/pandas.Series.to_dense,../reference/api/pandas.Series.to_dense
12391234
generated/pandas.Series.to_dict,../reference/api/pandas.Series.to_dict
12401235
generated/pandas.Series.to_excel,../reference/api/pandas.Series.to_excel
12411236
generated/pandas.Series.to_frame,../reference/api/pandas.Series.to_frame

doc/source/reference/frame.rst

-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ Attributes and underlying data
2828
:toctree: api/
2929

3030
DataFrame.dtypes
31-
DataFrame.get_dtype_counts
3231
DataFrame.select_dtypes
3332
DataFrame.values
3433
DataFrame.get_values
@@ -363,7 +362,6 @@ Serialization / IO / conversion
363362
DataFrame.to_msgpack
364363
DataFrame.to_gbq
365364
DataFrame.to_records
366-
DataFrame.to_dense
367365
DataFrame.to_string
368366
DataFrame.to_clipboard
369367
DataFrame.style

doc/source/reference/indexing.rst

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ Properties
3232
Index.has_duplicates
3333
Index.hasnans
3434
Index.dtype
35-
Index.dtype_str
3635
Index.inferred_type
3736
Index.is_all_dates
3837
Index.shape

doc/source/reference/series.rst

-1
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,6 @@ Serialization / IO / conversion
579579
Series.to_sql
580580
Series.to_msgpack
581581
Series.to_json
582-
Series.to_dense
583582
Series.to_string
584583
Series.to_clipboard
585584
Series.to_latex

doc/source/whatsnew/v1.0.0.rst

+4
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,10 @@ or ``matplotlib.Axes.plot``. See :ref:`plotting.formatters` for more.
459459
- In :func:`concat` the default value for ``sort`` has been changed from ``None`` to ``False`` (:issue:`20613`)
460460
- Removed previously deprecated "raise_conflict" argument from :meth:`DataFrame.update`, use "errors" instead (:issue:`23585`)
461461
- Removed previously deprecated keyword "n" from :meth:`DatetimeIndex.shift`, :meth:`TimedeltaIndex.shift`, :meth:`PeriodIndex.shift`, use "periods" instead (:issue:`22458`)
462+
- Removed the previously deprecated :meth:`Series.to_dense`, :meth:`DataFrame.to_dense` (:issue:`26684`)
463+
- Removed the previously deprecated :meth:`Index.dtype_str`, use ``str(index.dtype)`` instead (:issue:`27106`)
464+
- :meth:`Categorical.ravel` returns a :class:`Categorical` instead of a ``ndarray`` (:issue:`27199`)
465+
- Removed previously deprecated :meth:`Series.get_dtype_counts` and :meth:`DataFrame.get_dtype_counts` (:issue:`27145`)
462466
- Changed the default ``fill_value`` in :meth:`Categorical.take` from ``True`` to ``False`` (:issue:`20841`)
463467
- Changed the default value for the `raw` argument in :func:`Series.rolling().apply() <pandas.core.window.Rolling.apply>`, :func:`DataFrame.rolling().apply() <pandas.core.window.Rolling.apply>`,
464468
- :func:`Series.expanding().apply() <pandas.core.window.Expanding.apply>`, and :func:`DataFrame.expanding().apply() <pandas.core.window.Expanding.apply>` to ``False`` (:issue:`20584`)

pandas/core/arrays/categorical.py

-18
Original file line numberDiff line numberDiff line change
@@ -1689,24 +1689,6 @@ def _values_for_rank(self):
16891689
)
16901690
return values
16911691

1692-
def ravel(self, order="C"):
1693-
"""
1694-
Return a flattened (numpy) array.
1695-
1696-
For internal compatibility with numpy arrays.
1697-
1698-
Returns
1699-
-------
1700-
numpy.array
1701-
"""
1702-
warn(
1703-
"Categorical.ravel will return a Categorical object instead "
1704-
"of an ndarray in a future version.",
1705-
FutureWarning,
1706-
stacklevel=2,
1707-
)
1708-
return np.array(self)
1709-
17101692
def view(self, dtype=None):
17111693
if dtype is not None:
17121694
raise NotImplementedError(dtype)

pandas/core/dtypes/common.py

-4
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,6 @@ def is_sparse(arr) -> bool:
269269
bool
270270
Whether or not the array-like is a pandas sparse array.
271271
272-
See Also
273-
--------
274-
Series.to_dense : Return dense representation of a Series.
275-
276272
Examples
277273
--------
278274
Returns `True` if the parameter is a 1-D pandas sparse array.

pandas/core/generic.py

+1-66
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ class NDFrame(PandasObject, SelectionMixin):
171171
]
172172
_internal_names_set: Set[str] = set(_internal_names)
173173
_accessors: Set[str] = set()
174-
_deprecations: FrozenSet[str] = frozenset(["get_dtype_counts", "get_values", "ix"])
174+
_deprecations: FrozenSet[str] = frozenset(["get_values", "ix"])
175175
_metadata: List[str] = []
176176
_is_copy = None
177177
_data: BlockManager
@@ -1988,26 +1988,6 @@ def __array_wrap__(self, result, context=None):
19881988
# values = self.values
19891989
# return dict(typestr=values.dtype.str,shape=values.shape,data=values)
19901990

1991-
def to_dense(self):
1992-
"""
1993-
Return dense representation of Series/DataFrame (as opposed to sparse).
1994-
1995-
.. deprecated:: 0.25.0
1996-
1997-
Returns
1998-
-------
1999-
%(klass)s
2000-
Dense %(klass)s.
2001-
"""
2002-
warnings.warn(
2003-
"DataFrame/Series.to_dense is deprecated "
2004-
"and will be removed in a future version",
2005-
FutureWarning,
2006-
stacklevel=2,
2007-
)
2008-
# compat
2009-
return self
2010-
20111991
# ----------------------------------------------------------------------
20121992
# Picklability
20131993

@@ -5520,51 +5500,6 @@ def get_values(self):
55205500
def _internal_get_values(self):
55215501
return self.values
55225502

5523-
def get_dtype_counts(self):
5524-
"""
5525-
Return counts of unique dtypes in this object.
5526-
5527-
.. deprecated:: 0.25.0
5528-
5529-
Use `.dtypes.value_counts()` instead.
5530-
5531-
Returns
5532-
-------
5533-
dtype : Series
5534-
Series with the count of columns with each dtype.
5535-
5536-
See Also
5537-
--------
5538-
dtypes : Return the dtypes in this object.
5539-
5540-
Examples
5541-
--------
5542-
>>> a = [['a', 1, 1.0], ['b', 2, 2.0], ['c', 3, 3.0]]
5543-
>>> df = pd.DataFrame(a, columns=['str', 'int', 'float'])
5544-
>>> df
5545-
str int float
5546-
0 a 1 1.0
5547-
1 b 2 2.0
5548-
2 c 3 3.0
5549-
5550-
>>> df.get_dtype_counts()
5551-
float64 1
5552-
int64 1
5553-
object 1
5554-
dtype: int64
5555-
"""
5556-
warnings.warn(
5557-
"`get_dtype_counts` has been deprecated and will be "
5558-
"removed in a future version. For DataFrames use "
5559-
"`.dtypes.value_counts()",
5560-
FutureWarning,
5561-
stacklevel=2,
5562-
)
5563-
5564-
from pandas import Series
5565-
5566-
return Series(self._data.get_dtype_counts())
5567-
55685503
@property
55695504
def dtypes(self):
55705505
"""

pandas/core/indexes/base.py

+1-16
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ class Index(IndexOpsMixin, PandasObject):
214214
_deprecations: FrozenSet[str] = (
215215
PandasObject._deprecations
216216
| IndexOpsMixin._deprecations
217-
| frozenset(["asobject", "contains", "dtype_str", "get_values", "set_value"])
217+
| frozenset(["contains", "get_values", "set_value"])
218218
)
219219

220220
# To hand over control to subclasses
@@ -670,21 +670,6 @@ def dtype(self):
670670
"""
671671
return self._data.dtype
672672

673-
@property
674-
def dtype_str(self):
675-
"""
676-
Return the dtype str of the underlying data.
677-
678-
.. deprecated:: 0.25.0
679-
"""
680-
warnings.warn(
681-
"`dtype_str` has been deprecated. Call `str` on the "
682-
"dtype attribute instead.",
683-
FutureWarning,
684-
stacklevel=2,
685-
)
686-
return str(self.dtype)
687-
688673
def ravel(self, order="C"):
689674
"""
690675
Return an ndarray of the flattened values of the underlying data.

pandas/tests/extension/test_categorical.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,7 @@ class TestConstructors(base.BaseConstructorsTests):
9393

9494

9595
class TestReshaping(base.BaseReshapingTests):
96-
def test_ravel(self, data):
97-
# GH#27199 Categorical.ravel returns self until after deprecation cycle
98-
with tm.assert_produces_warning(FutureWarning):
99-
data.ravel()
96+
pass
10097

10198

10299
class TestGetitem(base.BaseGetitemTests):

pandas/tests/generic/test_generic.py

-20
Original file line numberDiff line numberDiff line change
@@ -950,23 +950,3 @@ def test_axis_classmethods(self, box):
950950
assert obj._get_axis_number(v) == box._get_axis_number(v)
951951
assert obj._get_axis_name(v) == box._get_axis_name(v)
952952
assert obj._get_block_manager_axis(v) == box._get_block_manager_axis(v)
953-
954-
def test_deprecated_to_dense(self):
955-
# GH 26557: DEPR
956-
# Deprecated 0.25.0
957-
958-
df = pd.DataFrame({"A": [1, 2, 3]})
959-
with tm.assert_produces_warning(FutureWarning):
960-
result = df.to_dense()
961-
tm.assert_frame_equal(result, df)
962-
963-
ser = pd.Series([1, 2, 3])
964-
with tm.assert_produces_warning(FutureWarning):
965-
result = ser.to_dense()
966-
tm.assert_series_equal(result, ser)
967-
968-
def test_deprecated_get_dtype_counts(self):
969-
# GH 18262
970-
df = DataFrame([1])
971-
with tm.assert_produces_warning(FutureWarning):
972-
df.get_dtype_counts()

pandas/tests/indexes/multi/test_format.py

-7
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@
77
import pandas.util.testing as tm
88

99

10-
def test_dtype_str(indices):
11-
with tm.assert_produces_warning(FutureWarning):
12-
dtype = indices.dtype_str
13-
assert isinstance(dtype, str)
14-
assert dtype == str(indices.dtype)
15-
16-
1710
def test_format(idx):
1811
idx.format()
1912
idx[:0].format()

pandas/tests/indexes/period/test_period.py

-11
Original file line numberDiff line numberDiff line change
@@ -156,17 +156,6 @@ def test_shallow_copy_changing_freq_raises(self):
156156
with pytest.raises(IncompatibleFrequency, match=msg):
157157
pi._shallow_copy(pi, freq="H")
158158

159-
def test_dtype_str(self):
160-
pi = pd.PeriodIndex([], freq="M")
161-
with tm.assert_produces_warning(FutureWarning):
162-
assert pi.dtype_str == "period[M]"
163-
assert pi.dtype_str == str(pi.dtype)
164-
165-
with tm.assert_produces_warning(FutureWarning):
166-
pi = pd.PeriodIndex([], freq="3M")
167-
assert pi.dtype_str == "period[3M]"
168-
assert pi.dtype_str == str(pi.dtype)
169-
170159
def test_view_asi8(self):
171160
idx = pd.PeriodIndex([], freq="M")
172161

pandas/tests/indexes/test_common.py

-6
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,6 @@ def test_set_name_methods(self, indices):
158158
assert indices.name == name
159159
assert indices.names == [name]
160160

161-
def test_dtype_str(self, indices):
162-
with tm.assert_produces_warning(FutureWarning):
163-
dtype = indices.dtype_str
164-
assert isinstance(dtype, str)
165-
assert dtype == str(indices.dtype)
166-
167161
def test_hash_error(self, indices):
168162
index = indices
169163
with pytest.raises(

0 commit comments

Comments
 (0)