code: def value_counts(self, dropna=True):
          
  
          from pandas import Index, Series
  
          # compute counts on the data with no nans
          data = self._data[~self._mask]
          value_counts = Index(data).value_counts()
          array = value_counts.values
  
          # TODO(extension)
          # if we have allow Index to hold an ExtensionArray
          # this is easier
          index = value_counts.index.astype(object)
  
          # if we want nans, count the mask
          if not dropna:
  
              # TODO(extension)
              # appending to an Index *always* infers
              # w/o passing the dtype
              array = np.append(array, [self._mask.sum()])
              index = Index(np.concatenate(
                  [index.values,
                   np.array([np.nan], dtype=object)]), dtype=object)
  
          return Series(array, index=index)
docs: Returns a Series containing counts of each category.
  
          Every category will have an entry, even those with a count of 0.
  
          Parameters
          ----------
          dropna : boolean, default True
              Don't include counts of NaN.
  
          Returns
          -------
          counts : Series
  
          See Also
          --------
          Series.value_counts