code: def rank(
      values,
      axis=0,
      method="average",
      na_option="keep",
      ascending=True,
      pct=False,
  ):
      """
      Rank the values along a given axis.
  
      Parameters
      ----------
      values : array-like
          Array whose values will be ranked. The number of dimensions in this
          array must not exceed 2.
      axis : int, default 0
          Axis over which to perform rankings.
      method : {'average', 'min', 'max', 'first', 'dense'}, default 'average'
          The method by which tiebreaks are broken during the ranking.
      na_option : {'keep', 'top'}, default 'keep'
          The method by which NaNs are placed in the ranking.
          - ``keep``: rank each NaN value with a NaN ranking
          - ``top``: replace each NaN with either +/- inf so that they
                     there are ranked at the top
      ascending : boolean, default True
          Whether or not the elements should be ranked in ascending order.
      pct : boolean, default False
          Whether or not to the display the returned rankings in integer form
          (e.g. 1, 2, 3) or in percentile form (e.g. 0.333..., 0.666..., 1).
      """
      if values.ndim == 1:
          f, values = _get_data_algo(values, _rank1d_functions)
          ranks = f(
              values,
              ties_method=method,
              ascending=ascending,
              na_option=na_option,
              pct=pct,
          )
      elif values.ndim == 2:
          f, values = _get_data_algo(values, _rank2d_functions)
          ranks = f(
              values,
              axis=axis,
              ties_method=method,
              ascending=ascending,
              na_option=na_option,
              pct=pct,
          )
      else:
          raise TypeError("Array with ndim > 2 are not supported.")
  
      return ranks
  
imports: from __future__ import division
  from textwrap import dedent
  from warnings import catch_warnings, simplefilter, warn
  import numpy
  from pandas._libs import algos, hashtable, lib
  from pandas._libs.tslib import iNaT
  from pandas.util._decorators import Appender, Substitution, deprecate_kwarg
  from pandas.core.dtypes.cast import construct_1d_object_array_from_listlike, maybe_promote
  from pandas.core.dtypes.common import ensure_float64, ensure_int64, ensure_object, ensure_platform_int, ensure_uint64, is_array_like, is_bool_dtype, is_categorical_dtype, is_complex_dtype, is_datetime64_any_dtype, is_datetime64tz_dtype, is_datetimelike, is_extension_array_dtype, is_float_dtype, is_integer_dtype, is_interval_dtype, is_list_like, is_numeric_dtype, is_object_dtype, is_period_dtype, is_scalar, is_signed_integer_dtype, is_sparse, is_timedelta64_dtype, is_unsigned_integer_dtype, needs_i8_conversion
  from pandas.core.dtypes.generic import ABCIndex, ABCIndexClass, ABCSeries
  from pandas.core.dtypes.missing import isna, na_value_for_dtype
  from pandas.core import common
label_desc: Use image node_id 15 for calling a global function with example usage: rank(values, axis, method, na_option, ascending, pct) and returns: ranks