code: def test_use_arrow_dtype_nunique(setup, check_ref_counts):
      with option_context(
          {"dataframe.use_arrow_dtype": True, "combine_size": 2}
      ):
          rs = np.random.RandomState(0)
          data1 = pd.DataFrame(
              {
                  "a": rs.random(10),
                  "b": [f"s{i}" for i in rs.randint(100, size=10)],
              }
          )
          data1["c"] = data1["b"].copy()
          data1["d"] = data1["b"].copy()
          data1["e"] = data1["b"].copy()
  
          df = md.DataFrame(data1, chunk_size=(3, 2))
          r = df.nunique(axis=0)
          result = r.execute().fetch()
          expected = data1.nunique(axis=0)
          pd.testing.assert_series_equal(result, expected)
  
          r = df.nunique(axis=1)
          result = r.execute().fetch()
          expected = data1.nunique(axis=1)
          pd.testing.assert_series_equal(result, expected)
  
imports: from typing import NamedTuple
  import numpy
  import pytest
  import pandas
  from ....None import dataframe
  from ....config import option_context
  from ....session import get_default_session
  from ....tests.core import require_cudf, require_cupy
  from ....utils import lazy_import, pd_release_version
  from ...None import CustomReduction, NamedAgg
  from ...base import to_gpu
label_desc: Use image node_id 14 for calling a global function with example usage: test_use_arrow_dtype_nunique(setup, check_ref_counts) without return types