|
16 | 16 | )
|
17 | 17 | from pandas.core.interchange.from_dataframe import from_dataframe
|
18 | 18 |
|
19 |
| -test_data_categorical = { |
20 |
| - "ordered": pd.Categorical(list("testdata") * 30, ordered=True), |
21 |
| - "unordered": pd.Categorical(list("testdata") * 30, ordered=False), |
22 |
| -} |
23 | 19 |
|
24 |
| -NCOLS, NROWS = 100, 200 |
25 |
| - |
26 |
| - |
27 |
| -def _make_data(make_one): |
| 20 | +@pytest.fixture |
| 21 | +def data_categorical(): |
28 | 22 | return {
|
29 |
| - f"col{int((i - NCOLS / 2) % NCOLS + 1)}": [make_one() for _ in range(NROWS)] |
30 |
| - for i in range(NCOLS) |
| 23 | + "ordered": pd.Categorical(list("testdata") * 30, ordered=True), |
| 24 | + "unordered": pd.Categorical(list("testdata") * 30, ordered=False), |
31 | 25 | }
|
32 | 26 |
|
33 | 27 |
|
34 |
| -int_data = _make_data(lambda: random.randint(-100, 100)) |
35 |
| -uint_data = _make_data(lambda: random.randint(1, 100)) |
36 |
| -bool_data = _make_data(lambda: random.choice([True, False])) |
37 |
| -float_data = _make_data(lambda: random.random()) |
38 |
| -datetime_data = _make_data( |
39 |
| - lambda: datetime( |
40 |
| - year=random.randint(1900, 2100), |
41 |
| - month=random.randint(1, 12), |
42 |
| - day=random.randint(1, 20), |
43 |
| - ) |
44 |
| -) |
45 |
| - |
46 |
| -string_data = { |
47 |
| - "separator data": [ |
48 |
| - "abC|DeF,Hik", |
49 |
| - "234,3245.67", |
50 |
| - "gSaf,qWer|Gre", |
51 |
| - "asd3,4sad|", |
52 |
| - np.NaN, |
53 |
| - ] |
54 |
| -} |
| 28 | +@pytest.fixture |
| 29 | +def string_data(): |
| 30 | + return { |
| 31 | + "separator data": [ |
| 32 | + "abC|DeF,Hik", |
| 33 | + "234,3245.67", |
| 34 | + "gSaf,qWer|Gre", |
| 35 | + "asd3,4sad|", |
| 36 | + np.NaN, |
| 37 | + ] |
| 38 | + } |
55 | 39 |
|
56 | 40 |
|
57 | 41 | @pytest.mark.parametrize("data", [("ordered", True), ("unordered", False)])
|
58 |
| -def test_categorical_dtype(data): |
59 |
| - df = pd.DataFrame({"A": (test_data_categorical[data[0]])}) |
| 42 | +def test_categorical_dtype(data, data_categorical): |
| 43 | + df = pd.DataFrame({"A": (data_categorical[data[0]])}) |
60 | 44 |
|
61 | 45 | col = df.__dataframe__().get_column_by_name("A")
|
62 | 46 | assert col.dtype[0] == DtypeKind.CATEGORICAL
|
@@ -143,9 +127,25 @@ def test_bitmasks_pyarrow(offset, length, expected_values):
|
143 | 127 |
|
144 | 128 |
|
145 | 129 | @pytest.mark.parametrize(
|
146 |
| - "data", [int_data, uint_data, float_data, bool_data, datetime_data] |
| 130 | + "data", |
| 131 | + [ |
| 132 | + lambda: random.randint(-100, 100), |
| 133 | + lambda: random.randint(1, 100), |
| 134 | + lambda: random.random(), |
| 135 | + lambda: random.choice([True, False]), |
| 136 | + lambda: datetime( |
| 137 | + year=random.randint(1900, 2100), |
| 138 | + month=random.randint(1, 12), |
| 139 | + day=random.randint(1, 20), |
| 140 | + ), |
| 141 | + ], |
147 | 142 | )
|
148 | 143 | def test_dataframe(data):
|
| 144 | + NCOLS, NROWS = 10, 20 |
| 145 | + data = { |
| 146 | + f"col{int((i - NCOLS / 2) % NCOLS + 1)}": [data() for _ in range(NROWS)] |
| 147 | + for i in range(NCOLS) |
| 148 | + } |
149 | 149 | df = pd.DataFrame(data)
|
150 | 150 |
|
151 | 151 | df2 = df.__dataframe__()
|
@@ -227,7 +227,7 @@ def test_mixed_missing():
|
227 | 227 | assert df2.get_column_by_name(col_name).null_count == 2
|
228 | 228 |
|
229 | 229 |
|
230 |
| -def test_string(): |
| 230 | +def test_string(string_data): |
231 | 231 | test_str_data = string_data["separator data"] + [""]
|
232 | 232 | df = pd.DataFrame({"A": test_str_data})
|
233 | 233 | col = df.__dataframe__().get_column_by_name("A")
|
|
0 commit comments