Skip to content

Commit

Permalink
COMPAT: Support pandas 019 (#83)
Browse files Browse the repository at this point in the history
  • Loading branch information
sinhrks committed Oct 8, 2016
1 parent 870ef8f commit b9d1d50
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 16 deletions.
10 changes: 5 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
language: python

env:
- PYTHON=2.7 PANDAS=0.17.1 SKLEARN=0.17.1
- PYTHON=2.7 PANDAS=0.18.1 SKLEARN=0.18.0 IMBALANCE=true
- PYTHON=3.4 PANDAS=0.16.1 SKLEARN=0.16.1
- PYTHON=3.4 PANDAS=0.17.1 SKLEARN=0.17.1
- PYTHON=3.5 PANDAS=0.18.1 SKLEARN=0.18.0 IMBALANCE=true COVERAGE=true
- PYTHON=2.7 PANDAS=0.18.1 SKLEARN=0.17.1
- PYTHON=2.7 PANDAS=0.19.0 SKLEARN=0.18.0 IMBALANCE=true
- PYTHON=3.4 PANDAS=0.17.1 SKLEARN=0.16.1
- PYTHON=3.4 PANDAS=0.18.1 SKLEARN=0.17.1
- PYTHON=3.5 PANDAS=0.19.0 SKLEARN=0.18.0 IMBALANCE=true COVERAGE=true

addons:
apt:
Expand Down
11 changes: 11 additions & 0 deletions pandas_ml/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

from distutils.version import LooseVersion

import pandas as pd

PANDAS_VERSION = LooseVersion(pd.__version__)
if PANDAS_VERSION >= LooseVersion('0.19'):
_PANDAS_ge_019 = True
from pandas.api.types import is_list_like, is_integer_dtype # noqa

else:
_PANDAS_ge_019 = False
from pandas.core.common import is_list_like, is_integer_dtype # noqa

try:
import sklearn
_SKLEARN_INSTALLED = True
Expand Down
14 changes: 8 additions & 6 deletions pandas_ml/core/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

import numpy as np
import pandas as pd
import pandas.core.common as com
import pandas.compat as compat
from pandas.util.decorators import Appender, cache_readonly

from pandas_ml.compat import is_list_like
from pandas_ml.core.generic import ModelPredictor, _shared_docs
from pandas_ml.core.series import ModelSeries
from pandas_ml.core.accessor import _AccessorMethods
Expand Down Expand Up @@ -58,7 +58,7 @@ def __init__(self, data, target=None,
if data is None and target is None:
msg = '{0} must have either data or target'
raise ValueError(msg.format(self.__class__.__name__))
elif data is None and not com.is_list_like(target):
elif data is None and not is_list_like(target):
msg = 'target must be list-like when data is None'
raise ValueError(msg)

Expand All @@ -71,7 +71,7 @@ def __init__(self, data, target=None,

data, target = self._maybe_convert_data(data, target, *args, **kwargs)

if target is not None and not com.is_list_like(target):
if target is not None and not is_list_like(target):
if target in data.columns:
target_name = target
df = data
Expand Down Expand Up @@ -127,7 +127,7 @@ def _maybe_convert_target(data, target, index=None):
if data is not None:
data = pd.DataFrame(data, *args, **kwargs)

if com.is_list_like(target):
if is_list_like(target):
target = _maybe_convert_target(data, target)

elif not init_df:
Expand All @@ -136,7 +136,7 @@ def _maybe_convert_target(data, target, index=None):
data = pd.DataFrame(data, index=index, *args, **kwargs)

elif not init_target:
if com.is_list_like(target):
if is_list_like(target):
target = _maybe_convert_target(data, target)

else:
Expand Down Expand Up @@ -167,6 +167,8 @@ def _concat_target(self, data, target):

def _add_meta_columns(df, meta_name):
df = df.copy()
if not is_list_like(meta_name):
meta_name = [meta_name]
df.columns = pd.MultiIndex.from_product([meta_name, df.columns])
return df

Expand Down Expand Up @@ -326,7 +328,7 @@ def target(self, target):
# DataFrame.columns should have values
self.target_name = target.columns

if not com.is_list_like(target):
if not is_list_like(target):
if target in self.columns:
self.target_name = target
else:
Expand Down
8 changes: 4 additions & 4 deletions pandas_ml/skaccessors/preprocessing.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#!/usr/bin/env python

import numpy as np
import pandas as pd

from pandas_ml.core.accessor import _AccessorMethods, _attach_methods
from pandas_ml.compat import _SKLEARN_INSTALLED, _SKLEARN_ge_017
from pandas_ml.compat import (_SKLEARN_INSTALLED, _SKLEARN_ge_017,
is_integer_dtype)


if _SKLEARN_INSTALLED:
Expand Down Expand Up @@ -81,7 +81,7 @@ def f(self, *args, **kwargs):
if isinstance(self._df, ModelFrame):
values = self._data.values

if pd.core.common.is_integer_dtype(values):
if is_integer_dtype(values):
# integer raises an error in normalize
values = values.astype(np.float)

Expand All @@ -91,7 +91,7 @@ def f(self, *args, **kwargs):
else:
# ModelSeries
values = np.atleast_2d(self._df.values)
if pd.core.common.is_integer_dtype(values):
if is_integer_dtype(values):
values = values.astype(np.float)

result = func(values, *args, **kwargs)
Expand Down
3 changes: 2 additions & 1 deletion pandas_ml/skaccessors/test/test_linear_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ def test_lars_path(self):

self.assertEqual(len(result), 3)
self.assert_numpy_array_equal(result[0], expected[0])
self.assert_numpy_array_equal(result[1], expected[1])
self.assertEqual(result[1], expected[1])
self.assertIsInstance(result[1], list)
self.assertIsInstance(result[2], pdml.ModelFrame)
self.assert_index_equal(result[2].index, df.data.columns)
self.assert_numpy_array_equal(result[2].values, expected[2])
Expand Down

0 comments on commit b9d1d50

Please sign in to comment.