code: def nanvar(values, axis=None, skipna=True, ddof=1, mask=None):
      """
      Compute the variance along given axis while ignoring NaNs
  
      Parameters
      ----------
      values : ndarray
      axis: int, optional
      skipna : bool, default True
      ddof : int, default 1
          Delta Degrees of Freedom. The divisor used in calculations is N - ddof,
          where N represents the number of elements.
      mask : ndarray[bool], optional
          nan-mask if known
  
      Returns
      -------
      result : float
          Unless input is a float array, in which case use the same
          precision as the input array.
  
      Examples
      --------
      >>> import pandas.core.nanops as nanops
      >>> s = pd.Series([1, np.nan, 2, 3])
      >>> nanops.nanvar(s)
      1.0
      """
      values = com.values_from_object(values)
      dtype = values.dtype
      if mask is None:
          mask = isna(values)
      if is_any_int_dtype(values):
          values = values.astype("f8")
          values[mask] = np.nan
  
      if is_float_dtype(values):
          count, d = _get_counts_nanvar(mask, axis, ddof, values.dtype)
      else:
          count, d = _get_counts_nanvar(mask, axis, ddof)
  
      if skipna:
          values = values.copy()
          np.putmask(values, mask, 0)
  
      # xref GH10242
      # Compute variance via two-pass algorithm, which is stable against
      # cancellation errors and relatively accurate for small numbers of
      # observations.
      #
      # See https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance
      avg = (
          _ensure_numeric(values.sum(axis=axis, dtype=np.float64))
          / count
      )
      if axis is not None:
          avg = np.expand_dims(avg, axis)
      sqr = _ensure_numeric((avg - values) ** 2)
      np.putmask(sqr, mask, 0)
      result = sqr.sum(axis=axis, dtype=np.float64) / d
  
      # Return variance as np.float64 (the datatype used in the accumulator),
      # unless we were dealing with a float array, in which case use the same
      # precision as the original values array.
      if is_float_dtype(dtype):
          result = result.astype(dtype)
      return _wrap_results(result, values.dtype)
  
imports: from distutils.version import LooseVersion
  import functools
  import itertools
  import operator
  import warnings
  import numpy
  from pandas._libs import iNaT, lib, tslibs
  import pandas.compat
  from pandas.core.dtypes.cast import _int64_max, maybe_upcast_putmask
  from pandas.core.dtypes.common import _get_dtype, is_any_int_dtype, is_bool_dtype, is_complex, is_complex_dtype, is_datetime64_dtype, is_datetime64tz_dtype, is_datetime_or_timedelta_dtype, is_float, is_float_dtype, is_integer, is_integer_dtype, is_numeric_dtype, is_object_dtype, is_scalar, is_timedelta64_dtype, pandas_dtype
  from pandas.core.dtypes.dtypes import DatetimeTZDtype
  from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna
  import pandas.core.common
  from pandas.core.config import get_option
label_desc: Use image node_id 17 for calling a global function with example usage: nanvar(values, axis, skipna, ddof, mask) and returns: _wrap_results