Skip to content

Commit f5415d8

Browse files
topper-123jorisvandenbossche
authored andcommitted
DEPR: Deprecate Series.valid (pandas-dev#18800)
1 parent c28b624 commit f5415d8

File tree

12 files changed

+37
-26
lines changed

12 files changed

+37
-26
lines changed

doc/source/whatsnew/v0.22.0.txt

+1
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ Deprecations
203203
- ``Series.from_array`` and ``SparseSeries.from_array`` are deprecated. Use the normal constructor ``Series(..)`` and ``SparseSeries(..)`` instead (:issue:`18213`).
204204
- ``DataFrame.as_matrix`` is deprecated. Use ``DataFrame.values`` instead (:issue:`18458`).
205205
- ``Series.asobject``, ``DatetimeIndex.asobject``, ``PeriodIndex.asobject`` and ``TimeDeltaIndex.asobject`` have been deprecated. Use ``.astype(object)`` instead (:issue:`18572`)
206+
- ``Series.valid`` is deprecated. Use :meth:`Series.dropna` instead (:issue:`18800`).
206207

207208
.. _whatsnew_0220.prior_deprecations:
208209

pandas/core/series.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class Series(base.IndexOpsMixin, generic.NDFrame):
150150
_accessors = frozenset(['dt', 'cat', 'str'])
151151
_deprecations = generic.NDFrame._deprecations | frozenset(
152152
['asobject', 'sortlevel', 'reshape', 'get_value', 'set_value',
153-
'from_csv'])
153+
'from_csv', 'valid'])
154154
_allow_index_ops = True
155155

