code: def isna(obj):
      """
      Detect missing values for an array-like object.
  
      This function takes a scalar or array-like object and indicates
      whether values are missing (``NaN`` in numeric arrays, ``None`` or ``NaN``
      in object arrays).
  
      Parameters
      ----------
      obj : scalar or array-like
          Object to check for null or missing values.
  
      Returns
      -------
      bool or array-like of bool
          For scalar input, returns a scalar boolean.
          For array input, returns an array of boolean indicating whether each
          corresponding element is missing.
  
      See Also
      --------
      Series.isna : Detect missing values in a Series.
      Series.isnull : Detect missing values in a Series.
      DataFrame.isna : Detect missing values in a DataFrame.
      DataFrame.isnull : Detect missing values in a DataFrame.
      Index.isna : Detect missing values in an Index.
      Index.isnull : Detect missing values in an Index.
  
      Examples
      --------
      Scalar arguments (including strings) result in a scalar boolean.
  
      >>> ps.isna('dog')
      False
  
      >>> ps.isna(np.nan)
      True
  
      ndarrays result in an ndarray of booleans.
  
      >>> array = np.array([[1, np.nan, 3], [4, 5, np.nan]])
      >>> array
      array([[ 1., nan,  3.],
             [ 4.,  5., nan]])
      >>> ps.isna(array)
      array([[False,  True, False],
             [False, False,  True]])
  
      For Series and DataFrame, the same type is returned, containing booleans.
  
      >>> df = ps.DataFrame({'a': ['ant', 'bee', 'cat'], 'b': ['dog', None, 'fly']})
      >>> df
           a     b
      0  ant   dog
      1  bee  None
      2  cat   fly
  
      >>> ps.isna(df)
             a      b
      0  False  False
      1  False   True
      2  False  False
  
      >>> ps.isnull(df.b)
      0    False
      1     True
      2    False
      Name: b, dtype: bool
      """
      # TODO: Add back:
      #     notnull : Boolean inverse of pandas.isnull.
      #   into the See Also in the docstring. It does not find the method in the latest numpydoc.
      if isinstance(obj, (DataFrame, Series)):
          return obj.isnull()
      else:
          return pd.isnull(obj)
  
imports: from typing import Any, Callable, Dict, List, Optional, Set, Sized, Tuple, Type, Union, cast, no_type_check
  from collections.abc import Iterable
  from datetime import tzinfo
  from functools import reduce
  from io import BytesIO
  import json
  import warnings
  import numpy
  import pandas
  from pandas.api.types import is_datetime64_dtype, is_list_like
  from pandas.tseries.offsets import DateOffset
  import pyarrow
  import pyarrow.parquet
  from pyspark.sql import functions, Column
  from pyspark.sql.functions import pandas_udf
  from pyspark.sql.types import ByteType, ShortType, IntegerType, LongType, FloatType, DoubleType, BooleanType, TimestampType, TimestampNTZType, DecimalType, StringType, DateType, StructType, DataType
  from pyspark.sql.dataframe import DataFrame
  from pyspark import pandas
  from pyspark.pandas._typing import Axis, Dtype, Label, Name
  from pyspark.pandas.base import IndexOpsMixin
  from pyspark.pandas.utils import align_diff_frames, default_session, is_name_like_tuple, is_name_like_value, name_like_string, same_anchor, scol_for, validate_axis, log_advice
  from pyspark.pandas.frame import DataFrame, _reduce_spark_multi
  from pyspark.pandas.internal import InternalFrame, DEFAULT_SERIES_NAME, HIDDEN_COLUMNS, SPARK_INDEX_NAME_FORMAT
  from pyspark.pandas.series import Series, first_series
  from pyspark.pandas.spark.utils import as_nullable_spark_type, force_decimal_precision_scale
  from pyspark.pandas.indexes import Index, DatetimeIndex, TimedeltaIndex
  from pyspark.pandas.indexes.multi import MultiIndex
  from pyspark.sql.utils import get_column_class
label_desc: Use image node_id 22 for calling a global function with example usage: isna(obj) and returns: obj, pd