code: def test_implicit_coords_dataframe(self, seeded_test):
      pd = pytest.importorskip("pandas")
      N_rows = 5
      N_cols = 7
      df_data = pd.DataFrame()
      for c in range(N_cols):
          df_data[f"Column {c+1}"] = np.random.normal(size=(N_rows,))
      df_data.index.name = "rows"
      df_data.columns.name = "columns"
  
      # infer coordinates from index and columns of the DataFrame
      with pm.Model() as pmodel:
          pm.ConstantData(
              "observations",
              df_data,
              dims=("rows", "columns"),
              export_index_as_coords=True,
          )
  
      assert "rows" in pmodel.coords
      assert "columns" in pmodel.coords
      assert pmodel.named_vars_to_dims == {
          "observations": ("rows", "columns")
      }
  
imports: import io
  import itertools
  import re
  import cloudpickle
  import numpy
  import pytensor
  import pytensor.tensor
  import pytest
  from pytensor import shared
  from pytensor.tensor.variable import TensorVariable
  import pymc
  from pymc.data import is_minibatch
  from pymc.pytensorf import GeneratorOp, floatX
label_desc: Use image node_id 16 for calling the TestData obj's underlying member method code with example usage: obj.test_implicit_coords_dataframe(seeded_test) without return types