Skip to content

Commit 61c5a2d

Browse files
author
tp
committed
updating according to comments
1 parent 6b71d4a commit 61c5a2d

File tree

5 files changed

+41
-29
lines changed

5 files changed

+41
-29
lines changed

doc/source/whatsnew/v0.22.0.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Deprecations
8787
~~~~~~~~~~~~
8888

8989
- ``Series.from_array`` and ``SparseSeries.from_array`` are deprecated. Use the normal constructor ``Series(..)`` and ``SparseSeries(..)`` instead (:issue:`18213`).
90-
- ``NDFrame.as_matrix`` is deprecated. Use ``NDFrame.values`` instead (:issue:`18458`).
90+
- ``DataFrame.as_matrix`` is deprecated. Use ``DataFrame.values`` instead (:issue:`18458`).
9191
-
9292

9393
.. _whatsnew_0220.prior_deprecations:

pandas/core/generic.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -3735,8 +3735,8 @@ def _get_bool_data(self):
37353735

37363736
def as_matrix(self, columns=None):
37373737
"""
3738-
DEPRECATED: This method will be removed in a future version.
3739-
Use :meth:`NDFrame.values` instead.
3738+
DEPRECATED: as_matrix will be removed in a future version.
3739+
Use :meth:`DataFrame.values` instead.
37403740
37413741
Convert the frame to its Numpy-array representation.
37423742
@@ -3773,8 +3773,8 @@ def as_matrix(self, columns=None):
37733773
--------
37743774
pandas.DataFrame.values
37753775
"""
3776-
warnings.warn("This method will be removed in a future version. "
3777-
"Use ``.values`` instead.")
3776+
warnings.warn("method as_matrix will be removed in a future version. "
3777+
"Use ``.values`` instead.", FutureWarning, stacklevel=2)
37783778
self._consolidate_inplace()
37793779
if self._AXIS_REVERSED:
37803780
return self._data.as_matrix(columns).T
@@ -3797,9 +3797,8 @@ def values(self):
37973797
will result in a flot64 dtype.
37983798
"""
37993799
self._consolidate_inplace()
3800-
if self._AXIS_REVERSED:
3801-
return self._data.as_matrix().T
3802-
return self._data.as_matrix()
3800+
bm_axis = self._get_block_manager_axis(axis=1)
3801+
return self._data.as_matrix(axis=bm_axis)
38033802

38043803
@property
38053804
def _values(self):

pandas/core/internals.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -3670,19 +3670,25 @@ def copy(self, deep=True, mgr=None):
36703670
return self.apply('copy', axes=new_axes, deep=deep,
36713671
do_integrity_check=False)
36723672

3673-
def as_matrix(self, items=None):
3673+
def as_matrix(self, axis=1, items=None):
36743674
if len(self.blocks) == 0:
36753675
return np.empty(self.shape, dtype=float)
36763676

3677+
other_axis = abs(axis-1)
36773678
if items is not None:
3678-
mgr = self.reindex_axis(items, axis=0)
3679+
mgr = self.reindex_axis(items, axis=other_axis)
36793680
else:
36803681
mgr = self
36813682

36823683
if self._is_single_block or not self.is_mixed_type:
3683-
return mgr.blocks[0].get_values()
3684+
arr = mgr.blocks[0].get_values()
36843685
else:
3685-
return mgr._interleave()
3686+
arr = mgr._interleave()
3687+
3688+
if axis == 0:
3689+
return arr.T
3690+
else:
3691+
return arr
36863692

36873693
def _interleave(self):
36883694
"""

pandas/tests/frame/test_api.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ def test_values(self):
257257
assert value == frame[col][i]
258258

259259
# mixed type
260-
mat = self.mixed_frame.as_matrix(['foo', 'A'])
260+
mat = self.mixed_frame[['foo', 'A']].values
261261
assert mat[0, 0] == 'bar'
262262

263263
df = self.klass({'real': [1, 2, 3], 'complex': [1j, 2j, 3j]})
@@ -369,6 +369,13 @@ def test_values(self):
369369
self.frame.values[:, 0] = 5.
370370
assert (self.frame.values[:, 0] == 5).all()
371371

