Skip to content

Commit c15ded3

Browse files
authored
REF: collect tests by method (#37233)
1 parent b6aa882 commit c15ded3

File tree

7 files changed

+196
-176
lines changed

7 files changed

+196
-176
lines changed
+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import operator
2+
3+
import numpy as np
4+
import pytest
5+
6+
from pandas import DataFrame, Index, Series
7+
import pandas._testing as tm
8+
9+
10+
class TestMatMul:
11+
def test_matmul(self):
12+
# matmul test is for GH#10259
13+
a = DataFrame(
14+
np.random.randn(3, 4), index=["a", "b", "c"], columns=["p", "q", "r", "s"]
15+
)
16+
b = DataFrame(
17+
np.random.randn(4, 2), index=["p", "q", "r", "s"], columns=["one", "two"]
18+
)
19+
20+
# DataFrame @ DataFrame
21+
result = operator.matmul(a, b)
22+
expected = DataFrame(
23+
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
24+
)
25+
tm.assert_frame_equal(result, expected)
26+
27+
# DataFrame @ Series
28+
result = operator.matmul(a, b.one)
29+
expected = Series(np.dot(a.values, b.one.values), index=["a", "b", "c"])
30+
tm.assert_series_equal(result, expected)
31+
32+
# np.array @ DataFrame
33+
result = operator.matmul(a.values, b)
34+
assert isinstance(result, DataFrame)
35+
assert result.columns.equals(b.columns)
36+
assert result.index.equals(Index(range(3)))
37+
expected = np.dot(a.values, b.values)
38+
tm.assert_almost_equal(result.values, expected)
39+
40+
# nested list @ DataFrame (__rmatmul__)
41+
result = operator.matmul(a.values.tolist(), b)
42+
expected = DataFrame(
43+
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
44+
)
45+
tm.assert_almost_equal(result.values, expected.values)
46+
47+
# mixed dtype DataFrame @ DataFrame
48+
a["q"] = a.q.round().astype(int)
49+
result = operator.matmul(a, b)
50+
expected = DataFrame(
51+
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
52+
)
53+
tm.assert_frame_equal(result, expected)
54+
55+
# different dtypes DataFrame @ DataFrame
56+
a = a.astype(int)
57+
result = operator.matmul(a, b)
58+
expected = DataFrame(
59+
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
60+
)
61+
tm.assert_frame_equal(result, expected)
62+
63+
# unaligned
64+
df = DataFrame(np.random.randn(3, 4), index=[1, 2, 3], columns=range(4))
65+
df2 = DataFrame(np.random.randn(5, 3), index=range(5), columns=[1, 2, 3])
66+
67+
with pytest.raises(ValueError, match="aligned"):
68+
operator.matmul(df, df2)
69+
70+
def test_matmul_message_shapes(self):
71+
# GH#21581 exception message should reflect original shapes,
72+
# not transposed shapes
73+
a = np.random.rand(10, 4)
74+
b = np.random.rand(5, 3)
75+
76+
df = DataFrame(b)
77+
78+
msg = r"shapes \(10, 4\) and \(5, 3\) not aligned"
79+
with pytest.raises(ValueError, match=msg):
80+
a @ df
81+
with pytest.raises(ValueError, match=msg):
82+
a.tolist() @ df

pandas/tests/frame/test_analytics.py

-77
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from datetime import timedelta
22
from decimal import Decimal
3-
import operator
43

54
import numpy as np
65
import pytest
@@ -1115,82 +1114,6 @@ def test_any_all_level_axis_none_raises(self, method):
11151114
with pytest.raises(ValueError, match=xpr):
11161115
getattr(df, method)(axis=None, level="out")
11171116

1118-
# ---------------------------------------------------------------------
1119-
# Matrix-like
1120-
1121-
def test_matmul(self):
1122-
# matmul test is for GH 10259
1123-
a = DataFrame(
1124-
np.random.randn(3, 4), index=["a", "b", "c"], columns=["p", "q", "r", "s"]
1125-
)
1126-
b = DataFrame(
1127-
np.random.randn(4, 2), index=["p", "q", "r", "s"], columns=["one", "two"]
1128-
)
1129-
1130-
# DataFrame @ DataFrame
1131-
result = operator.matmul(a, b)
1132-
expected = DataFrame(
1133-
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
1134-
)
1135-
tm.assert_frame_equal(result, expected)
1136-
1137-
# DataFrame @ Series
1138-
result = operator.matmul(a, b.one)
1139-
expected = Series(np.dot(a.values, b.one.values), index=["a", "b", "c"])
1140-
tm.assert_series_equal(result, expected)
1141-
1142-
# np.array @ DataFrame
1143-
result = operator.matmul(a.values, b)
1144-
assert isinstance(result, DataFrame)
1145-
assert result.columns.equals(b.columns)
1146-
assert result.index.equals(pd.Index(range(3)))
1147-
expected = np.dot(a.values, b.values)
1148-
tm.assert_almost_equal(result.values, expected)
1149-
1150-
# nested list @ DataFrame (__rmatmul__)
1151-
result = operator.matmul(a.values.tolist(), b)
1152-
expected = DataFrame(
1153-
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
1154-
)
1155-
tm.assert_almost_equal(result.values, expected.values)
1156-
1157-
# mixed dtype DataFrame @ DataFrame
1158-
a["q"] = a.q.round().astype(int)
1159-
result = operator.matmul(a, b)
1160-
expected = DataFrame(
1161-
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
1162-
)
1163-
tm.assert_frame_equal(result, expected)
1164-
1165-
# different dtypes DataFrame @ DataFrame
1166-
a = a.astype(int)
1167-
result = operator.matmul(a, b)
1168-
expected = DataFrame(
1169-
np.dot(a.values, b.values), index=["a", "b", "c"], columns=["one", "two"]
1170-
)
1171-
tm.assert_frame_equal(result, expected)
1172-
1173-
# unaligned
1174-
df = DataFrame(np.random.randn(3, 4), index=[1, 2, 3], columns=range(4))
1175-
df2 = DataFrame(np.random.randn(5, 3), index=range(5), columns=[1, 2, 3])
1176-
1177-
with pytest.raises(ValueError, match="aligned"):
1178-
operator.matmul(df, df2)
1179-
1180-
def test_matmul_message_shapes(self):
1181-
# GH#21581 exception message should reflect original shapes,
1182-
# not transposed shapes
1183-
a = np.random.rand(10, 4)
1184-
b = np.random.rand(5, 3)
1185-
1186-
df = DataFrame(b)
1187-
1188-
msg = r"shapes \(10, 4\) and \(5, 3\) not aligned"
1189-
with pytest.raises(ValueError, match=msg):
1190-
a @ df
1191-
with pytest.raises(ValueError, match=msg):
1192-
a.tolist() @ df
1193-
11941117
# ---------------------------------------------------------------------
11951118
# Unsorted
11961119

pandas/tests/frame/test_period.py

-7
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,3 @@ def test_frame_setitem(self):
3131
rs = df.reset_index().set_index("index")
3232
assert isinstance(rs.index, PeriodIndex)
3333
tm.assert_index_equal(rs.index, rng)
34-
35-
def test_frame_index_to_string(self):
36-
index = PeriodIndex(["2011-1", "2011-2", "2011-3"], freq="M")
37-
frame = DataFrame(np.random.randn(3, 4), index=index)
38-
39-
# it works!
40-
frame.to_string()

pandas/tests/frame/test_repr_info.py

+8
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from pandas import (
99
Categorical,
1010
DataFrame,
11+
PeriodIndex,
1112
Series,
1213
date_range,
1314
option_context,
@@ -218,3 +219,10 @@ def test_frame_datetime64_pre1900_repr(self):
218219
df = DataFrame({"year": date_range("1/1/1700", periods=50, freq="A-DEC")})
219220
# it works!
220221
repr(df)
222+
223+
def test_frame_to_string_with_periodindex(self):
224+
index = PeriodIndex(["2011-1", "2011-2", "2011-3"], freq="M")
225+
frame = DataFrame(np.random.randn(3, 4), index=index)
226+
227+
# it works!
228+
frame.to_string()
+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import operator
2+
3+
import numpy as np
4+
import pytest
5+
6+
from pandas import DataFrame, Series
7+
import pandas._testing as tm
8+
9+
10+
class TestMatmul:
11+
def test_matmul(self):
12+
# matmul test is for GH#10259
13+
a = Series(np.random.randn(4), index=["p", "q", "r", "s"])
14+
b = DataFrame(
15+
np.random.randn(3, 4), index=["1", "2", "3"], columns=["p", "q", "r", "s"]
16+
).T
17+
18+
# Series @ DataFrame -> Series
19+
result = operator.matmul(a, b)
20+
expected = Series(np.dot(a.values, b.values), index=["1", "2", "3"])
21+
tm.assert_series_equal(result, expected)
22+
23+
# DataFrame @ Series -> Series
24+
result = operator.matmul(b.T, a)
25+
expected = Series(np.dot(b.T.values, a.T.values), index=["1", "2", "3"])
26+
tm.assert_series_equal(result, expected)
27+
28+
# Series @ Series -> scalar
29+
result = operator.matmul(a, a)
30+
expected = np.dot(a.values, a.values)
31+
tm.assert_almost_equal(result, expected)
32+
33+
# GH#21530
34+
# vector (1D np.array) @ Series (__rmatmul__)
35+
result = operator.matmul(a.values, a)
36+
expected = np.dot(a.values, a.values)
37+
tm.assert_almost_equal(result, expected)
38+
39+
# GH#21530
40+
# vector (1D list) @ Series (__rmatmul__)
41+
result = operator.matmul(a.values.tolist(), a)
42+
expected = np.dot(a.values, a.values)
43+
tm.assert_almost_equal(result, expected)
44+
45+
# GH#21530
46+
# matrix (2D np.array) @ Series (__rmatmul__)
47+
result = operator.matmul(b.T.values, a)
48+
expected = np.dot(b.T.values, a.values)
49+
tm.assert_almost_equal(result, expected)
50+
51+
# GH#21530
52+
# matrix (2D nested lists) @ Series (__rmatmul__)
53+
result = operator.matmul(b.T.values.tolist(), a)
54+
expected = np.dot(b.T.values, a.values)
55+
tm.assert_almost_equal(result, expected)
56+
57+
# mixed dtype DataFrame @ Series
58+
a["p"] = int(a.p)
59+
result = operator.matmul(b.T, a)
60+
expected = Series(np.dot(b.T.values, a.T.values), index=["1", "2", "3"])
61+
tm.assert_series_equal(result, expected)
62+
63+
# different dtypes DataFrame @ Series
64+
a = a.astype(int)
65+
result = operator.matmul(b.T, a)
66+
expected = Series(np.dot(b.T.values, a.T.values), index=["1", "2", "3"])
67+
tm.assert_series_equal(result, expected)
68+
69+
msg = r"Dot product shape mismatch, \(4,\) vs \(3,\)"
70+
# exception raised is of type Exception
71+
with pytest.raises(Exception, match=msg):
72+
a.dot(a.values[:3])
73+
msg = "matrices are not aligned"
74+
with pytest.raises(ValueError, match=msg):
75+
a.dot(b.T)
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import numpy as np
2+
import pytest
3+
4+
from pandas import Series
5+
import pandas._testing as tm
6+
7+
8+
class TestRepeat:
9+
def test_repeat(self):
10+
ser = Series(np.random.randn(3), index=["a", "b", "c"])
11+
12+
reps = ser.repeat(5)
13+
exp = Series(ser.values.repeat(5), index=ser.index.values.repeat(5))
14+
tm.assert_series_equal(reps, exp)
15+
16+
to_rep = [2, 3, 4]
17+
reps = ser.repeat(to_rep)
18+
exp = Series(ser.values.repeat(to_rep), index=ser.index.values.repeat(to_rep))
19+
tm.assert_series_equal(reps, exp)
20+
21+
def test_numpy_repeat(self):
22+
ser = Series(np.arange(3), name="x")
23+
expected = Series(
24+
ser.values.repeat(2), name="x", index=ser.index.values.repeat(2)
25+
)
26+
tm.assert_series_equal(np.repeat(ser, 2), expected)
27+
28+
msg = "the 'axis' parameter is not supported"
29+
with pytest.raises(ValueError, match=msg):
30+
np.repeat(ser, 2, axis=0)

0 commit comments

Comments
 (0)