Skip to content

Commit 7ac476e

Browse files
committed
Pure copy/paste of _check_stat_op and _check_bool_op
1 parent f1a394a commit 7ac476e

File tree

1 file changed

+141
-139
lines changed

1 file changed

+141
-139
lines changed

pandas/tests/frame/test_analytics.py

+141-139
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,147 @@
2525
import pandas.util._test_decorators as td
2626

2727

28+
def _check_stat_op(self, name, alternative, main_frame, float_frame,
29+
float_string_frame, has_skipna=True,
30+
has_numeric_only=False, check_dtype=True,
31+
check_dates=False, check_less_precise=False,
32+
skipna_alternative=None):
33+
34+
f = getattr(main_frame, name)
35+
36+
if check_dates:
37+
df = DataFrame({'b': date_range('1/1/2001', periods=2)})
38+
_f = getattr(df, name)
39+
result = _f()
40+
assert isinstance(result, Series)
41+
42+
df['a'] = lrange(len(df))
43+
result = getattr(df, name)()
44+
assert isinstance(result, Series)
45+
assert len(result)
46+
47+
if has_skipna:
48+
def wrapper(x):
49+
return alternative(x.values)
50+
51+
skipna_wrapper = tm._make_skipna_wrapper(alternative,
52+
skipna_alternative)
53+
result0 = f(axis=0, skipna=False)
54+
result1 = f(axis=1, skipna=False)
55+
tm.assert_series_equal(result0, main_frame.apply(wrapper),
56+
check_dtype=check_dtype,
57+
check_less_precise=check_less_precise)
58+
# HACK: win32
59+
tm.assert_series_equal(result1, main_frame.apply(wrapper, axis=1),
60+
check_dtype=False,
61+
check_less_precise=check_less_precise)
62+
else:
63+
skipna_wrapper = alternative
64+
65+
result0 = f(axis=0)
66+
result1 = f(axis=1)
67+
tm.assert_series_equal(result0, main_frame.apply(skipna_wrapper),
68+
check_dtype=check_dtype,
69+
check_less_precise=check_less_precise)
70+
if name in ['sum', 'prod']:
71+
expected = main_frame.apply(skipna_wrapper, axis=1)
72+
tm.assert_series_equal(result1, expected, check_dtype=False,
73+
check_less_precise=check_less_precise)
74+
75+
# check dtypes
76+
if check_dtype:
77+
lcd_dtype = main_frame.values.dtype
78+
assert lcd_dtype == result0.dtype
79+
assert lcd_dtype == result1.dtype
80+
81+
# bad axis
82+
tm.assert_raises_regex(ValueError, 'No axis named 2', f, axis=2)
83+
# make sure works on mixed-type frame
84+
getattr(float_string_frame, name)(axis=0)
85+
getattr(float_string_frame, name)(axis=1)
86+
87+
if has_numeric_only:
88+
getattr(float_string_frame, name)(axis=0, numeric_only=True)
89+
getattr(float_string_frame, name)(axis=1, numeric_only=True)
90+
getattr(float_frame, name)(axis=0, numeric_only=False)
91+
getattr(float_frame, name)(axis=1, numeric_only=False)
92+
93+
# all NA case
94+
if has_skipna:
95+
all_na = float_frame * np.NaN
96+
r0 = getattr(all_na, name)(axis=0)
97+
r1 = getattr(all_na, name)(axis=1)
98+
if name in ['sum', 'prod']:
99+
unit = int(name == 'prod')
100+
expected = pd.Series(unit, index=r0.index, dtype=r0.dtype)
101+
tm.assert_series_equal(r0, expected)
102+
expected = pd.Series(unit, index=r1.index, dtype=r1.dtype)
103+
tm.assert_series_equal(r1, expected)
104+
105+
106+
def _check_bool_op(self, name, alternative, frame, float_string_frame,
107+
has_skipna=True, has_bool_only=False):
108+
109+
f = getattr(frame, name)
110+
111+
if has_skipna:
112+
def skipna_wrapper(x):
113+
nona = x.dropna().values
114+
return alternative(nona)
115+
116+
def wrapper(x):
117+
return alternative(x.values)
118+
119+
result0 = f(axis=0, skipna=False)
120+
result1 = f(axis=1, skipna=False)
121+
tm.assert_series_equal(result0, frame.apply(wrapper))
122+
tm.assert_series_equal(result1, frame.apply(wrapper, axis=1),
123+
check_dtype=False) # HACK: win32
124+
else:
125+
skipna_wrapper = alternative
126+
wrapper = alternative
127+
128+
result0 = f(axis=0)
129+
result1 = f(axis=1)
130+
tm.assert_series_equal(result0, frame.apply(skipna_wrapper))
131+
tm.assert_series_equal(result1, frame.apply(skipna_wrapper, axis=1),
132+
check_dtype=False)
133+
134+
# bad axis
135+
pytest.raises(ValueError, f, axis=2)
136+
137+
# make sure works on mixed-type frame
138+
mixed = float_string_frame
139+
mixed['_bool_'] = np.random.randn(len(mixed)) > 0
140+
getattr(mixed, name)(axis=0)
141+
getattr(mixed, name)(axis=1)
142+
143+
class NonzeroFail(object):
144+
145+
def __nonzero__(self):
146+
raise ValueError
147+
148+
mixed['_nonzero_fail_'] = NonzeroFail()
149+
150+
if has_bool_only:
151+
getattr(mixed, name)(axis=0, bool_only=True)
152+
getattr(mixed, name)(axis=1, bool_only=True)
153+
getattr(frame, name)(axis=0, bool_only=False)
154+
getattr(frame, name)(axis=1, bool_only=False)
155+
156+
# all NA case
157+
if has_skipna:
158+
all_na = frame * np.NaN
159+
r0 = getattr(all_na, name)(axis=0)
160+
r1 = getattr(all_na, name)(axis=1)
161+
if name == 'any':
162+
assert not r0.any()
163+
assert not r1.any()
164+
else:
165+
assert r0.all()
166+
assert r1.all()
167+
168+
28169
class TestDataFrameAnalytics():
29170

