class_docstr: Calculate the `median absolute deviation <https://en.wikipedia.org/wiki/Median_absolute_deviation>`_
  of a column.
  
  :param column_name:
      The name of a column containing :class:`.Number` data.
class_docstr_tok: ["Calculate","the","`","median","absolute","deviation","<","https",":","\/\/en.wikipedia.org\/wiki\/Median_absolute_deviation",">","`","_","of","a","column",".",":","param","column_name",":","The","name","of","a","column","containing",":","class",":","`",".Number","`","data","."]
code: def run(self, table):
      column = table.columns[self._column_name]
  
      data = column.values_without_nulls_sorted()
      if data:
          m = self._median.run(table)
          return median(tuple(abs(n - m) for n in data))
  
file_path: agate/agate/aggregations/mad.py
imports: from agate.aggregations.base import Aggregation
  from agate.aggregations.has_nulls import HasNulls
  from agate.aggregations.median import Median
  from agate.data_types import Number
  from agate.exceptions import DataTypeError
  from agate.utils import median
  from agate.warns import warn_null_calculation
label_desc: Use image node_id 4 for calling the MAD obj's underlying member method code with example usage: obj.run(table) and returns: median