code: def test_int64_overflow_groupby_large_df_shuffled(self, agg):
      rs = np.random.default_rng(2)
      arr = rs.integers(-1 << 12, 1 << 12, (1 << 15, 5))
      i = rs.choice(len(arr), len(arr) * 4)
      arr = np.vstack((arr, arr[i]))  # add some duplicate rows
  
      i = rs.permutation(len(arr))
      arr = arr[i]  # shuffle rows
  
      df = DataFrame(arr, columns=list("abcde"))
      df["jim"], df["joe"] = np.zeros((2, len(df)))
      gr = df.groupby(list("abcde"))
  
      # verify this is testing what it is supposed to test!
      assert is_int64_overflow_possible(gr._grouper.shape)
  
      mi = MultiIndex.from_arrays(
          [
              ar.ravel()
              for ar in np.array_split(
                  np.unique(arr, axis=0), 5, axis=1
              )
          ],
          names=list("abcde"),
      )
  
      res = DataFrame(
          np.zeros((len(mi), 2)), columns=["jim", "joe"], index=mi
      ).sort_index()
  
      tm.assert_frame_equal(getattr(gr, agg)(), res)
  
imports: from collections import defaultdict
  from datetime import datetime
  from itertools import product
  import numpy
  import pytest
  from pandas import NA, DataFrame, MultiIndex, Series, array, concat, merge
  import pandas._testing
  from pandas.core.algorithms import safe_sort
  import pandas.core.common
  from pandas.core.sorting import _decons_group_index, get_group_index, is_int64_overflow_possible, lexsort_indexer, nargsort
label_desc: Use image node_id 3 for calling the TestSorting obj's underlying member method code with example usage: obj.test_int64_overflow_groupby_large_df_shuffled(agg) without return types