156156
def __init__(self, data=None, index=None, dtype=None, name=None,
@@ -3006,8 +3006,13 @@ def dropna(self, axis=0, inplace=False, **kwargs):
30063006
else:
30073007
return self.copy()
30083008

3009-
valid = lambda self, inplace=False, **kwargs: self.dropna(inplace=inplace,
3010-
**kwargs)
3009+
def valid(self, inplace=False, **kwargs):
3010+
"""DEPRECATED. Series.valid will be removed in a future version.
3011+
Use :meth:`Series.dropna` instead.
3012+
"""
3013+
warnings.warn("Method .valid will be removed in a future version. "
3014+
"Use .dropna instead.", FutureWarning, stacklevel=2)
3015+
return self.dropna(inplace=inplace, **kwargs)
30113016

30123017
@Appender(generic._shared_docs['valid_index'] % {
30133018
'position': 'first', 'klass': 'Series'})

pandas/core/sparse/series.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ def dropna(self, axis=0, inplace=False, **kwargs):
701701
"""
702702
# TODO: make more efficient
703703
axis = self._get_axis_number(axis or 0)
704-
dense_valid = self.to_dense().valid()
704+
dense_valid = self.to_dense().dropna()
705705
if inplace:
706706
raise NotImplementedError("Cannot perform inplace dropna"
707707
" operations on a SparseSeries")

pandas/tests/frame/test_operators.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -766,10 +766,10 @@ def test_combineFrame(self):
766766

767767
added = self.frame + frame_copy
768768

769-
indexer = added['A'].valid().index
769+
indexer = added['A'].dropna().index
770770
exp = (self.frame['A'] * 2).copy()
771771

772-
tm.assert_series_equal(added['A'].valid(), exp.loc[indexer])
772+
tm.assert_series_equal(added['A'].dropna(), exp.loc[indexer])
773773

774774
exp.loc[~exp.index.isin(indexer)] = np.nan
775775
tm.assert_series_equal(added['A'], exp.loc[added['A'].index])

pandas/tests/frame/test_timeseries.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def test_shift(self):
213213
unshifted = shifted.shift(-1)
214214
tm.assert_index_equal(shifted.index, ps.index)
215215
tm.assert_index_equal(unshifted.index, ps.index)
216-
tm.assert_numpy_array_equal(unshifted.iloc[:, 0].valid().values,
216+
tm.assert_numpy_array_equal(unshifted.iloc[:, 0].dropna().values,
217217
ps.iloc[:-1, 0].values)
218218

219219
shifted2 = ps.shift(1, 'B')

pandas/tests/generic/test_series.py

+5
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,8 @@ def test_to_xarray(self):
222222
assert_almost_equal(list(result.coords.keys()), ['one', 'two'])
223223
assert isinstance(result, DataArray)
224224
assert_series_equal(result.to_series(), s)
225+
226+
def test_valid_deprecated(self):
227+
# GH18800
228+
with tm.assert_produces_warning(FutureWarning):
229+
pd.Series([]).valid()

pandas/tests/series/test_analytics.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ def test_cummin(self):
395395
ts = self.ts.copy()
396396
ts[::2] = np.NaN
397397
result = ts.cummin()[1::2]
398-
expected = np.minimum.accumulate(ts.valid())
398+
expected = np.minimum.accumulate(ts.dropna())
399399

400400
tm.assert_series_equal(result, expected)
401401

@@ -405,7 +405,7 @@ def test_cummax(self):
405405
ts = self.ts.copy()
406406
ts[::2] = np.NaN
407407
result = ts.cummax()[1::2]
408-
expected = np.maximum.accumulate(ts.valid())
408+
expected = np.maximum.accumulate(ts.dropna())
409409

410410
tm.assert_series_equal(result, expected)
411411

@@ -569,7 +569,7 @@ def _check_accum_op(self, name, check_dtype=True):
569569
ts[::2] = np.NaN
570570

571571
result = func(ts)[1::2]
572-
expected = func(np.array(ts.valid()))
572+
expected = func(np.array(ts.dropna()))
573573

574574
tm.assert_numpy_array_equal(result.values, expected,
575575
check_dtype=False)
@@ -1527,7 +1527,7 @@ def test_shift_categorical(self):
15271527
# GH 9416
15281528
s = pd.Series(['a', 'b', 'c', 'd'], dtype='category')
15291529

1530-
assert_series_equal(s.iloc[:-1], s.shift(1).shift(-1).valid())
1530+
assert_series_equal(s.iloc[:-1], s.shift(1).shift(-1).dropna())
15311531

15321532
sp1 = s.shift(1)
15331533
assert_index_equal(s.index, sp1.index)

pandas/tests/series/test_missing.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ def test_valid(self):
695695
ts = self.ts.copy()
696696
ts[::2] = np.NaN
697697

698-
result = ts.valid()
698+
result = ts.dropna()
699699
assert len(result) == ts.count()
700700
tm.assert_series_equal(result, ts[1::2])
701701
tm.assert_series_equal(result, ts[pd.notna(ts)])

pandas/tests/series/test_quantile.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ class TestSeriesQuantile(TestData):
1717
def test_quantile(self):
1818

1919
q = self.ts.quantile(0.1)
20-
assert q == np.percentile(self.ts.valid(), 10)
20+
assert q == np.percentile(self.ts.dropna(), 10)
2121

2222
q = self.ts.quantile(0.9)
23-
assert q == np.percentile(self.ts.valid(), 90)
23+
assert q == np.percentile(self.ts.dropna(), 90)
2424

2525
# object dtype
2626
q = Series(self.ts, dtype=object).quantile(0.9)
27-
assert q == np.percentile(self.ts.valid(), 90)
27+
assert q == np.percentile(self.ts.dropna(), 90)
2828

2929
# datetime64[ns] dtype
3030
dts = self.ts.index.to_series()
@@ -49,8 +49,8 @@ def test_quantile_multi(self):
4949

5050
qs = [.1, .9]
5151
result = self.ts.quantile(qs)
52-
expected = pd.Series([np.percentile(self.ts.valid(), 10),
53-
np.percentile(self.ts.valid(), 90)],
52+
expected = pd.Series([np.percentile(self.ts.dropna(), 10),
53+
np.percentile(self.ts.dropna(), 90)],
5454
index=qs, name=self.ts.name)
5555
tm.assert_series_equal(result, expected)
5656

@@ -72,9 +72,9 @@ def test_quantile_interpolation(self):
7272

7373
# interpolation = linear (default case)
7474
q = self.ts.quantile(0.1, interpolation='linear')
75-
assert q == np.percentile(self.ts.valid(), 10)
75+
assert q == np.percentile(self.ts.dropna(), 10)
7676
q1 = self.ts.quantile(0.1)
77-
assert q1 == np.percentile(self.ts.valid(), 10)
77+
assert q1 == np.percentile(self.ts.dropna(), 10)
7878

7979
# test with and without interpolation keyword
8080
assert q == q1

pandas/tests/series/test_sorting.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ def test_sort_values(self):
5050

5151
# ascending=False
5252
ordered = ts.sort_values(ascending=False)
53-
expected = np.sort(ts.valid().values)[::-1]
54-
assert_almost_equal(expected, ordered.valid().values)
53+
expected = np.sort(ts.dropna().values)[::-1]
54+
assert_almost_equal(expected, ordered.dropna().values)
5555
ordered = ts.sort_values(ascending=False, na_position='first')
56-
assert_almost_equal(expected, ordered.valid().values)
56+
assert_almost_equal(expected, ordered.dropna().values)
5757

5858
# ascending=[False] should behave the same as ascending=False
5959
ordered = ts.sort_values(ascending=[False])

pandas/tests/series/test_timeseries.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_shift(self):
4242

4343
tm.assert_index_equal(shifted.index, self.ts.index)
4444
tm.assert_index_equal(unshifted.index, self.ts.index)
45-
tm.assert_numpy_array_equal(unshifted.valid().values,
45+
tm.assert_numpy_array_equal(unshifted.dropna().values,
4646
self.ts.values[:-1])
4747

4848
offset = BDay()
@@ -69,7 +69,7 @@ def test_shift(self):
6969
unshifted = shifted.shift(-1)
7070
tm.assert_index_equal(shifted.index, ps.index)
7171
tm.assert_index_equal(unshifted.index, ps.index)
72-
tm.assert_numpy_array_equal(unshifted.valid().values, ps.values[:-1])
72+
tm.assert_numpy_array_equal(unshifted.dropna().values, ps.values[:-1])
7373

7474
shifted2 = ps.shift(1, 'B')
7575
shifted3 = ps.shift(1, BDay())

pandas/tests/sparse/test_series.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -797,9 +797,9 @@ def _compare_all(obj):
797797
def test_dropna(self):
798798
sp = SparseSeries([0, 0, 0, nan, nan, 5, 6], fill_value=0)
799799

800-
sp_valid = sp.valid()
800+
sp_valid = sp.dropna()
801801

802-
expected = sp.to_dense().valid()
802+
expected = sp.to_dense().dropna()
803803
expected = expected[expected != 0]
804804
exp_arr = pd.SparseArray(expected.values, fill_value=0, kind='block')
805805
tm.assert_sp_array_equal(sp_valid.values, exp_arr)

0 commit comments

Comments
 (0)