Skip to content

Commit 9c2ba7a

Browse files
authored
Remove pandas dependency (#5633)
* CLN Removes pandas import from tests * FIX Adds importorskip to test_data_container * MAINT Removes pandas dependency
1 parent 7aa520c commit 9c2ba7a

File tree

6 files changed

+19
-11
lines changed

6 files changed

+19
-11
lines changed

pymc/tests/test_aesaraf.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import numpy as np
2020
import numpy.ma as ma
2121
import numpy.testing as npt
22-
import pandas as pd
2322
import pytest
2423
import scipy.sparse as sps
2524

@@ -387,6 +386,7 @@ def test_pandas_to_array(input_dtype):
387386
Ensure that pandas_to_array returns the dense array, masked array,
388387
graph variable, TensorVariable, or sparse matrix as appropriate.
389388
"""
389+
pd = pytest.importorskip("pandas")
390390
# Create the various inputs to the function
391391
sparse_input = sps.csr_matrix(np.eye(3)).astype(input_dtype)
392392
dense_input = np.arange(9).reshape((3, 3)).astype(input_dtype)
@@ -462,6 +462,7 @@ def test_pandas_to_array(input_dtype):
462462

463463

464464
def test_pandas_to_array_pandas_index():
465+
pd = pytest.importorskip("pandas")
465466
data = pd.Index([1, 2, 3])
466467
result = pandas_to_array(data)
467468
expected = np.array([1, 2, 3])

pymc/tests/test_data_container.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import io
1616

1717
import numpy as np
18-
import pandas as pd
1918
import pytest
2019

2120
from aesara import shared
@@ -338,6 +337,7 @@ def test_no_resize_of_implied_dimensions(self):
338337
pmodel.set_data("inhabitants", [1, 2, 3, 4])
339338

340339
def test_implicit_coords_series(self):
340+
pd = pytest.importorskip("pandas")
341341
ser_sales = pd.Series(
342342
data=np.random.randint(low=0, high=30, size=22),
343343
index=pd.date_range(start="2020-05-01", periods=22, freq="24H", name="date"),
@@ -351,6 +351,7 @@ def test_implicit_coords_series(self):
351351
assert pmodel.RV_dims == {"sales": ("date",)}
352352

353353
def test_implicit_coords_dataframe(self):
354+
pd = pytest.importorskip("pandas")
354355
N_rows = 5
355356
N_cols = 7
356357
df_data = pd.DataFrame()

pymc/tests/test_idata_conversion.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import aesara.tensor as at
66
import numpy as np
7-
import pandas as pd
87
import pytest
98

109
from aesara.tensor.subtensor import AdvancedIncSubtensor, AdvancedIncSubtensor1
@@ -240,6 +239,7 @@ def test_posterior_predictive_thinned(self, data):
240239

241240
@pytest.mark.parametrize("use_context", [True, False])
242241
def test_autodetect_coords_from_model(self, use_context):
242+
pd = pytest.importorskip("pandas")
243243
df_data = pd.DataFrame(columns=["date"]).set_index("date")
244244
dates = pd.date_range(start="2020-05-01", end="2020-05-20")
245245
for city, mu in {"Berlin": 15, "San Marino": 18, "Paris": 16}.items():
@@ -573,6 +573,7 @@ def test_constant_data_coords_issue_5046(self):
573573
np.testing.assert_array_equal(ds[dname].values, cvals)
574574

575575
def test_issue_5043_autoconvert_coord_values(self):
576+
pd = pytest.importorskip("pandas")
576577
coords = {"city": pd.Series(["Bonn", "Berlin"])}
577578
with pm.Model(coords=coords) as pmodel:
578579
# The model tracks coord values as (immutable) tuples

pymc/tests/test_missing.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import aesara
1616
import numpy as np
17-
import pandas as pd
1817
import pytest
1918
import scipy.stats
2019

@@ -28,15 +27,22 @@
2827
from pymc.sampling import sample, sample_posterior_predictive, sample_prior_predictive
2928

3029

31-
@pytest.mark.parametrize(
32-
"data", [ma.masked_values([1, 2, -1, 4, -1], value=-1), pd.DataFrame([1, 2, np.nan, 4, np.nan])]
33-
)
34-
def test_missing(data):
30+
@pytest.fixture(params=["masked", "pandas"])
31+
def missing_data(request):
32+
if request.param == "masked":
33+
return ma.masked_values([1, 2, -1, 4, -1], value=-1)
34+
else:
35+
# request.param == "pandas"
36+
pd = pytest.importorskip("pandas")
37+
return pd.DataFrame([1, 2, np.nan, 4, np.nan])
38+
39+
40+
def test_missing(missing_data):
3541

3642
with Model() as model:
3743
x = Normal("x", 1, 1)
3844
with pytest.warns(ImputationWarning):
39-
_ = Normal("y", x, 1, observed=data)
45+
_ = Normal("y", x, 1, observed=missing_data)
4046

4147
assert "y_missing" in model.named_vars
4248

pymc/tests/test_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import numpy as np
2323
import numpy.ma as ma
2424
import numpy.testing as npt
25-
import pandas as pd
2625
import pytest
2726
import scipy.sparse as sps
2827
import scipy.stats as st
@@ -216,6 +215,7 @@ def test_duplicate_vars():
216215

217216

218217
def test_empty_observed():
218+
pd = pytest.importorskip("pandas")
219219
data = pd.DataFrame(np.ones((2, 3)) / 3)
220220
data.values[:] = np.nan
221221
with pm.Model():

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ cachetools>=4.2.1
55
cloudpickle
66
fastprogress>=0.2.0
77
numpy>=1.15.0
8-
pandas>=0.24.0
98
scipy>=1.4.1
109
typing-extensions>=3.7.4

0 commit comments

Comments
 (0)