Skip to content

Commit 977eb49

Browse files
jbrockmendelproost
authored andcommitted
DEPR: remove get_values, SparseArray.values (pandas-dev#29989)
1 parent 2603b05 commit 977eb49

File tree

15 files changed

+16
-166
lines changed

15 files changed

+16
-166
lines changed

doc/redirects.csv

-3
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,6 @@ generated/pandas.DataFrame.from_records,../reference/api/pandas.DataFrame.from_r
360360
generated/pandas.DataFrame.ge,../reference/api/pandas.DataFrame.ge
361361
generated/pandas.DataFrame.get,../reference/api/pandas.DataFrame.get
362362
generated/pandas.DataFrame.get_value,../reference/api/pandas.DataFrame.get_value
363-
generated/pandas.DataFrame.get_values,../reference/api/pandas.DataFrame.get_values
364363
generated/pandas.DataFrame.groupby,../reference/api/pandas.DataFrame.groupby
365364
generated/pandas.DataFrame.gt,../reference/api/pandas.DataFrame.gt
366365
generated/pandas.DataFrame.head,../reference/api/pandas.DataFrame.head
@@ -643,7 +642,6 @@ generated/pandas.Index.get_level_values,../reference/api/pandas.Index.get_level_
643642
generated/pandas.Index.get_loc,../reference/api/pandas.Index.get_loc
644643
generated/pandas.Index.get_slice_bound,../reference/api/pandas.Index.get_slice_bound
645644
generated/pandas.Index.get_value,../reference/api/pandas.Index.get_value
646-
generated/pandas.Index.get_values,../reference/api/pandas.Index.get_values
647645
generated/pandas.Index.groupby,../reference/api/pandas.Index.groupby
648646
generated/pandas.Index.has_duplicates,../reference/api/pandas.Index.has_duplicates
649647
generated/pandas.Index.hasnans,../reference/api/pandas.Index.hasnans
@@ -1044,7 +1042,6 @@ generated/pandas.Series.from_csv,../reference/api/pandas.Series.from_csv
10441042
generated/pandas.Series.ge,../reference/api/pandas.Series.ge
10451043
generated/pandas.Series.get,../reference/api/pandas.Series.get
10461044
generated/pandas.Series.get_value,../reference/api/pandas.Series.get_value
1047-
generated/pandas.Series.get_values,../reference/api/pandas.Series.get_values
10481045
generated/pandas.Series.groupby,../reference/api/pandas.Series.groupby
10491046
generated/pandas.Series.gt,../reference/api/pandas.Series.gt
10501047
generated/pandas.Series.hasnans,../reference/api/pandas.Series.hasnans

doc/source/reference/frame.rst

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ Attributes and underlying data
3030
DataFrame.dtypes
3131
DataFrame.select_dtypes
3232
DataFrame.values
33-
DataFrame.get_values
3433
DataFrame.axes
3534
DataFrame.ndim
3635
DataFrame.size

doc/source/reference/indexing.rst

-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ Selecting
159159
Index.get_loc
160160
Index.get_slice_bound
161161
Index.get_value
162-
Index.get_values
163162
Index.isin
164163
Index.slice_indexer
165164
Index.slice_locs

doc/source/reference/series.rst

-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ Conversion
5353
Series.to_period
5454
Series.to_timestamp
5555
Series.to_list
56-
Series.get_values
5756
Series.__array__
5857

5958
Indexing, iteration

pandas/_libs/reduction.pyx

+1-10
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,6 @@ cdef _check_result_array(object obj, Py_ssize_t cnt):
2626
raise ValueError('Function does not reduce')
2727

2828

29-
cdef bint _is_sparse_array(object obj):
30-
# TODO can be removed one SparseArray.values is removed (GH26421)
31-
if hasattr(obj, '_subtyp'):
32-
if obj._subtyp == 'sparse_array':
33-
return True
34-
return False
35-
36-
3729
cdef class Reducer:
3830
"""
3931
Performs generic reduction operation on a C or Fortran-contiguous ndarray
@@ -404,8 +396,7 @@ cdef class SeriesGrouper(_BaseGrouper):
404396
cdef inline _extract_result(object res, bint squeeze=True):
405397
""" extract the result object, it might be a 0-dim ndarray
406398
or a len-1 0-dim, or a scalar """
407-
if (not _is_sparse_array(res) and hasattr(res, 'values')
408-
and util.is_array(res.values)):
399+
if hasattr(res, 'values') and util.is_array(res.values):
409400
res = res.values
410401
if util.is_array(res):
411402
if res.ndim == 0:

pandas/core/arrays/categorical.py

+3-16
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,7 @@ class Categorical(ExtensionArray, PandasObject):
302302
__array_priority__ = 1000
303303
_dtype = CategoricalDtype(ordered=False)
304304
# tolist is not actually deprecated, just suppressed in the __dir__
305-
_deprecations = PandasObject._deprecations | frozenset(
306-
["tolist", "itemsize", "get_values"]
307-
)
305+
_deprecations = PandasObject._deprecations | frozenset(["tolist", "itemsize"])
308306
_typ = "categorical"
309307

310308
def __init__(
@@ -1461,29 +1459,18 @@ def value_counts(self, dropna=True):
14611459

14621460
return Series(count, index=CategoricalIndex(ix), dtype="int64")
14631461

1464-
def get_values(self):
1462+
def _internal_get_values(self):
14651463
"""
14661464
Return the values.
14671465
1468-
.. deprecated:: 0.25.0
1469-
14701466
For internal compatibility with pandas formatting.
14711467
14721468
Returns
14731469
-------
1474-
numpy.array
1470+
np.ndarray or Index
14751471
A numpy array of the same dtype as categorical.categories.dtype or
14761472
Index if datetime / periods.
14771473
"""
1478-
warn(
1479-
"The 'get_values' method is deprecated and will be removed in a "
1480-
"future version",
1481-
FutureWarning,
1482-
stacklevel=2,
1483-
)
1484-
return self._internal_get_values()
1485-
1486-
def _internal_get_values(self):
14871474
# if we are a datetime and period index, return Index to keep metadata
14881475
if needs_i8_conversion(self.categories):
14891476
return self.categories.take(self._codes, fill_value=np.nan)

pandas/core/arrays/sparse/array.py

-33
Original file line numberDiff line numberDiff line change
@@ -568,23 +568,6 @@ def npoints(self) -> int:
568568
"""
569569
return self.sp_index.npoints
570570

571-
@property
572-
def values(self):
573-
"""
574-
Dense values
575-
576-
.. deprecated:: 0.25.0
577-
578-
Use ``np.asarray(...)`` or the ``.to_dense()`` method instead.
579-
"""
580-
msg = (
581-
"The SparseArray.values attribute is deprecated and will be "
582-
"removed in a future version. You can use `np.asarray(...)` or "
583-
"the `.to_dense()` method instead."
584-
)
585-
warnings.warn(msg, FutureWarning, stacklevel=2)
586-
return self.to_dense()
587-
588571
def isna(self):
589572
# If null fill value, we want SparseDtype[bool, true]
590573
# to preserve the same memory usage.
@@ -1137,22 +1120,6 @@ def to_dense(self):
11371120
"""
11381121
return np.asarray(self, dtype=self.sp_values.dtype)
11391122

1140-
def get_values(self):
1141-
"""
1142-
Convert SparseArray to a NumPy array.
1143-
1144-
.. deprecated:: 0.25.0
1145-
Use `to_dense` instead.
1146-
1147-
"""
1148-
warnings.warn(
1149-
"The 'get_values' method is deprecated and will be removed in a "
1150-
"future version. Use the 'to_dense' method instead.",
1151-
FutureWarning,
1152-
stacklevel=2,
1153-
)
1154-
return self._internal_get_values()
1155-
11561123
_internal_get_values = to_dense
11571124

11581125
# ------------------------------------------------------------------------

pandas/core/generic.py

+2-39
Original file line numberDiff line numberDiff line change
@@ -5506,13 +5506,10 @@ def _get_values(self):
55065506
# compat
55075507
return self.values
55085508

5509-
def get_values(self):
5509+
def _internal_get_values(self):
55105510
"""
55115511
Return an ndarray after converting sparse values to dense.
55125512
5513-
.. deprecated:: 0.25.0
5514-
Use ``np.asarray(..)`` or :meth:`DataFrame.values` instead.
5515-
55165513
This is the same as ``.values`` for non-sparse data. For sparse
55175514
data contained in a `SparseArray`, the data are first
55185515
converted to a dense representation.
@@ -5526,41 +5523,7 @@ def get_values(self):
55265523
--------
55275524
values : Numpy representation of DataFrame.
55285525
SparseArray : Container for sparse data.
5529-
5530-
Examples
5531-
--------
5532-
>>> df = pd.DataFrame({'a': [1, 2], 'b': [True, False],
5533-
... 'c': [1.0, 2.0]})
5534-
>>> df
5535-
a b c
5536-
0 1 True 1.0
5537-
1 2 False 2.0
5538-
5539-
>>> df.get_values()
5540-
array([[1, True, 1.0], [2, False, 2.0]], dtype=object)
5541-
5542-
>>> df = pd.DataFrame({"a": pd.SparseArray([1, None, None]),
5543-
... "c": [1.0, 2.0, 3.0]})
5544-
>>> df
5545-
a c
5546-
0 1.0 1.0
5547-
1 NaN 2.0
5548-
2 NaN 3.0
5549-
5550-
>>> df.get_values()
5551-
array([[ 1., 1.],
5552-
[nan, 2.],
5553-
[nan, 3.]])
5554-
"""
5555-
warnings.warn(
5556-
"The 'get_values' method is deprecated and will be removed in a "
5557-
"future version. Use '.values' or 'np.asarray(..)' instead.",
5558-
FutureWarning,
5559-
stacklevel=2,
5560-
)
5561-
return self._internal_get_values()
5562-
5563-
def _internal_get_values(self):
5526+
"""
55645527
return self.values
55655528

55665529
@property

pandas/core/indexes/base.py

+7-19
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ class Index(IndexOpsMixin, PandasObject):
215215
_deprecations: FrozenSet[str] = (
216216
PandasObject._deprecations
217217
| IndexOpsMixin._deprecations
218-
| frozenset(["contains", "get_values", "set_value"])
218+
| frozenset(["contains", "set_value"])
219219
)
220220

221221
# To hand over control to subclasses
@@ -3753,21 +3753,18 @@ def _values(self) -> Union[ExtensionArray, ABCIndexClass, np.ndarray]:
37533753
"""
37543754
return self._data
37553755

3756-
def get_values(self):
3756+
def _internal_get_values(self):
37573757
"""
37583758
Return `Index` data as an `numpy.ndarray`.
37593759
3760-
.. deprecated:: 0.25.0
3761-
Use :meth:`Index.to_numpy` or :attr:`Index.array` instead.
3762-
37633760
Returns
37643761
-------
37653762
numpy.ndarray
37663763
A one-dimensional numpy array of the `Index` values.
37673764
37683765
See Also
37693766
--------
3770-
Index.values : The attribute that get_values wraps.
3767+
Index.values : The attribute that _internal_get_values wraps.
37713768
37723769
Examples
37733770
--------
@@ -3780,33 +3777,24 @@ def get_values(self):
37803777
a 1 2 3
37813778
b 4 5 6
37823779
c 7 8 9
3783-
>>> df.index.get_values()
3780+
>>> df.index._internal_get_values()
37843781
array(['a', 'b', 'c'], dtype=object)
37853782
37863783
Standalone `Index` values:
37873784
37883785
>>> idx = pd.Index(['1', '2', '3'])
3789-
>>> idx.get_values()
3786+
>>> idx._internal_get_values()
37903787
array(['1', '2', '3'], dtype=object)
37913788
37923789
`MultiIndex` arrays also have only one dimension:
37933790
37943791
>>> midx = pd.MultiIndex.from_arrays([[1, 2, 3], ['a', 'b', 'c']],
37953792
... names=('number', 'letter'))
3796-
>>> midx.get_values()
3793+
>>> midx._internal_get_values()
37973794
array([(1, 'a'), (2, 'b'), (3, 'c')], dtype=object)
3798-
>>> midx.get_values().ndim
3795+
>>> midx._internal_get_values().ndim
37993796
1
38003797
"""
3801-
warnings.warn(
3802-
"The 'get_values' method is deprecated and will be removed in a "
3803-
"future version. Use '.to_numpy()' or '.array' instead.",
3804-
FutureWarning,
3805-
stacklevel=2,
3806-
)
3807-
return self._internal_get_values()
3808-
3809-
def _internal_get_values(self):
38103798
return self.values
38113799

38123800
@Appender(IndexOpsMixin.memory_usage.__doc__)

pandas/core/series.py

+1-12
Original file line numberDiff line numberDiff line change
@@ -465,27 +465,16 @@ def _values(self):
465465
"""
466466
return self._data.internal_values()
467467

468-
def get_values(self):
468+
def _internal_get_values(self):
469469
"""
470470
Same as values (but handles sparseness conversions); is a view.
471471
472-
.. deprecated:: 0.25.0
473-
Use :meth:`Series.to_numpy` or :attr:`Series.array` instead.
474-
475472
Returns
476473
-------
477474
numpy.ndarray
478475
Data of the Series.
479476
"""
480-
warnings.warn(
481-
"The 'get_values' method is deprecated and will be removed in a "
482-
"future version. Use '.to_numpy()' or '.array' instead.",
483-
FutureWarning,
484-
stacklevel=2,
485-
)
486-
return self._internal_get_values()
487477

488-
def _internal_get_values(self):
489478
return self._data.get_values()
490479

491480
# ops

pandas/tests/arrays/categorical/test_api.py

-6
Original file line numberDiff line numberDiff line change
@@ -504,9 +504,3 @@ def test_recode_to_categories_large(self):
504504
new = Index(expected)
505505
result = _recode_for_categories(codes, old, new)
506506
tm.assert_numpy_array_equal(result, expected)
507-
508-
def test_deprecated_get_values(self):
509-
cat = Categorical(["a", "b", "c", "a"])
510-
with tm.assert_produces_warning(FutureWarning):
511-
res = cat.get_values()
512-
tm.assert_numpy_array_equal(res, np.array(cat))

pandas/tests/arrays/sparse/test_array.py

+1-11
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,7 @@ def test_dense_repr(self, vals, fill_value):
617617
res = arr.to_dense()
618618
tm.assert_numpy_array_equal(res, vals)
619619

620-
with tm.assert_produces_warning(FutureWarning):
621-
res2 = arr.get_values()
620+
res2 = arr._internal_get_values()
622621

623622
tm.assert_numpy_array_equal(res2, vals)
624623

@@ -1244,12 +1243,3 @@ def test_map_missing():
12441243

12451244
result = arr.map({0: 10, 1: 11})
12461245
tm.assert_sp_array_equal(result, expected)
1247-
1248-
1249-
def test_deprecated_values():
1250-
arr = SparseArray([0, 1, 2])
1251-
1252-
with tm.assert_produces_warning(FutureWarning):
1253-
result = arr.values
1254-
1255-
tm.assert_numpy_array_equal(result, arr.to_dense())

pandas/tests/frame/test_api.py

-6
Original file line numberDiff line numberDiff line change
@@ -528,9 +528,3 @@ def test_tab_complete_warning(self, ip):
528528
with tm.assert_produces_warning(None):
529529
with provisionalcompleter("ignore"):
530530
list(ip.Completer.completions("df.", 1))
531-
532-
def test_get_values_deprecated(self):
533-
df = DataFrame({"a": [1, 2], "b": [0.1, 0.2]})
534-
with tm.assert_produces_warning(FutureWarning):
535-
res = df.get_values()
536-
tm.assert_numpy_array_equal(res, df.values)

pandas/tests/indexes/period/test_period.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,7 @@ def test_values(self):
180180
exp = np.array([], dtype=np.object)
181181
tm.assert_numpy_array_equal(idx.values, exp)
182182
tm.assert_numpy_array_equal(idx.to_numpy(), exp)
183-
with tm.assert_produces_warning(FutureWarning):
184-
tm.assert_numpy_array_equal(idx.get_values(), exp)
183+
185184
exp = np.array([], dtype=np.int64)
186185
tm.assert_numpy_array_equal(idx._ndarray_values, exp)
187186

pandas/tests/series/test_api.py

-6
Original file line numberDiff line numberDiff line change
@@ -498,12 +498,6 @@ def test_integer_series_size(self):
498498
s = Series(range(9), dtype="Int64")
499499
assert s.size == 9
500500

501-
def test_get_values_deprecation(self):
502-
s = Series(range(9))
503-
with tm.assert_produces_warning(FutureWarning):
504-
res = s.get_values()
505-
tm.assert_numpy_array_equal(res, s.values)
506-
507501

508502
class TestCategoricalSeries:
509503
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)