30171
# ---------------------------------------------------------------------=
@@ -803,83 +944,6 @@ def alt(x):
803944
assert kurt.name is None
804945
assert kurt2.name == 'bar'
805946

806-
def _check_stat_op(self, name, alternative, main_frame, float_frame,
807-
float_string_frame, has_skipna=True,
808-
has_numeric_only=False, check_dtype=True,
809-
check_dates=False, check_less_precise=False,
810-
skipna_alternative=None):
811-
812-
f = getattr(main_frame, name)
813-
814-
if check_dates:
815-
df = DataFrame({'b': date_range('1/1/2001', periods=2)})
816-
_f = getattr(df, name)
817-
result = _f()
818-
assert isinstance(result, Series)
819-
820-
df['a'] = lrange(len(df))
821-
result = getattr(df, name)()
822-
assert isinstance(result, Series)
823-
assert len(result)
824-
825-
if has_skipna:
826-
def wrapper(x):
827-
return alternative(x.values)
828-
829-
skipna_wrapper = tm._make_skipna_wrapper(alternative,
830-
skipna_alternative)
831-
result0 = f(axis=0, skipna=False)
832-
result1 = f(axis=1, skipna=False)
833-
tm.assert_series_equal(result0, main_frame.apply(wrapper),
834-
check_dtype=check_dtype,
835-
check_less_precise=check_less_precise)
836-
# HACK: win32
837-
tm.assert_series_equal(result1, main_frame.apply(wrapper, axis=1),
838-
check_dtype=False,
839-
check_less_precise=check_less_precise)
840-
else:
841-
skipna_wrapper = alternative
842-
843-
result0 = f(axis=0)
844-
result1 = f(axis=1)
845-
tm.assert_series_equal(result0, main_frame.apply(skipna_wrapper),
846-
check_dtype=check_dtype,
847-
check_less_precise=check_less_precise)
848-
if name in ['sum', 'prod']:
849-
expected = main_frame.apply(skipna_wrapper, axis=1)
850-
tm.assert_series_equal(result1, expected, check_dtype=False,
851-
check_less_precise=check_less_precise)
852-
853-
# check dtypes
854-
if check_dtype:
855-
lcd_dtype = main_frame.values.dtype
856-
assert lcd_dtype == result0.dtype
857-
assert lcd_dtype == result1.dtype
858-
859-
# bad axis
860-
tm.assert_raises_regex(ValueError, 'No axis named 2', f, axis=2)
861-
# make sure works on mixed-type frame
862-
getattr(float_string_frame, name)(axis=0)
863-
getattr(float_string_frame, name)(axis=1)
864-
865-
if has_numeric_only:
866-
getattr(float_string_frame, name)(axis=0, numeric_only=True)
867-
getattr(float_string_frame, name)(axis=1, numeric_only=True)
868-
getattr(float_frame, name)(axis=0, numeric_only=False)
869-
getattr(float_frame, name)(axis=1, numeric_only=False)
870-
871-
# all NA case
872-
if has_skipna:
873-
all_na = float_frame * np.NaN
874-
r0 = getattr(all_na, name)(axis=0)
875-
r1 = getattr(all_na, name)(axis=1)
876-
if name in ['sum', 'prod']:
877-
unit = int(name == 'prod')
878-
expected = pd.Series(unit, index=r0.index, dtype=r0.dtype)
879-
tm.assert_series_equal(r0, expected)
880-
expected = pd.Series(unit, index=r1.index, dtype=r1.dtype)
881-
tm.assert_series_equal(r1, expected)
882-
883947
@pytest.mark.parametrize("dropna, expected", [
884948
(True, {'A': [12],
885949
'B': [10.0],
@@ -1336,68 +1400,6 @@ def test_any_all_level_axis_none_raises(self, method):
13361400
with tm.assert_raises_regex(ValueError, xpr):
13371401
getattr(df, method)(axis=None, level='out')
13381402

1339-
def _check_bool_op(self, name, alternative, frame, float_string_frame,
1340-
has_skipna=True, has_bool_only=False):
1341-
1342-
f = getattr(frame, name)
1343-
1344-
if has_skipna:
1345-
def skipna_wrapper(x):
1346-
nona = x.dropna().values
1347-
return alternative(nona)
1348-
1349-
def wrapper(x):
1350-
return alternative(x.values)
1351-
1352-
result0 = f(axis=0, skipna=False)
1353-
result1 = f(axis=1, skipna=False)
1354-
tm.assert_series_equal(result0, frame.apply(wrapper))
1355-
tm.assert_series_equal(result1, frame.apply(wrapper, axis=1),
1356-
check_dtype=False) # HACK: win32
1357-
else:
1358-
skipna_wrapper = alternative
1359-
wrapper = alternative
1360-
1361-
result0 = f(axis=0)
1362-
result1 = f(axis=1)
1363-
tm.assert_series_equal(result0, frame.apply(skipna_wrapper))
1364-
tm.assert_series_equal(result1, frame.apply(skipna_wrapper, axis=1),
1365-
check_dtype=False)
1366-
1367-
# bad axis
1368-
pytest.raises(ValueError, f, axis=2)
1369-
1370-
# make sure works on mixed-type frame
1371-
mixed = float_string_frame
1372-
mixed['_bool_'] = np.random.randn(len(mixed)) > 0
1373-
getattr(mixed, name)(axis=0)
1374-
getattr(mixed, name)(axis=1)
1375-
1376-
class NonzeroFail(object):
1377-
1378-
def __nonzero__(self):
1379-
raise ValueError
1380-
1381-
mixed['_nonzero_fail_'] = NonzeroFail()
1382-
1383-
if has_bool_only:
1384-
getattr(mixed, name)(axis=0, bool_only=True)
1385-
getattr(mixed, name)(axis=1, bool_only=True)
1386-
getattr(frame, name)(axis=0, bool_only=False)
1387-
getattr(frame, name)(axis=1, bool_only=False)
1388-
1389-
# all NA case
1390-
if has_skipna:
1391-
all_na = frame * np.NaN
1392-
r0 = getattr(all_na, name)(axis=0)
1393-
r1 = getattr(all_na, name)(axis=1)
1394-
if name == 'any':
1395-
assert not r0.any()
1396-
assert not r1.any()
1397-
else:
1398-
assert r0.all()
1399-
assert r1.all()
1400-
14011403
# ----------------------------------------------------------------------
14021404
# Isin
14031405

0 commit comments

Comments
 (0)