Skip to content

Commit

Permalink
CLN: Removed levels attribute from Categorical
Browse files Browse the repository at this point in the history
  • Loading branch information
gfyoung committed Jul 14, 2016
1 parent c9a27ed commit f3321cb
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 40 deletions.
1 change: 1 addition & 0 deletions doc/source/whatsnew/v0.19.0.txt
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@ Removal of prior version deprecations/changes

- ``DataFrame.to_csv()`` has dropped the ``engine`` parameter, as was deprecated in 0.17.1 (:issue:`11274`, :issue:`13419`)
- ``DataFrame.to_dict()`` has dropped the ``outtype`` parameter in favor of ``orient`` (:issue:`13627`, :issue:`8486`)
- ``pd.Categorical`` has dropped the ``levels`` attribute in favour of ``categories`` (:issue:`8376`)


.. _whatsnew_0190.performance:
Expand Down
30 changes: 2 additions & 28 deletions pandas/core/categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ class Categorical(PandasObject):
__array_priority__ = 1000
_typ = 'categorical'

def __init__(self, values, categories=None, ordered=False, name=None,
fastpath=False, levels=None):
def __init__(self, values, categories=None, ordered=False,
name=None, fastpath=False):

if fastpath:
# fast path
Expand All @@ -245,17 +245,6 @@ def __init__(self, values, categories=None, ordered=False, name=None,
"name=\"something\")'")
warn(msg, UserWarning, stacklevel=2)

# TODO: Remove after deprecation period in 2017/ after 0.18
if levels is not None:
warn("Creating a 'Categorical' with 'levels' is deprecated, use "
"'categories' instead", FutureWarning, stacklevel=2)
if categories is None:
categories = levels
else:
raise ValueError("Cannot pass in both 'categories' and "
"(deprecated) 'levels', use only "
"'categories'", stacklevel=2)

# sanitize input
if is_categorical_dtype(values):

Expand Down Expand Up @@ -580,21 +569,6 @@ def _get_categories(self):
categories = property(fget=_get_categories, fset=_set_categories,
doc=_categories_doc)

def _set_levels(self, levels):
""" set new levels (deprecated, use "categories") """
warn("Assigning to 'levels' is deprecated, use 'categories'",
FutureWarning, stacklevel=2)
self.categories = levels

def _get_levels(self):
""" Gets the levels (deprecated, use "categories") """
warn("Accessing 'levels' is deprecated, use 'categories'",
FutureWarning, stacklevel=2)
return self.categories

# TODO: Remove after deprecation period in 2017/ after 0.18
levels = property(fget=_get_levels, fset=_set_levels)

_ordered = None

def _set_ordered(self, value):
Expand Down
12 changes: 0 additions & 12 deletions pandas/tests/test_categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -1559,18 +1559,6 @@ def test_deprecated_labels(self):
res = cat.labels
self.assert_numpy_array_equal(res, exp)

def test_deprecated_levels(self):
# TODO: levels is deprecated and should be removed in 0.18 or 2017,
# whatever is earlier
cat = pd.Categorical([1, 2, 3, np.nan], categories=[1, 2, 3])
exp = cat.categories
with tm.assert_produces_warning(FutureWarning):
res = cat.levels
self.assert_index_equal(res, exp)
with tm.assert_produces_warning(FutureWarning):
res = pd.Categorical([1, 2, 3, np.nan], levels=[1, 2, 3])
self.assert_index_equal(res.categories, exp)

def test_removed_names_produces_warning(self):

# 10482
Expand Down

0 comments on commit f3321cb

Please sign in to comment.