class_docstr: Calculate the percent difference between two columns.
  
  :param before_column_name:
      The name of a column containing the "before" :class:`.Number` values.
  :param after_column_name:
      The name of a column containing the "after" :class:`.Number` values.
class_docstr_tok: ["Calculate","the","percent","difference","between","two","columns",".",":","param","before_column_name",":","The","name","of","a","column","containing","the","``","before","''",":","class",":","`",".Number","`","values",".",":","param","after_column_name",":","The","name","of","a","column","containing","the","``","after","''",":","class",":","`",".Number","`","values","."]
docstr: :returns:
      :class:`decimal.Decimal`
docstr_tok: [":","returns",":",":","class",":","`","decimal.Decimal","`"]
code: def run(self, table):
      """
      :returns:
          :class:`decimal.Decimal`
      """
      new_column = []
  
      for row in table.rows:
          before = row[self._before_column_name]
          after = row[self._after_column_name]
  
          if before is not None and after is not None:
              new_column.append((after - before) / before * 100)
          else:
              new_column.append(None)
  
      return new_column
  
file_path: agate/agate/computations/percent_change.py
imports: from agate.aggregations.has_nulls import HasNulls
  from agate.computations.base import Computation
  from agate.data_types import Number
  from agate.exceptions import DataTypeError
  from agate.warns import warn_null_calculation
label_desc: Use image node_id 4 for calling the PercentChange obj's underlying member method code with example usage: obj.run(table) and returns: new_column