code: def zscore(self, mask=NotSpecified, groupby=NotSpecified):
          
          return GroupedRowTransform(
              transform=zscore,
              transform_args=(),
              factor=self,
              groupby=groupby,
              dtype=self.dtype,
              missing_value=self.missing_value,
              mask=mask,
              window_safe=True,
          )
docs: Construct a Factor that Z-Scores each day's results.
  
          The Z-Score of a row is defined as::
  
              (row - row.mean()) / row.stddev()
  
          If ``mask`` is supplied, ignore values where ``mask`` returns False
          when computing row means and standard deviations, and output NaN
          anywhere the mask is False.
  
          If ``groupby`` is supplied, compute by partitioning each row based on
          the values produced by ``groupby``, z-scoring the partitioned arrays,
          and stitching the sub-results back together.
  
          Parameters
          ----------
          mask : zipline.pipeline.Filter, optional
              A Filter defining values to ignore when Z-Scoring.
          groupby : zipline.pipeline.Classifier, optional
              A classifier defining partitions over which to compute Z-Scores.
  
          Returns
          -------
          zscored : zipline.pipeline.Factor
              A Factor producing that z-scores the output of self.
  
          Notes
          -----
          Mean and standard deviation are sensitive to the magnitudes of
          outliers. When working with factor that can potentially produce large
          outliers, it is often useful to use the ``mask`` parameter to discard
          values at the extremes of the distribution::
  
              >>> base = MyFactor(...)  # doctest: +SKIP
              >>> normalized = base.zscore(
              ...    mask=base.percentile_between(1, 99),
              ... )  # doctest: +SKIP
  
          ``zscore()`` is only supported on Factors of dtype float64.
  
          Examples
          --------
          See :meth:`~zipline.pipeline.factors.Factor.demean` for an in-depth
          example of the semantics for ``mask`` and ``groupby``.
  
          See Also
          --------
          :meth:`pandas.DataFrame.groupby`