372+
def test_as_matrix_deprecated(self):
373+
# GH18458
374+
with tm.assert_produces_warning(FutureWarning):
375+
result = self.frame.as_matrix()
376+
expected = self.frame.values
377+
tm.assert_numpy_array_equal(result, expected)
378+
372379
def test_deepcopy(self):
373380
cp = deepcopy(self.frame)
374381
series = cp['A']

pandas/tests/frame/test_block_internals.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ def test_consolidate_inplace(self):
6767
for letter in range(ord('A'), ord('Z')):
6868
self.frame[chr(letter)] = chr(letter)
6969

70-
def test_as_matrix_consolidate(self):
70+
def test_values_consolidate(self):
7171
self.frame['E'] = 7.
7272
assert not self.frame._data.is_consolidated()
73-
_ = self.frame.as_matrix() # noqa
73+
_ = self.frame.values # noqa
7474
assert self.frame._data.is_consolidated()
7575

7676
def test_modify_values(self):
@@ -91,50 +91,50 @@ def test_boolean_set_uncons(self):
9191
self.frame[self.frame > 1] = 2
9292
assert_almost_equal(expected, self.frame.values)
9393

94-
def test_as_matrix_numeric_cols(self):
94+
def test_values_numeric_cols(self):
9595
self.frame['foo'] = 'bar'
9696

97-
values = self.frame.as_matrix(['A', 'B', 'C', 'D'])
97+
values = self.frame[['A', 'B', 'C', 'D']].values
9898
assert values.dtype == np.float64
9999

100-
def test_as_matrix_lcd(self):
100+
def test_values_lcd(self):
101101

102102
# mixed lcd
103-
values = self.mixed_float.as_matrix(['A', 'B', 'C', 'D'])
103+
values = self.mixed_float[['A', 'B', 'C', 'D']].values
104104
assert values.dtype == np.float64
105105

106-
values = self.mixed_float.as_matrix(['A', 'B', 'C'])
106+
values = self.mixed_float[['A', 'B', 'C']].values
107107
assert values.dtype == np.float32
108108

109-
values = self.mixed_float.as_matrix(['C'])
109+
values = self.mixed_float[['C']].values
110110
assert values.dtype == np.float16
111111

112112
# GH 10364
113113
# B uint64 forces float because there are other signed int types
114-
values = self.mixed_int.as_matrix(['A', 'B', 'C', 'D'])
114+
values = self.mixed_int[['A', 'B', 'C', 'D']].values
115115
assert values.dtype == np.float64
116116

117-
values = self.mixed_int.as_matrix(['A', 'D'])
117+
values = self.mixed_int[['A', 'D']].values
118118
assert values.dtype == np.int64
119119

120120
# B uint64 forces float because there are other signed int types
121-
values = self.mixed_int.as_matrix(['A', 'B', 'C'])
121+
values = self.mixed_int[['A', 'B', 'C']].values
122122
assert values.dtype == np.float64
123123

124124
# as B and C are both unsigned, no forcing to float is needed
125-
values = self.mixed_int.as_matrix(['B', 'C'])
125+
values = self.mixed_int[['B', 'C']].values
126126
assert values.dtype == np.uint64
127127

128-
values = self.mixed_int.as_matrix(['A', 'C'])
128+
values = self.mixed_int[['A', 'C']].values
129129
assert values.dtype == np.int32
130130

131-
values = self.mixed_int.as_matrix(['C', 'D'])
131+
values = self.mixed_int[['C', 'D']].values
132132
assert values.dtype == np.int64
133133

134-
values = self.mixed_int.as_matrix(['A'])
134+
values = self.mixed_int[['A']].values
135135
assert values.dtype == np.int32
136136

137-
values = self.mixed_int.as_matrix(['C'])
137+
values = self.mixed_int[['C']].values
138138
assert values.dtype == np.uint8
139139

140140
def test_constructor_with_convert(self):

0 commit comments

Comments
 (0)